B2B customers often buy at prices that they negotiated with you, and those agreements are often stored in Business Central price lists and customer price groups. A standard Shopify storefront shows the same public price to every visitor.
When you use Shopify, you have two main options for managing B2B prices. The first option is Shopify's own B2B catalogs. To assign catalog prices to specific customers, you need Shopify Plus. For more information, see B2B features by plan. The second option is SparkLayer, which Tinx SparkLayer Connector connects to Business Central. For more information, see Manage B2B pricing in your webshop.
Tinx SparkLayer Connector isn't a standalone connector for your webshop. It sends only prices from Business Central. You also need a second connection between Business Central and Shopify. That connection publishes products and stock levels to Shopify, synchronizes customers, and imports orders into Business Central. For more information, see Connect Business Central with Shopify.
This article explains what SparkLayer is, how Tinx SparkLayer Connector fits between Business Central, Shopify, and SparkLayer, and what the connector sends to SparkLayer. It describes how a Business Central price becomes a SparkLayer price and how it reaches the Shopify storefront. It also covers what must be in place before a customer sees that price.
Workflow
The following workflow corresponds to the previous diagram.
The diagram covers two parts of the process. Points 1 to 3 explain the setup required between SparkLayer, Shopify, and Business Central. Points 4 to 6 show what happens when a B2B customer visits your webshop.
Setup
- Business Central sends items to Shopify. The customer records must also carry the tags and metafields that SparkLayer reads later. For more information, see Tags and metafields on the Shopify customers. The GQL_OUT_METAFIELDS dashboard and the GQL-022-CUSTOMERS message in the diagram are examples only; your names may differ.
- Business Central sends price lists and customer groups to SparkLayer.
- SparkLayer imports the product data it needs from Shopify every 10 minutes by default. It also imports the Shopify customers that are tagged as B2B customers. For more information, see Data sync.
Storefront
- A B2B customer signs in to your Shopify webshop. SparkLayer
recognizes the customer by the
b2btag on their Shopify customer record. - The customer browses your webshop. Shopify supplies the storefront and the product catalog. SparkLayer controls which products in that catalog the customer can see.
- SparkLayer supplies the prices that the customer sees. It matches the customer to the price lists that apply to them. The storefront then shows the prices that you agreed on with that customer.
The role of SparkLayer in a Shopify webshop
Business Central and SparkLayer keep prices in different forms. Business Central starts from the prices on price lists. When needed, it applies other information, such as groups, dates, and percentages, to calculate the price for a specific customer. SparkLayer is also based on price lists, and you can adjust a price list only with a percentage. A Business Central price can't be sent to SparkLayer as-is.
SparkLayer is a B2B layer that runs on top of Shopify. You install it in a Shopify webshop. SparkLayer itself does more than hold prices. However, in the Tinx Connector context, the default mapping uses it only to synchronize price lists and customer groups. The default mapping in Tinx SparkLayer Connector uses only the SparkLayer pricing and customer-groups APIs.
SparkLayer hosts price lists and customer groups. Products, customers, and orders stay in Shopify. A B2B customer browses products and places orders in your Shopify webshop, and each order is created as a Shopify order. SparkLayer controls only some sections that a B2B customer sees on the Shopify storefront, such as the account section, checkout, and pricing. After the customer signs in, the prices that SparkLayer supplies can differ from the prices that other visitors see.
To connect Business Central with Shopify, you can use either Tinx Shopify Connector or the native BC-Shopify connector. Without one of these connectors, Tinx SparkLayer Connector achieves little. However, neither connector can send data to SparkLayer. Whichever you use, you also need Tinx SparkLayer Connector to send price agreements to SparkLayer.
Business Central offers more pricing functionality than most webshops. For webshops such as Magento and WooCommerce, Tinx plugins let you maintain your B2B price agreements in Business Central and publish them to the webshop. Without Shopify Plus, you can't assign B2B prices to specific customers in Shopify. If you don't use Shopify Plus, Tinx recommends SparkLayer.
SparkLayer price lists and customer groups
A SparkLayer price list consists of a set of SKUs with prices. You manage price lists in the Price List area of the SparkLayer Wholesale section in your Shopify backend. The page's own actions are Bulk upload and Create price list.
Every price list has a name and a separate handle. The handle is the unique identifier. Each price list also has a currency and a type.
SparkLayer also needs a way to match each customer to the price lists that apply to them. A SparkLayer customer group defines ordering rules for a set of B2B customers. Every webshop has a base customer group whose settings apply to every B2B customer. Each additional group inherits those settings unless you override them. A group can also have Shopify tags, price lists, payment methods, order limits, and other settings.
When you create a customer group, you give it a unique handle. The
Shopify Tags column then shows the tags for that group,
including the base b2b tag. A customer can be assigned to
only one B2B customer group. For more information, see Synchronising
customer data.
You can also set price lists on a single customer. These price lists override the ones that the customer gets from their group. For more information, see Customer-specific price lists. The default mapping in Tinx SparkLayer Connector ships a message that creates a SparkLayer customer group based on Customer Price Groups in Business Central.
Tags and metafields on the Shopify customers
Tags on a Shopify customer are the standard way to switch SparkLayer
on for a b2b customer and to put the customer in one
customer group. Metafields on a Shopify customer hold customer-specific
settings. For pricing, a metafield names the price lists that apply to
the customer. These price lists override the customer group's price
lists.
Tags
SparkLayer recognizes a Shopify customer as a B2B customer only when
the customer has a b2b tag. If your customer groups apply
different rules to different customers, the customer needs a second tag
for the group. A customer record can't hold more than two b2b-related
tags. For more information, see Installing
SparkLayer on Shopify.
SparkLayer uses the tags on the Shopify customer record to assign the customer to one SparkLayer customer group. When a tagged customer signs in to your Shopify webshop, they see that group's B2B ordering rules, such as pricing and payment methods.
SparkLayer can also use a customer's tags to make a product catalog available only to customers with that tag. For example, customers with a B2B UK tag can see a B2B UK catalog that other customers can't see.
Metafields
If you use Tinx Shopify Connector, Business Central can send metafields to both customer and product records in Shopify. On a Shopify customer, the Sparklayer Pricelists metafield specifies the price lists that apply to that customer. Its value is a price list handle, and it can reference multiple price lists. SparkLayer needs the value in JSON format.
The following screenshot shows an example of the Sparklayer Pricelists metafield for a Shopify customer who has several price lists assigned. The last one, b2b, is a general B2B price list that contains all the prices, without a discount. SparkLayer first searches the customer's other price lists. If none of them contains the product, SparkLayer takes the price from b2b.
None of the 12 shipped SparkLayer message definitions write a Shopify metafield. The metafields reach Shopify through the Shopify connection, not SparkLayer. The default Shopify mapping doesn't include a dashboard or a message for metafields. To enable metafield synchronization from Business Central to Shopify, you create a dashboard and a message. The native BC-Shopify connector can send metafields, such as a customer number, from Business Central to Shopify. However, it can't send the metafield that SparkLayer needs. That metafield lists the price lists that apply to the customer, in JSON format. For more information, see Import and export customer information using Shopify metafields.
If you use the native BC-Shopify connector, you have two options.
- Import the metafield values into Shopify manually.
- Use Tinx Shopify Connector to send them for you. Tinx Shopify Connector can send them even while the native connector covers the other areas of Shopify synchronization.
For Tinx Connector, a metafield is a place to store information. Tinx Connector pushes the data to Shopify. The application that reads the data, such as SparkLayer, decides how to use that data.
How SparkLayer chooses which price to display to a customer
When Business Central calculates a price, it looks for the best price and the best discount that it can find. SparkLayer works differently. A customer can be entitled to more than one price list at once. SparkLayer searches the price lists that the customer is assigned to and stops at the first price that it finds, not at the lowest one. If you send several price lists to SparkLayer for the same customer, the storefront price can be higher than the price that Business Central would have calculated for that customer. For more information, see Pricing FAQs.
SparkLayer searches the customer's price lists in sequence. If the first price list doesn't contain the product, SparkLayer searches the second one, and so on. If none of the customer's price lists contain the product, the customer sees the default Shopify price.
How Business Central prices become SparkLayer prices
A Business Central price reaches SparkLayer in two stages. You first turn each calculated price into a fixed amount, and the connector then sends that amount to SparkLayer.
Flattened prices and percentage price lists
Business Central doesn't store a net price for a single customer and item. It stores the elements of that price separately: unit prices on price list lines and percentages on discount lines. Each line is assigned to a customer, a customer price group or customer discount group, or all customers. Business Central calculates the net price from those lines when you enter a sales line.
In Tinx SparkLayer Connector, a SparkLayer price list holds mostly amounts, not rules. You can't send an item discount group to SparkLayer as a group. Instead, the group is flattened into the individual products that it contains, each with the resulting price. If you use only the default price list messages, SPL-002 and SPL-005, the connector sends fixed amounts, not percentages. In that case, you must convert a percentage discount to a net price in Business Central before you send it.
Flattening isn't the only way to send prices to SparkLayer. You can also apply a percentage price list. For example, your B2B price list contains only some of your products, and you apply a 20% discount to the whole price list. SparkLayer then holds two price lists: one with the items and their prices, and one with the percentage discount.
The following screenshot shows an example of a percentage price list in SparkLayer:
- In the Pricing source field, you select the b2b abc price list as the basis.
- In the Apply a percentage variation section, you choose Decrease and enter 11.5 to apply a discount.
- The result is a new price list, b2b abc 11.5, that applies to all customers who are assigned to it.
Flattening produces far more records than the number of groups suggests, because every combination has to be calculated and stored. By default, Tinx SparkLayer Connector reads prices from the Sales Price List page. You can use the Item Price Container functionality to flatten the price lists. However, you need to adjust the default mapping in Tinx SparkLayer Connector to use the Item Price Container. For more information, see Item Price Container synchronization.
One reason to use the Item Price Container with SparkLayer is how it handles deleted products. When a product is deleted, the standard sales price lists remove its price. The Item Price Container keeps the record and marks it as deleted, so the record isn't lost.
How you structure the price lists is one of the main decisions during implementation. One price list per customer is the simplest arrangement, and it flattens every item for every customer. One price list per customer group leaves you with far fewer price lists in SparkLayer. You can also choose an arrangement in between, such as one price list per combination of item discount group and discount percentage. That arrangement includes the discounts while keeping the number of price lists well below one per customer.
Sending a price list to SparkLayer
Tinx Connector sends the price list to SparkLayer in two messages. For more information, see To publish the sales price list to the webshop.
-
SPL-002 Create the price list: The first message creates the price list in SparkLayer. It sends the price list code as the SparkLayer slug, the description as the name, and the currency code. SparkLayer uses the slug as the price list identifier going forward. SparkLayer returns the slug, and Tinx Connector saves it in the Webshop Slug field on the Sales Price List page. The following example shows a request sent to SparkLayer when you turn on the Publish to Webshop toggle on the Sales Price List page.
{"slug":"PRICELIST01","name":"Example Price List","currency_code":"USD","source":"integration"}The following screenshot shows the price list after you publish it. The Webshop Slug field is populated based on the SparkLayer response.
-
SPL-005 Send the prices: As soon as the slug is saved, the second message sends the price list lines to that SparkLayer price list. Each line becomes one entry with the item number as the SKU, the unit price, and the minimum quantity. The following example shows a message with three price list lines.
[ {"sku":"1000","pricing":[{"price":100.00,"quantity":1}]}, {"sku":"1001","pricing":[{"price":200.00,"quantity":1}]}, {"sku":"1002","pricing":[{"price":300.00,"quantity":1}]} ]
SparkLayer also supports tiered pricing, where one SKU has different prices at different quantities. For more information, see Pricing FAQs. The default mapping's pricing message is configured for tiered pricing. It sends a line with a minimum quantity of 0 or 1 as an ordinary price, and a line with a minimum quantity above 1 as a tier price.
The default mapping ships only outbound message definitions. Besides the two pricing messages, it includes other messages, for example, messages that let you create a customer group.
The SparkLayer sales channel in Business Central
You connect SparkLayer the same way you connect Business Central with Shopify: by setting up a sales channel. For more information, see Connect Business Central with SparkLayer.
Tinx developed the SparkLayer integration because users of Tinx Shopify Connector found Shopify's pricing functionality too limited. It began as an add-on to Tinx Shopify Connector and became a separate ISV application for Business Central. However, it still depends heavily on the underlying Tinx Shopify Connector logic. When you set up Tinx SparkLayer Connector, a few Shopify records, such as a SHOPIFY sales channel and a SHOPIFY integration, also appear in Business Central. You get them even if you use the native Shopify connector and never install Tinx Shopify Connector. They come from the default configuration. The SparkLayer price feed doesn't use them.
SparkLayer plan and Tinx license requirements
Whether you can establish the connection depends on the SparkLayer plan. SparkLayer's free plan doesn't include API calls, so Tinx Connector can't reach SparkLayer. To connect, you need at least the Pro version, which you can test during the free trial. For more information, see To install SparkLayer.
Tinx licensing works the same way as for every other Tinx connector: one license supports one API connection. In practice, that means one Business Central company linked to one SparkLayer environment. Each additional connection needs its own license.
Related information
Quickstart
Connect Business Central with
SparkLayer
Synchronize prices
Synchronize customers
Key concepts in Tinx
Connector
Troubleshooting
checklist
Get help
from Tinx Support
Help us improve the documentation
We continuously update the Tinx documentation. This article was recently rewritten. Send your feedback to docs@tinx-it.nl to help us make it even better.
Last updated on October 12, 2026