Shopify field mapping
Shopify vendor to brand
product.vendor
brand
The Shopify vendor field is the obvious source for brand and the wrong one in most catalogues. It defaults to the store name, is used for suppliers and distributors as often as manufacturers, and is frequently inconsistent across a catalogue built over several years.
The Shopify side
- API field
- product.vendor
- Called
- Vendor
- Found at
- Product → Product organisation → Vendor
- Feeds
- brand
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 |
|---|---|---|
| Northbound | Northbound | Own-brand product where vendor is genuinely the brand. |
| My Store Ltd | (corrected to the manufacturer) | The Shopify default on hand-created products. Almost never the brand. |
| nike | Nike | Normalised case so the channel matches one brand rather than several. |
| Acme Wholesale Ltd | (the manufacturer, via a mapping table) | A distributor, not a brand. Mapped from supplier to actual manufacturer. |
| (empty) | (omitted) | Left empty rather than filled with a placeholder, which would break the brand and mpn identifier pair. |
The transformation, step by step
-
Audit what vendor actually contains
Group the catalogue by vendor and read the list. A healthy field holds manufacturer names; a typical one holds the store name on hand-created products, supplier names on imported ones, and three spellings of the same brand. The list tells you whether a direct mapping is viable at all.
-
Prefer a dedicated brand source where one exists
A brand metafield, or vendor plus a mapping table, is more reliable than vendor alone. Where the store sells only its own goods, a static value is both simpler and more correct than any field.
-
Normalise spelling and case
Map "nike", "Nike Inc." and "NIKE" to one value. Channels match on brand, and three spellings are three brands as far as matching is concerned, which quietly splits the performance of a single label.
-
Replace the store name with the real brand on resold goods
Vendor defaulting to the store name is correct for own-brand products and wrong for everything else. Where it is wrong, the item claims a brand that does not exist, and no identifier can match it.
-
Decide what happens when brand is genuinely unknown
Send nothing rather than a placeholder. Brand combines with mpn as an identifier pair, so an invented brand breaks the fallback as well as the brand itself. If the product has no brand, identifier_exists is the honest answer.
What goes wrong
Vendor means supplier to most merchants
The field is called Vendor, and a vendor is who you buy from. Shopify uses it for brand-style filtering, but merchants fill it with distributors and wholesalers, and both readings are reasonable, which is exactly why the data is mixed.
The store name is the silent default
Create a product by hand and vendor is prefilled with the store name. Nobody changes it, and a catalogue ends up claiming that every item is your own brand, which breaks identifier matching across the entire feed.
Brand is half of an identifier
Channels accept brand with mpn instead of a gtin. A wrong brand therefore fails twice: the brand itself is wrong, and the fallback identifier pair for every product without a barcode is wrong with it.
It is a product field, not a variant field
Vendor sits on the product, so every variant inherits one value. That is almost always correct, but it means a product mistakenly used to hold items from two manufacturers cannot be corrected in the feed.
How feedlab maps it
feedlab treats brand as a resolved value rather than a passthrough: a dedicated metafield first, then a normalising mapping table applied to vendor, then a static store brand where the catalogue is own-label. Products left with no brand appear in the preview rather than being filled with a placeholder.
Frequently asked questions
Should I map Shopify vendor to the brand attribute?
Only after checking what it contains. It defaults to the store name, is widely used for suppliers rather than manufacturers, and usually holds several spellings of the same brand. A mapping table or a metafield is more reliable.
Why does my feed say every product is my own brand?
Because vendor is prefilled with the store name when a product is created by hand, and mapped straight through. It also breaks identifier matching, since brand is half of the brand and mpn fallback.
What should brand be for own-made products?
Your own store or maker name, ideally set as a static value rather than read from vendor, which will be inconsistent across a catalogue built over time.
What if a product has no brand at all?
Send nothing. A placeholder breaks the brand and mpn identifier pair as well as the brand itself, and identifier_exists is the correct declaration for genuinely unbranded goods.
Errors this mapping causes
- Missing value: brand The "Missing value: brand" issue means a channel expects a brand name for a product and the feed did not supply one, or supplied a placeholder it treats as empty. On Shopify it usually means the vendor field is blank, or holds a supplier or internal category rather than the brand a shopper would recognise.
- Missing value: GTIN The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
Attributes involved
- brand The brand attribute is the name of the brand a product belongs to, and it is what makes a manufacturer part number meaningful and a listing eligible for brand-based matching. On Shopify it maps most often from the vendor field, which is unreliable because merchants commonly use vendor to record a supplier or distributor rather than the consumer-facing brand.
- mpn The mpn attribute is the part number a manufacturer uses to identify a product in its own catalogue, and it serves as the fallback identifier when an item has no GTIN. Unlike a GTIN it is only unique within one manufacturer, so it is meaningless to a channel unless the brand attribute is supplied alongside it.
- identifier_exists The identifier_exists attribute is an explicit declaration that a product has no manufacturer-assigned identifiers, set to no when a GTIN, MPN and brand genuinely do not exist for the item. It is a statement about the product, not a way to silence identifier warnings, and channels treat misuse as a data quality problem rather than a resolution.
Related concepts
Primary sources
Channel specifications change. These are the official documents this page is based on.