# Shopify vendor to 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.

- **Canonical URL:** https://www.feedlab.io/knowledge/mappings/shopify-vendor-to-brand
- **Last reviewed:** 18 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab


## The Shopify side

| Property | Value |
| --- | --- |
| API field | `product.vendor` |
| Called | Vendor |
| Found at | Product → Product organisation → Vendor |
| Feeds | `brand` |


## Before and after

| 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

1. **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.
2. **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.
3. **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.
4. **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.
5. **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.




## Primary sources

- [Google: brand attribute specification](https://support.google.com/merchants/answer/6324351)
- [Shopify: Product API reference](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product)



