Two places show product activity in Shopify: Settings → Notifications → Store activity (the store activity log) and Products → Inventory → Adjustment history for stock changes. That’s the honest starting point, along with the catch that trips up most store owners: Shopify’s native logs are view-only and don’t reliably show field-level before-and-after values. If someone changed a price, rewrote a description, or swapped a metafield, the activity log might confirm something happened without telling you what it was before.
Before you do anything else:
- Note the exact timestamp you suspect the change occurred, down to the hour if possible.
- Export a CSV of the current product data or take a screenshot now, so you have a fixed reference point to compare against later.
Finding Shopify’s native product change history
Open the store activity log from Settings → Users and permissions → Activity log, or search “activity log” from the admin search bar. Each entry lists an actor, an action, and a timestamp, something like “Staff member Jamie Lee deleted product: Wool Beanie” or “App: Stocky adjusted inventory”. It’s a straightforward feed, but it’s not built for detective work.
Three logs matter here, and they don’t overlap as much as you’d expect:
- Store activity log — the broadest record, covering staff actions, app actions, and some channel syncs. It’s the closest thing Shopify has to a general Shopify product activity log.
- Page activity — shown directly on some resource pages (like a specific product or order), giving a narrower, contextual view of edits tied to that one item.
- Inventory adjustment history — found under a product’s Inventory tab, this one is genuinely useful. It records who adjusted stock, when, and by how much, which makes it the most reliable native source for quantity disputes.
Typical entries you’ll encounter: a product deletion, a bulk inventory adjustment, a collection reassignment, or an app-triggered price sync. What you generally won’t find is a clean, exportable timeline of every edit to every field.
Why Shopify’s activity log falls short as an audit trail
The store activity log is view-only and shows a limited number of recent results. You can’t export it, filter it by field, or search it the way you’d search a spreadsheet. Once you scroll past that limit, older entries are simply gone.
The bigger gap is what it never captures in the first place:
- No before/after comparison for description, price, or metafield edits, only a note that something changed.
- No reliable trace through bulk edits, CSV imports, or background jobs, since these often log as a single batch action rather than per-product detail.
- No distinction between a manual staff edit and an automated app correction, unless the actor name happens to make that obvious.
This is why community discussion around tracking product edit history consistently lands on the same conclusion: the native admin records that a state changed, not what the state used to be.
Pro Tip: If you suspect a bulk edit caused the issue, check the timestamp against any scheduled app jobs first. A sync running at 3am is far more likely than a staff member editing 400 products by hand.
The hidden events.json trick for a quick product check
There’s an unsupported shortcut worth knowing, even if it isn’t a permanent fix. Open a product in your admin, look at the URL, and you’ll see something like /admin/products/1234567890. Append /events.json to that same URL structure and load it in your browser while logged into the admin.
Here’s how to use it properly:
- Navigate to the product in question and copy its numeric ID from the admin URL.
- Load the equivalent
/products/{id}/events.jsonpath to pull raw event data for that single item. - Scan the returned JSON for timestamps, event types, and any message text tied to recent changes.
Community threads on this trick note it can reveal partial event data that never surfaces in the standard activity log, but it’s incomplete and entirely unsupported by Shopify. Treat it as an emergency diagnostic, not a dependable Shopify product activity log substitute, and never rely on it in place of an actual backup.
Using the GraphQL Admin API and webhooks for field-level tracking
If you need a genuine audit trail, one that shows exactly what a field looked like before and after every edit, the native admin won’t get you there. The GraphQL Admin API supports subscribing to Product events, including a fields_changed trigger that fires with the specific fields that were modified.
A practical architecture looks like this:
| Component | Role |
|---|---|
| Webhook listener | Receives fields_changed events with the read_products scope enabled |
| Event store | Persists each event with a timestamp, actor context, and changed field values |
| Diff UI | Renders a simple before/after view so non-technical staff can review changes |
The tradeoffs are real. You’ll need deduplication logic, since webhook deliveries occasionally arrive twice. Shopify’s own developer documentation recommends checking the shopify-webhook-id header to filter duplicates before writing to your event store. You’ll also need a retention policy, because an unbounded event log grows fast on a busy catalogue, and someone has to maintain the listener when Shopify updates its API versions.
Third-party apps and import history as a practical shortcut
Not every store needs a custom webhook pipeline. Most solve this with an app instead, and the options split into three rough categories.
- Activity tracker apps log every edit with a visible before/after diff, similar to a version history panel.
- Backup apps take scheduled snapshots of your entire catalogue, letting you restore a prior state if something breaks.
- Import-history tools retain the CSV file used for each bulk update, so you can diff today’s export against last week’s file.
Retention varies by app, so check whether snapshots last 30 days or 12 months before you rely on one during a dispute. Merchants using import history and snapshot CSVs typically get further with rollback requests than those relying on the native log alone. A sensible habit either way: export a CSV immediately before any bulk import, and turn on app-level snapshots for your highest-value fields, price and inventory especially. If you’re comparing backup tools directly, this rundown of Shopify backup plugins is a decent starting point for retention and rollback behaviour.
A step-by-step checklist for investigating a product change
- Write down the exact timestamp and the affected SKU or product ID as soon as you notice the issue.
- Check the store activity log and inventory adjustment history for entries within that window.
- Compare the current product data against your last CSV export or app snapshot to spot the specific field that shifted.
- Review recent app activity and any scheduled jobs that run automatically, since an entry listing “Shopify” as the actor usually points to a background sync or app action rather than unauthorised access.
- If none of that resolves it, raise a support request with the exact timestamp, product ID, and what you expected versus what you found.
Pro Tip: Shopify Support moves faster when you hand them a timestamp and product ID upfront rather than a general description like “something changed on my product page.”
Operations lead perspective: what to prioritise when something breaks
Contain first. If a broken price or description is live and risking sales, unpublish or hide the product before you start investigating. Gather evidence second, screenshots, CSVs, app logs, timestamps, all before memory fades or logs roll off. Recovery comes last: use an app’s rollback feature if you have one, or hand developers a clean support ticket with everything attached.
— Jamie Moss
An adjacent fix: fewer manual edits, fewer mystery changes
Every investigation above exists because someone edited a product directly in the admin, and direct edits are exactly where untracked changes creep in. MerchUp takes a different approach: instead of staff editing live product pages by hand, descriptions get built and staged in one central workspace, then published in bulk once they’re approved.
That matters for change tracking specifically. MerchUp’s drag-and-drop templates and preview step mean fewer one-off admin edits happening outside any review process, and bulk publishing replaces the scattered manual updates that make activity logs so hard to read in the first place. It isn’t a backup tool, and it won’t replace an events feed or a snapshot app. What it does is shrink the number of untracked edits you’d ever need to investigate. If you’re managing a catalogue where descriptions change often, see how the publishing workflow works or check current plans to see whether centralising content edits fits your setup.
Sources
- Activity logs in the Shopify admin
- See Product changelog history
- Shopify Product Changelog: Track Every Change Made to Your Catalogue | Importier Blog





Comments
No comments yet — be the first to share what you think.