🔒 SEO Vault

How to track changes to your Shopify metafields — and see who or what edited them

Your metafields hold the structured data and custom fields a lot of your SEO leans on, and any app with write_products (or write_metaobjects) access can change them through the Admin API — usually in bulk, usually without telling you. The catch is that Shopify keeps no version history and no field-level audit log for metafields, so there's no native screen that shows who edited a value, what it was before, or when. That makes "tracking changes" something you have to set up before anything moves, not look up after the fact.

Step by step

  1. Map what can write to your metafields, so you know your exposure first. In Settings > Apps and sales channels, open each app and check its access: anything with write_products or write_metaobjects (often shown as "manage products") can edit your product and collection metafields, including the ones feeding your structured data. Note which apps actually touch SEO fields. And don't count on Shopify's own logs — even on Shopify Plus the store activity log records staff and account actions, not field-level metafield edits, so it won't tell you which value changed.
  2. Capture a baseline now, because you can't track changes against nothing. Export your current metafield values so you have a dated "before" to compare against: Matrixify exports product and collection metafields to a spreadsheet, or you can pull them with a GraphQL bulk operation against the Admin API. Keep that export safe — it's the only copy of today's values Shopify isn't storing for you, and every future comparison depends on it.
  3. Get notified when a resource is touched. Subscribe to the products/update and collections/update webhooks (Settings > Notifications, or via the API), which fire when those resources — including their metafields in most cases — are edited, and log each event's timestamp and payload somewhere you can read it. That gives you a time-stamped trail of when something changed, but it won't name the app or isolate the exact field, so you still diff the new value against your baseline to see what actually moved.
  4. Turn that into a real audit log without building and babysitting a pipeline. Running a webhook listener, a diff job and a value store is genuine engineering to maintain. The shortcut is a daily snapshot of every metafield value (products and collections): each change is flagged the day it happens — with the app most likely responsible named from its access scope and the change timing — and the previous value restores in one click. Since Shopify keeps no history, that daily snapshot becomes the who/what/when record you wanted, plus the undo it never gave you.

Source: Shopify.dev: metafields and Admin API access scopes (write_products / write_metaobjects); Shopify Help Center: webhooks and store notifications

Related fixes

Never lose your SEO to an app again

SEO Vault keeps a daily snapshot of every SEO field on your store — meta titles, descriptions, alt-text, tags, handles (products AND collections) — and emails you the moment something changes in bulk, with the likely app responsible. One click restores yesterday's state, just the SEO fields. Free to monitor and get alerted; $14/mo for 1-click restore.

Protect my SEO — free →