Integrations
Shopify

Shopify Metafields & Data Mapping

Introduction

Metafields help you to customise the functionality and appearance of your Shopify store by letting you save specialised information that isn't usually captured in the Shopify admin. You can use metafields for internal tracking, or to display specialised information on your online store in a variety of ways. For full details, please refer to this official Shopify guide.

In the context of SparkLayer, metafields are used to capture additional B2B data that you can then use in a variety of ways:

Type

Details

Product metafields

Updating the Frontend Interfaces by adding configurations such as pack sizing, RRP prices, and more

Customer metafields

Updating a customer's information by adding information such as credit limits

Order metafields

Updating an order with invoicing information

Important considerations In order for SparkLayer to work with Shopify metafields, please note the following:

  • Product metafields Metafields are always added at the product variant level, even if the product only comes in a single variant.
  • JSON data Some SparkLayer settings require metafields to be set up as JSON strings. These will need to be carefully added, making sure the formatting is set correctly.

Learn more To see all available metafields for SparkLayer, please see our Metafields guide.



Order Data

How to add metafields to Shopify

Shopify has built-in ways to set up metafields and we recommend referring to their official Shopify guide on the best ways to do this.

Within your Shopify store, navigate to Settings and click Custom Data and you'll see an interface similar to the below.

Document image


In this example, you can see how RRP (MSRP) pricing is set up at a variant level and we've also included a video below to see the full steps.

Document image



Setting up product metafields

Metafields at a variant level Generally speaking, in the context of SparkLayer, all metafields are added at the variant level not the product level. This is very important to remember when configuring any metafields that you're looking to add.



When setting up metafields in Shopify, you'll be required to specify the following at a minimum:

Item

Details

Metafield type

This sets the data type, e.g. a text field, JSON, a selection of values

Namespace

This defines the category and naming convention of the metafield. In the case of SparkLayer, this must be set as sparklayer

Key

This defines the key to use, e.g. pack_size

Value

This is then added against a product variant within Shopify (see below)

When you're setting up the Namespace and Key via the Shopify admin, you'll be required to "combine" this in the "Namespace and key" field. In our example below, we've illustrated how this works for pack sizing, entered as sparklayer.pack_size.



Setting up customer metafields

Customer metafields work in just the same way as product metafields (see above) and, once they are setup within Shopify, you can navigate to any customer record and add or edit data as required. In our example below, we've set up payment terms, a sales agent group, and a customer-specific discount.

Document image


Populating metafields

Once you've set up metafields, you can navigate to a product, customer, or order record within Shopify and add your SparkLayer settings within the fields shown.

Document image



Importing metafields in bulk

Currently, Shopify offers no "built-in" way to bulk import metafield data at a variant-level so it's necessary to use third-party apps to get around this. One of the most recommended, is an app called Matrixify which allows you to easily "map" metafield data and import in bulk.



Order Data

Document image


When an order is passed to Shopify, the following attributes are attached to the order:

Attribute

Notes

note

Order Note: sparkCartId This is added as an order note. This is primarily for internal use for debugging

note

Order Note: sparkPaymentType This is added as an order note. This contains the name of the payment option used:

  • upfrontPayment
  • paymentOnAccount
  • paymentByInvoice
  • quote

tag

A tag of b2b is added to any order placed via SparkLayer

On each line item, there is also a Charged Price attribute which contains the final line item price.

Order Mapping

Shopify

Spark Layer

processsed_at

created_at

id

external_id

name

visible_id

currency

currency_code

note

customer_reference

customer.id

customer_id

billing_address

billing_address

shipping_lines[0].title

packages[0].shipping_name



packages[0].shipping_sku === 'shopify'

shipping_address

packages[0].shipping_address

shopifyOrder.shipping_lines[X].price (SUM)

packages[0].total_shipping_.gross

shopifyOrder.shipping_lines[X].tax_lines.price (SUM)

packages[0].total_shipping_.net

line_items[T].name

packages[0].items[T].name

line_items[T].quantity

packages[0].items[T].quantity

line_items[T].id

packages[0].items[T].variant_id

(T)

packages[0].items[T].line_total.gross

(T)

packages[0].items[T].line_total.net

Order history: importing orders into SparkLayer

It's possible to import historic B2B order data into SparkLayer, allowing customers to see their previous order history once they access their account on your store.

To do this apply a metafield as shown below:

Item

Details

Custom data type

Order

Metafield type

This must be set as an boolean

Namespace

This must be set as sparklayer

Key

This must be set as order_import

Value

This must be set as a boolean of true

Any orders that are imported this way must also have a tag of b2b assigned to them within Shopify.

If you're working with a large data set and would prefer to do this manually, you can instead use order metafields within Shopify to do this. Our recommendation is to use a bulk import tool such as Matrixify to manage this more quickly. When importing using this tool, you can use the format below simply by adding the Shopify order ID in the ID column.

We also have a sample CSV template you can start with.

ID

Metafield: sparklayer.sparkOrderImport [boolean]

Command

[order-id-here]

TRUE

UPDATE

Please note The note attribute must be added to the order after SparkLayer is installed for the order to be synchronised correctly. Orders synced in this way can then be reported upon and will appear in the Orders section of the SparkLayer Dashboard.



Advanced settings

To learn about more advanced settings, including customer-level product metafield settings, please see Product Settings