How to Add MPN and Brand Metafields to Shopify Products (Step-by-Step for 2026)

When products lack GTINs, Google requires both MPN and brand to satisfy identifier requirements. Here's how to add them as Shopify metafields, in bulk, without breaking your existing product data.

By ShieldKit Team

When your products genuinely have no GTIN, Google's fallback identifier path is MPN + brand together. Both fields are required as a pair — populating only one is treated the same as populating neither. On Shopify, you add them as product-scoped metafields under the custom namespace (custom.mpn and custom.brand), define them once in Settings → Custom data, and bulk-populate via the Bulk Editor or a CSV importer like Matrixify. The whole setup takes about 20 minutes for the first product and minutes per hundred after that.

This post is the step-by-step. It assumes you've already decided MPN+brand is the right path — if you haven't, read why "missing GTIN" shows on your Shopify Google channel first to confirm.

Why MPN + brand instead of GTIN

GTIN is the global standard. MPN+brand is the fallback when no global entry exists. Google's identifier hierarchy:

  1. GTIN — preferred. Required for branded resale.
  2. MPN + brand together — accepted substitute when GTIN doesn't exist. Both must be populated.
  3. identifier_exists=false — last resort, only for genuinely unidentified products (handmade, custom).

The MPN+brand path applies to private-label products, manufacturer-direct sales of items that pre-date global catalog entries, and small-run products with manufacturer codes but no GS1-assigned GTINs. If you're selling Acme-brand sneakers you bought wholesale from Acme's distributor, you're in the GTIN path (Path A in the missing GTIN post). If you make your own products under your own brand and assign your own SKUs, you're in this MPN+brand path.

The metafield definitions to create

Three definitions, all product-scoped, all single-line text:

  • custom.mpn — the manufacturer part number (your own SKU works if you're the manufacturer)
  • custom.brand — the brand name (your store name if you're the brand)
  • custom.identifier_exists — accepts "true" or "false". For MPN+brand path, leave unset or set to "true" (the default).

A note on namespaces: custom is Shopify's default and what most current Google channel app versions look for. Older versions and a handful of third-party feed apps look for mc_google_offer.mpn and mc_google_offer.brand instead. Check which your version uses by populating one product, waiting 24-72 hours for sync, and inspecting the feed in GMC. If the values didn't propagate, switch namespaces.

Step-by-step setup

Step 1: Create the metafield definitions.

Shopify Admin → Settings → Custom data → Products → Add definition.

For each of the three (mpn, brand, identifier_exists):

  • Name: e.g., "MPN"
  • Namespace and key: custom.mpn
  • Type: Single line text
  • Validation: leave defaults (or for identifier_exists, restrict to "true" or "false")

Save. Repeat for the other two.

Step 2: Populate manually for one test product.

Pick one product. Open it in Shopify Admin. Scroll to the Metafields section at the bottom. Fill in custom.mpn and custom.brand. Save.

Step 3: Verify it appears in the Google channel feed.

Wait 24-72 hours for sync. Open GMC → Products → All products → find your test product. The brand and MPN columns should show the values you set.

If they don't, try the namespace switch: change to mc_google_offer.mpn and mc_google_offer.brand. Wait another sync cycle. If that works, your channel app is on the legacy namespace and you'll use that for the bulk pass.

Step 4: Bulk populate.

Once you've confirmed the namespace works, go to bulk methods.

Bulk population methods

Method A: Shopify Bulk Editor.

Products list → select products → Edit products → click "Edit columns" and add custom.mpn and custom.brand. Paste from spreadsheet. Save. Caps at 50 products per batch; run repeatedly.

This is the right tool for catalogs under 1,000 SKUs where you have the MPNs in a spreadsheet already. For larger catalogs the column-add UX gets tedious.

Method B: CSV via Matrixify.

Install Matrixify (or a similar product import/export app). Export with metafields included. Open the CSV. Add or fill the custom.mpn and custom.brand columns. Re-import.

This scales to tens of thousands of SKUs in one pass and gives you better error reporting than Shopify's native CSV. Worth the monthly fee for any catalog over 5,000 SKUs.

Method C: Automation app.

ShieldKit's Shield Max tier (currently scope-pending for write access) includes a bulk identifier auto-filler that detects products lacking GTINs and writes MPN+brand from your catalog metadata where it can determine them. The preview UI works today; writes activate when the write_products scope clears App Store re-review. For now, it's a useful diagnostic — even if you bulk-write via Matrixify, running the free compliance scan surfaces the products that need attention.

Common mistakes

Four patterns to avoid:

  • Confusing product.vendor with custom.brand. Shopify has a built-in Vendor field on every product. Some Google channel apps use Vendor as the brand source; others use custom.brand. Populate both if you're unsure. They should match.
  • Setting brand on the product but MPN on the variant. They're both product-scoped metafields in the standard setup. Don't accidentally create custom.mpn as variant-scoped — you'll have to delete and recreate.
  • Empty MPN strings instead of omitting the metafield. Empty string "" is treated as "value provided" but invalid. Leave the metafield unset (don't create the entry) for products that don't apply.
  • Brand without MPN, or MPN without brand. Google requires both as a pair. Half-populated rows fail catalog match the same as fully empty rows.

How to verify

After your bulk pass:

  • Wait 24-72 hours. Google channel sync window. Don't check earlier.
  • GMC Diagnostics → Item issues. Missing identifier errors should clear for affected products.
  • GMC Products → All products. Spot-check 10-20 products. Brand and MPN columns should populate.

If errors persist after 72 hours, the most common cause is the namespace mismatch — see Step 3 above. The second most common is missing GTIN entries you forgot to also populate (the MPN+brand path is for products without GTIN; products with GTIN still need that field). For the related "products clean in diagnostics but not showing in Shopping" problem, see Shopify products not showing in Google Shopping.

For products that legitimately have neither GTIN nor MPN (truly handmade or custom), don't use this path. Set identifier_exists=false instead — see how to bulk add identifier_exists on Shopify.

For the broader pattern of subtle Google Shopping issues that don't show up cleanly in diagnostics, see the hidden GMC triggers most Shopify stores miss and the 12-point GMC compliance checklist.

FAQ

What's the difference between MPN and SKU?

MPN is the manufacturer's part number (assigned by whoever made the product). SKU is your store's internal identifier. They can be the same if you're the manufacturer. They're different if you're a reseller.

Should I use the Vendor field or a custom brand metafield?

Both, ideally with the same value. Some Google channel app versions read Vendor; others read custom.brand. Populating both removes the ambiguity.

Can I use my store name as the brand for private-label products?

Yes — that's the standard pattern for private label. If you sell under "Acme Goods," set custom.brand to "Acme Goods" on every private-label product.

How long until GMC reflects the new metafields?

24-72 hours for the Shopify Google channel sync, plus another 24 hours for GMC Diagnostics to refresh. Plan for 2-3 business days end to end.

What if I only have brand but no MPN?

Don't use this path. Either find an MPN (your own SKU works if you're the manufacturer) or set identifier_exists=false on those products. Brand alone isn't a valid identifier substitute.

Does the metafield approach work for variants?

The default setup is product-scoped. If your variants have different MPNs (different sizes have different manufacturer codes), create variant-scoped versions of the metafields and populate per variant. Most stores don't need this — variant-level MPNs only matter for genuinely different manufacturer SKUs.

For Google's official identifier specification, see Google's product data specification. For Shopify's metafield setup documentation, see Shopify's metafield definitions help.

Find out what's flagged on your store

Run a free 8-point compliance scan in under 60 seconds.