Skip to content
feedlab Request early access

Shopify field mapping

Shopify tags to custom labels

product.tags custom_label_0

Custom labels are the five free-form fields a feed carries for your own segmentation, and Shopify tags are the obvious source. Because a product has many tags and a label holds one value, the mapping selects and derives rather than copies.

The Shopify side

API field
product.tags
Called
Tags
Found at
Product → Tags, in the sidebar

Before and after

Real values on the left as Shopify stores them, on the right as a channel needs them.

Example transformations for Shopify tags to custom labels
In Shopify In the feed Note
tags: season:aw25, sale, bestseller custom_label_0 aw25 Selected by prefix rather than by position in the tag list.
price 39.00, compare_at 49.00 custom_label_1 discount-20 Derived rather than tagged. Updates itself as prices change.
created 14 months ago custom_label_2 stock-age-12m-plus Computed from a date, which no tag could keep current.
tags: SALE, Sale, sale custom_label_3 sale Normalised so the channel sees one segment rather than three.
no matching tag (omitted) An empty label is fine. A guessed one is not.

The transformation, step by step

  1. Decide what each label is for before mapping anything

    There are five, they are yours, and changing their meaning later invalidates every campaign structure built on them. Margin band, season, bestseller status, stock age and clearance are the usual choices, and the decision should outlast the mapping.

  2. Select one value per label from the tags

    A product carries many tags and a label takes one value. Use a prefix convention such as season:aw25 so the right tag can be found, or match against an ordered list and take the first hit.

  3. Derive labels that tags cannot express

    The most valuable labels are computed rather than tagged: a margin band from price against cost, a stock-age bucket from the inventory date, a discount band from price against compare-at price. None of those exist as tags and all of them change on their own.

  4. Normalise the value

    Consistent, lower-case, short values group cleanly in a channel interface. A label with three spellings of the same concept is three segments, which defeats the purpose of having the label.

  5. Send only the labels you use

    An empty custom label is no worse than an absent one, but a label populated with something nobody segments on is clutter that invites a future mistake. Map the ones you will actually bid on.

What goes wrong

Tags are a shared field with several owners

Apps write tags, bulk edits write tags, and staff write tags for their own purposes. A custom label mapped to a loose tag match changes meaning the first time an app adds something, and the campaign built on it changes behaviour without anyone touching the feed.

Redefining a label breaks the campaign silently

Custom labels are referenced by number in channel campaign structures. Repurposing custom_label_1 from season to margin leaves every rule that mentions it still running, now segmenting on something entirely different.

Static tags for values that move

A "bestseller" tag applied once is a fact about last year. Labels that describe something changing, such as margin, discount depth or stock age, only work when they are computed at generation time.

Tags are per product, not per variant

Shopify tags live on the product, so every variant inherits the same value. A label that should differ per variant, such as a size-specific clearance flag, cannot come from tags at all.

How feedlab maps it

feedlab populates custom labels from rules rather than a tag copy: prefix-matched tag selection where a tag is the right source, and computed values where it is not, such as margin bands from cost and price or stock age from inventory dates. Each label keeps one documented meaning so campaign structures stay valid.

Frequently asked questions

What should custom labels be used for?

Whatever you want to segment or bid on: margin band, season, bestseller status, stock age, clearance. There are five, they are entirely yours, and their meaning should be decided once and kept.

Can I map Shopify tags straight to custom labels?

Only with a selection rule, because a product has many tags and a label holds one value. A prefix convention such as season:aw25 is the most maintainable approach.

Should custom labels be computed instead of tagged?

For anything that changes, yes. Margin, discount depth and stock age are the most valuable labels and none of them can be kept accurate as a manually applied tag.

Can a custom label differ per variant?

Not from tags, which live on the product. A per-variant label has to be derived from variant-level data such as its price, its inventory or a variant metafield.

Attributes involved

Related concepts

Primary sources

Channel specifications change. These are the official documents this page is based on.

Last reviewed View as markdown