Help
This app prepares your product data for Google Shopping. It sets custom labels from rules you define, and finds gaps in your feed before you spend on ads.
Getting started
Open Rules and add a rule to one of the five label slots. Each rule defines which products to match and what value to assign.
For a starting point, click Choose a purpose on the Rules page. Choose a purpose, such as grouping by stock level, then adjust the thresholds and label names. Check the result on a real product before saving. You can edit the saved rules at any time.
Open Apply to see exactly which variants would change. Nothing is written until you apply.
Apply when the preview looks right.
How rules are evaluated
Rules run top to bottom and the first match wins. A variant that matches no rule keeps its current value; each attribute also has a setting to clear the value instead when nothing matches.
All conditions within a rule must match. To match any of several values of one field, such as three spellings of a product type, choose Multiple values and enter one per line: "matches any of" is true when one of them matches, and "matches none of" only when none of them match. To match either of two different fields, add a second rule with the same value.
Product title, variant title, vendor and product type can be matched partially, not just exactly. That covers stores that write the distinction into the product name — matching "men" in the title to set gender, for example. Put the narrower wording higher up: a title holding two of the words matches whichever rule comes first.
A rule set to all products has no conditions, so it matches everything. In the list it is marked "Default" instead of a number, always sits at the bottom, and is evaluated last. An attribute has at most one default, and you do not have to set one.
The preview shows which rule was used, so you can tell why a variant got the value it did.
Values that change per variant
A rule can write a fixed value, or read the value from each variant: the product handle, the variant SKU, the vendor, the product type, or a metafield. Reading the value means one rule covers a whole catalog, instead of needing one rule per value. You can put a prefix in front of the value that is read, or use a mapping table to replace store values with the ones you want in the label.
The product handle is the useful one for grouping. Google Ads cannot split product groups by item group ID, so the variants of a single product cannot be treated as one unit unless you put something product-level into a custom label.
If a variant has no value to read, the app checks the next rule. Add a default rule with a fixed value to cover these variants.
Merchant Center keeps at most 1,000 unique values per custom label, and each value must be 1–100 characters. Anything past that is ignored for reporting and bidding without reporting an error, so the preview counts the unique values before you apply.
Product information
Besides custom labels, rules can set the attributes the Google & YouTube channel sends to Merchant Center: age_group, condition, gender, size_type and size_system.
These accept only the values Google defines, so they are chosen from a list rather than typed. A wrong value gets the product disapproved, not just ignored.
Gender, age group and size are required for apparel. Condition is optional for new products and required for used and refurbished ones.
MPN is also here, and it can be filled from each variant's SKU. That is only correct if you make the product yourself. If you resell someone else's product, an SKU you invented stops Google matching the product and reduces its visibility, so leave MPN empty in that case.
Custom product is the one attribute stored per product rather than per variant. Setting it to true tells Google the product has no GTIN, MPN or brand, so use it only for goods you made yourself. On a product that has a barcode it stops the GTIN being sent. Because it is one value per product, conditions that differ between variants are ambiguous: the first variant's result is used, and the preview says how many products were affected.
Where the values are written
Values are written to metafields in the mm-google-shopping namespace, which is what the Google & YouTube channel reads. Custom product is a product metafield; everything else is a variant metafield.
The app writes only values that differ from the current values. Running the same rules again without changing the product data makes no further changes.
Automatic updates
Inventory and price change without anyone editing a product, so labels drift out of date. Turn on automatic updates for an attribute and the app re-evaluates a product whenever it or its inventory changes. Automatic updates are available on the Pro plan and above.
Adding products to or removing them from a collection, or changing a collection's conditions, also re-evaluates those products. Deleting a collection or changing its handle may not. If labels no longer match your rules, preview and apply manually.
Automatic updates skip the preview step. Every write is still recorded in History and can be reverted.
In History they appear as one entry per hour rather than one per product, so a sale that changes hundreds of products does not bury the runs you started yourself.
Undoing a change
History records every write with its value before and after, and keeps the most recent runs. Any run still in History can be reverted.
Reverting only touches values that still hold what this app wrote. If you or another app changed a value since, it is left alone and reported as skipped.
Feed quality
Feed quality finds missing GTINs, GTINs used by more than one variant, GTINs that are not valid barcode numbers, and missing SKUs. An invalid GTIN usually means an internal code was typed into the barcode field. A variant can hold several barcodes, and the Google & YouTube channel sends only the first one as the GTIN, so if that one is not a valid GTIN, no GTIN reaches Google at all. Merchant Center shows no error for this, so the product stays listed without a GTIN. A duplicate GTIN is the one to watch: Merchant Center uses it to decide whether two listings are the same product, so a duplicate quietly merges products that are not the same.
All of these can be edited in bulk on that page and saved together.
If you already keep GTINs in a spreadsheet, paste two columns — SKU, then GTIN — instead of typing them. Rows are matched by SKU, never by the order you paste them, because the order on screen is Shopify's and will not line up with your file. A preview shows what would change, which SKUs matched nothing, and which were skipped because the same SKU is used by more than one variant.
Rows with an empty GTIN are ignored, so pasting cannot clear a value. Each GTIN is checked for length and check digit before anything is written, which catches the values a spreadsheet quietly damages — a long number turned into scientific notation, or a leading zero dropped.
GTINs can also be matched by product handle and variant name instead of SKU, which is what you need when your variants have no SKU in Shopify yet. SKUs themselves can be pasted the same way, always matched by product handle and variant name; they are not validated, because a SKU is your own identifier and there is no standard to check it against.
Limits
One run checks up to 50 variants on Free and up to 5,000 on Pro, and tells you if it stopped early. On Scale the app checks your whole catalog and applies changes in the background; large catalogs take a few minutes and show progress. Automatic updates (Pro and above) evaluate one product at a time, so these limits do not apply to them.
Gift cards are excluded by default, from label rules, quality checks and the supplemental feed. You can change this in Settings.
Products whose status is not Active (draft, archived and so on) are always excluded, because they are not sent to Google.
Supplemental feed (Scale)
The Google & YouTube channel sends your products to Merchant Center, but some attributes are unavailable through the channel. For titles, it uses the product title or SEO title; for descriptions, it uses the product description or SEO description. A supplemental feed lets you add or replace values, including images, for Google without changing your Shopify product data.
The feed is built from rules, like custom labels: on the Rules page, click Edit on a column such as title and add rules. Columns not in the table can be chosen from "Add an attribute". Text columns take a fixed value, a variant SKU, a vendor, a product type, a handle, or a product or variant metafield. URL columns (such as image_link) take a fixed URL or a metafield that holds a URL.
The title and description columns can also be built from a template that joins fields, such as {vendor} {product_title}; the description column converts HTML and rich-text metafields to plain text. In a template, a product that has no value for a field it refers to gets only the rest of the template, so narrow the rule with a condition, or read the metafield directly, when only some products have it. Nothing is written to Shopify.
Some columns take several values (additional images and videos, for example). There, every matching rule adds its values instead of the first match winning, a fixed value can list one per line, and a list-type metafield contributes all of its items.
Keywords can be removed from the title, short title and description on the supplemental feed page. Google does not allow promotional text in the title, such as free shipping or sale wording. It applies only to columns that have rules, and only to values read from product data, not to text typed as a fixed value or in a template. A keyword is removed anywhere it appears, so keep it long enough to be specific. Your product data in Shopify is not changed.
Putting your shop name in the brand column is only correct for goods you manufacture, private label, or customise yourself. A wrong brand can lead to disapproval or a mismatch with what people search for.
Videos must be 6 to 240 seconds, 500 MB or less, at least 720p, and in a 9:16, 16:9 or 1:1 ratio.
Yes/no columns (is_bundle, adult) are chosen from a list, because Google disapproves items with any other value. Delivery-control columns (excluded_destination, included_destination, pause, shopping_ads_excluded_country) can stop ads for matching items, so the feed status page shows how many rows they affect. Specification columns (dimensions, weight, multipack) check the format before saving: a number with a unit such as 20 cm, or a whole number. Shopify dimension and weight metafields are converted automatically.
Use the Google product category column only when Google's automatic category is wrong; there is no need to override one that is already correct. Search the official categories by name, full path, or numeric ID and pick a result. The app stores and sends the language-independent numeric ID, so the value does not change with your display language.
To connect it: open Supplemental feed, paste one item ID from any product in Merchant Center (it looks like shopify_JP_123_456; the middle part identifies your account), verify it, copy the feed URL, and turn serving on. In Merchant Center, add a supplemental data source with a scheduled fetch from that URL, once a day. Do not share the URL anywhere else.
The feed is updated once a day, and you can update it at any time from the Supplemental feed page. The page shows how many rows were generated and when the feed was last fetched. Merchant Center decides what is accepted, so check the data source's status there after the first fetch.
The app cannot see which products Merchant Center disapproved. If you want to replace images that were rejected, put the replacement URL in a metafield and write a rule that reads it.
Contact
If something is not working or you are unsure how to set up a rule, email us. Include your store domain and what you were trying to do.