Setting identifier_exists to false feels like a quick fix when your products lack GTINs. Done correctly, it clears a disapproval. Done incorrectly, it creates a new one. This article covers the precise conditions that justify the value, what companion attributes you still need to submit, and the specific mistake that turns the fix into a fresh error.
When identifier_exists: false Is Actually Appropriate
identifier_exists is a Boolean attribute that tells Google your product genuinely has no assigned unique product identifiers (UPIs). UPIs are submitted through three attributes: gtin, mpn, and brand. Google documentation describes the attribute as recommended "for products that don't have a GTIN [gtin], MPN [mpn], or brand [brand]."
The same documentation is explicit about which product types qualify:
- Custom or one-of-a-kind products — custom T-shirts, art, handmade goods
- Products produced before GTINs were introduced — vintage items, antiques, books published before 1970
One condition applies across all of these: the product must be new (submitted with condition: new) and must genuinely lack any assigned product identifiers. If your product is used or refurbished, the identifier logic follows a different path and identifier_exists: false is not the automatic answer.
An important formatting requirement: Google documentation states the value "must be submitted in English." That means the accepted strings are no or false for text and XML feeds, and true or false for the Merchant API. Submitting a translated equivalent will not be recognized.
What You Still Need to Submit Alongside identifier_exists: false
Setting identifier_exists to false does not mean you can omit all other product attributes. It means you are declaring that GTIN, MPN, and brand do not exist for this specific product. The following rules apply.
Leave GTIN and MPN blank — do not submit placeholder values. If the product is custom-made and has no GTIN, leave that field empty. If it has no MPN, leave that field empty too. Submitting a fabricated or guessed value is worse than leaving the field blank. As Google documentation states about MPN specifically: "When in doubt do not provide an MPN (for example, do not guess or make up a value)."
MPN is required when no GTIN exists — unless the product is custom. This is a nuance many merchants miss. Google documentation states that MPN is "Required for all products without a manufacturer-assigned GTIN [gtin]." However, the same page immediately qualifies this: if the product is a custom-made product such as art, custom t-shirts, novelty products, or handmade products, the attribute is optional. So for a genuinely custom product where you are setting identifier_exists: false, MPN is optional and should be omitted entirely rather than invented.
All other required attributes still apply. Title, price, condition, availability, and image link remain mandatory regardless of identifier status. For the identifier_exists: false declaration to be valid, condition must be present and set to new.
Variants need the right treatment too. If your custom product comes in multiple colors or sizes, each variant should still use a distinct id and share the same item_group_id. Each variant that is custom-made and lacks identifiers should carry its own identifier_exists: false. Do not assume one flag covers the entire group.
The Two Ways identifier_exists: false Creates Its Own Disapproval
Setting this attribute incorrectly causes the very disapproval you were trying to avoid. There are two distinct failure modes.
Failure mode 1: You set it to false but identifiers do exist. If Google finds evidence that a unique product identifier exists for your product — a GTIN in its database, for example — it will flag the listing. Google documentation is direct: "Products for which the identifier exists [identifier_exists] attribute is incorrectly set to no [no] or false [false] and for which there is evidence that a unique product identifier exists, will receive a warning." A warning today can become a disapproval as Google's confidence in its product data grows.
Failure mode 2: You set it to false but also submit identifiers.
This is the "product identifiers provided but identifier_exists set to false" error. If your feed row contains a GTIN or MPN value and sets identifier_exists to false, those signals contradict each other and the product will be disapproved. The fix is straightforward: if the identifiers exist and are correct, remove identifier_exists: false entirely and let the GTIN or MPN do the work. If the product genuinely has no identifiers, leave those fields blank.
Hypothetical Example: Custom Handmade Candle Variants
The following is a hypothetical example for illustration only.
Imagine a Shopify merchant selling hand-poured soy candles in three scents. Each candle is made to order and has no manufacturer-assigned GTIN or MPN. Here is how the feed attributes should look for one variant:
| Attribute | Value |
|---|---|
id | CANDLE-001-VANILLA |
item_group_id | CANDLE-001 |
title | Hand-Poured Soy Candle – Vanilla – 8oz |
condition | new |
identifier_exists | no |
gtin | (leave blank) |
mpn | (leave blank) |
brand | (leave blank) |
availability | in_stock |
The other two scent variants (lavender, eucalyptus) each get their own id and share the same item_group_id. Each row also carries identifier_exists: no. Nothing is fabricated in the GTIN or MPN columns.
If this same merchant also sells a branded third-party candle holder with a real GTIN, that product's row should not carry identifier_exists: false. It should carry the correct GTIN and brand instead.
Practical Checklist Before You Submit
Before setting identifier_exists to false on any product, run through these checks:
- Is the product genuinely custom or pre-GTIN era? If a GTIN exists in any database, do not set this to false.
- Are GTIN and MPN fields blank — not filled with placeholder text? Delete any dummy values.
- Is the value submitted as
noorfalsein English? Translated strings are not recognized. - Is
conditionset tonew? The attribute is scoped to new products. - Does each variant carry its own
identifier_exists: false? One flag per row, not per group.
Managing these attribute rules across a large catalog — especially when custom and branded products live side by side — is where feed management tooling earns its place. Magicfeedpro is built to help merchants control exactly these attribute-level distinctions without manual row-by-row edits.
If you are seeing related errors across your catalog, the broader context of common Merchant Center disapprovals is covered in Google Merchant Center Errors: 12 Common Fixes.
Related articles
Tax Attribute in Google Shopping Feeds: Format and When to Submit
Learn when to include the tax attribute in your product feed and how to format country, region, rate, and tax_ship sub-attributes correctly.

MPN Attribute in Product Feeds: Rules When There Is No GTIN
Learn when the mpn attribute is required, how to format it correctly, and what to submit when a product has no GTIN.

google_product_category Taxonomy: How to Choose the Right Value
Learn when and how to set google_product_category correctly, avoid disapprovals, and handle override cases in your feed.
