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
- Feeds
- custom_label_0
Before and after
Real values on the left as Shopify stores them, on the right as a channel needs them.
| 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
-
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.
-
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.
-
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.
-
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.
-
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.