Why a Shopify Change Shows an Unknown Author
An "Unknown" author in SO: Product History & Revert means Shopify does not expose an attributable store timeline event for that kind of change. It does not mean the history entry failed. The entry can still record what changed even when it cannot name the person.
Check the event category before treating Unknown as an error
The attribution boundary is exact. Only create, delete, publishing, unpublishing and status changes carry an attributable Shopify event. Changes to title, description, price, tags, variants, metafields and images are logged with author "Unknown."

Product history covers a wider set than Shopify attribution. It tracks product create, update and delete events, plus variant, image, metafield, SEO and collection-membership changes. Check the event category first: a name is available only for the attributable set, while the recorded change remains available for inspecting the affected field.
Find the caveat on each history surface
The app surfaces the Unknown-author caveat in three places rather than limiting it to one history view:
- Every "Changed by" column includes a tooltip.
- The product history page displays a banner.
- The plan feature carries a hint.
Separate Shopify changes from app actions
Every revert, point-in-time restore and deleted-product restore is recorded under the staff member who triggered it. The app resolves that identity from the online access token, so these operations have a different attribution source from Shopify product webhooks.
A save from the in-app product editor follows another path. Shopify receives the write through the shop's offline token, but the history record uses the name of the staff member who submitted the save.
A deleted-product restore recreates the product from its last recorded state and always creates it as a draft. Publishing it back to sales channels is opt-in and off by default, while the restore remains recorded under the staff member who triggered it.
Read the patch and checkpoint for the changed value
Each change is stored as a JSON Patch and appended to the change log. A full product checkpoint is written every so often. To reconstruct the product at a chosen moment, the app reads the newest checkpoint at or before that moment and applies the changes recorded after it; a newer checkpoint does not remove an earlier point in time.
Narrow the history page by changed field, change type, date range or free text. For an Unknown author, those filters isolate the relevant entry without assigning a name that Shopify did not provide.
Choose a field revert or point-in-time restore
You can revert an individual field to its previous value. Before confirmation, the revert displays a before-and-after comparison. For variant fields, that preview includes price and compare-at price, so you can evaluate an Unknown price edit from the two recorded values.
Point-in-time restore has a defined scope. It writes only differing title, description, handle, vendor, product type, tags, status, template and SEO fields. Variants, images, metafields and collections stay untouched and remain individually revertible.
Revert operations are idempotent, so the same revert cannot be applied twice. Before writing to Shopify, the app records the intended write in a short-lived Redis ledger. The worker drops the parts of the incoming webhook diff covered by that ledger but keeps a real edit delivered in the same webhook.
Distinguish Unknown from unavailable history
Retention produces a different result from an Unknown author. A restore to a moment older than the plan's retention window is refused with the date the available history starts, rather than returning a newer state. Reverts and snapshots are unlimited on every plan; plans differ only by tracked-product count and history length.
A store at its tracked-product cap gets no history for new products, so a later deletion of one of those products has nothing to restore from. The app shows that warning on the home page and in Billing.
Open history from the Shopify product action menu
History is available per product, and an admin link extension places the same entry in the product's action menu in Shopify admin. Open that entry, inspect the Unknown row, then choose between reverting an individual field and reverting the entire product to a historical state.
More posts on the app are on the blog.