TradeGecko Launches Major Update to its B2B eCommerce Platform

As originally shared on the MarketWired, found here.

TradeGecko... unveils a feature set designed to bring a new level of customization to its B2B eCommerce platform, a private online store where wholesale businesses can invite their customers to buy from them online 24/7.
“It’s Shopify for wholesale. Whether you’re a consumer brand or an offline wholesaler, you can have an online B2B eCommerce store in a few clicks and customize it however you want,” said Cameron Priest, CEO of TradeGecko. “This means your B2B customers get private, branded access to your inventory and can place orders anytime at whatever cost you set for them.”
Estimated to hit $780 billion this year, U.S. business-to-business eCommerce sales are projected to reach $1.1 trillion by 2020, more than doubling the size of its B2C eCommerce counterpart[1]. Not only is online B2B getting bigger, it’s also growing in market share and is forecasted to represent 12.1% of the total B2B market by 2020, up from 8.5% in 2014[2]. Further enabling its customers to tap into this massive digital trend, TradeGecko’s latest update to its B2B eCommerce platform empowers wholesalers, and B2C retailers breaking into wholesale, by streamlining online commerce operations in just a few clicks.
/** * helper function to take the form and * get back a js object with field/value mappings * ignoring submit fields and fields whose name we can't ascertain */ function serialize(form){ return Array.prototype.slice.call(form.elements) .filter(isInputElement) .filter(isNotSubmit) .filter(hasFieldName) .reduce(function(data, node, index) { data[getFieldName(node)] = node.value return data; }, {}); } /** * Check if this form element is of type input */ function isInputElement(node) { return node.tagName.toLowerCase() === 'input'; } /** * Check if this is a 'submit' input element */ function isNotSubmit(node) { return node.type !== 'submit'; } /** * Ensure field has a derived name */ function hasFieldName(node) { return getFieldName(node) !== 'unknown'; } /** * Attempt to ascertain "name" of field. * * they don't give inputs real `name` attributes, so * best guess is to hack around the element's label text, * falling back to the placeholder text. (their html is * not semantic and often labels erroneously reference * parent divs instead of sibling input elements) * * strip out the stars they show when validation fails * * if label is misplaced _and_ there's no placeholder, * this function is insufficient */ function getFieldName(input) { if (!input.labels.length) return input.placeholder || 'unknown'; var labelText = input.labels[0].textContent.trim(); return ~labelText.indexOf(' *') ? labelText.slice(0, labelText.indexOf(' *')) : labelText; } /** * Listen for form submissions and send identify * if you'd like an event too, just delete the '//' in the track line */ document.forms[0].addEventListener('submit', function(e) { analytics.identify(serialize(e.target)); // analytics.track('Submitted Form'); });