Skip to main content
Any Omneo Profile attribute can be synced into a Shopify customer metafield. The mapping surface is general purpose, so you are not limited to a fixed list of supported fields: if the value exists on the Omneo Profile and a metafield exists in Shopify to receive it, you can connect the two without an Omneo release.
This page covers Profile field mapping. For mapping Shopify product fields into Omneo, see the product Field mapping section in Setting up the Shopify extension.
Configuration is two steps, in this order.
1

Create the metafield in Shopify

Shopify will not store a value in a metafield that has no definition, so the metafield must exist before you can map to it.
2

Map the field in the Omneo CX app

Choose the Omneo field, choose the Shopify field, and the extension writes the value on every sync.

Fields you do not need to map

A core set of fields syncs by default in both directions. Do not create mappings for these. Custom mappings are applied on top of the defaults and are resolved last, so a custom row targeting one of these fields overrides the default behaviour, which is rarely what you want.

Shopify Account to Omneo Profile

Applied on every sync, on both create and update: Applied only when the Profile is first created:

Omneo Profile to Shopify Account

Step 1: Create the metafield in Shopify

Go to Settings > Custom data > Customers in Shopify admin:
Select Add definition and create one definition for each Omneo value you want to sync.

Definition settings

The type of a definition cannot be changed after it is saved. Changing a type means deleting the definition, which deletes the stored values, and creating it again. Confirm the type before you save.

Options

Step 2: Map the field in the Omneo CX app

Go to Omneo CX > Settings > Profiles in Shopify admin and open the Field Mapping tab:
The Profile settings screen carries five tabs. Field Mapping is the last of them. Mappings are applied every time a Profile is synced.

Anatomy of a mapping row

Select Add mapping to create a row. Each row is one field, in one direction. Format, Array Select, and Default are available independently on each side of the row.

Mapping Identities

An Identity is an external ID associated with an Omneo Profile: the named slot that holds a Profile’s unique identifier in a third-party system, such as a Shopify customer ID, a loyalty card number, or a staff number. Each Identity has a handle and an identifier, referenced together as handle:identifier, for example shopify:12345. Identities are what let Omneo unify one person’s data across every system that knows them. See Identities for the concept and Working with identities for the API.
Identities cannot be mapped through a Field Mapping row. The extension filters identities out of field mapping in both directions, because Identities are attached through the dedicated Identities API rather than written as a Profile attribute. A mapping row that targets identities is ignored.
Map Identities in the Identity tab of Profile settings instead. That tab handles two things: Identity mapping uses the same row model as Field Mapping: a source, a destination, and the optional modifiers. The difference is which side of the Profile the value is read from.
The Shopify Extension claims the shopify handle. Do not reuse it for a mapped Identity, and do not point another Extension at it. Handle collisions cause the owning Extension to behave incorrectly.

Sync behaviour

  • Mapped fields update automatically whenever the underlying attribute changes on the Omneo side. You do not need to trigger anything.
  • Before launch, run a bulk resync so existing Profiles are brought up to date. New mappings apply from the moment they are saved, so without a resync the values populate slowly as each Profile happens to change.
  • A mapping writes on sync only. Editing a metafield by hand in Shopify admin holds until the next sync of that Profile overwrites it.
  • Custom mappings are resolved after the default field mapping, so a custom row pointed at a default target wins. Use this deliberately or not at all, because overriding a default such as email or tags changes behaviour the rest of the extension depends on.

Example: syncing the current tier

Mapping the Omneo Tier name into a customer metafield: Adapt the pattern to whatever fields and naming approach suit the brand.

Reading the value on the storefront

With Storefront API access enabled, a synced metafield is available in Liquid on the customer object:
Syncing to a metafield suits values that are stable between purchases, such as tier or lifecycle status. For values that change often, or that are not synced at all, query Omneo directly using the token flow in Shopify Authentication.
Record every field you plan to sync in a shared Data Dictionary before you create the definitions: business meaning, Omneo field path, Shopify namespace and key, type, and owner. Metafield types cannot be changed after creation and namespaces are hard to rename once values are live, so agreeing the naming convention up front is much cheaper than correcting it later.

The legacy balance metafield

omneo.balance predates the field mapping system. It is a hardwired feature of the extension, it still works, and it holds a structured array of balance data for the Profile. The extension appends it to every Omneo to Shopify sync, so it is always present and always current without any configuration.
Do not create a definition for omneo.balance or map to it manually. The extension maintains it. Create separate metafields if you need individual balance values in their own fields.
See Setting up the Shopify extension for the rest of the sync configuration, and Shopify for what the extension syncs overall.