Before and after inventories
Showing the shipped fixture. Replace either side with your own export, then compare.
Drift record
Paste two exports, or load the fixture, to see a record.
FOR SHOPIFY AGENCIES AND MERCHANTS
Paste two customer-authorized app inventories. This page lists added or removed apps, scopes, webhook topics, and authorization-state changes. It does not connect to Shopify, request credentials, or say an app is safe. Everything runs here; nothing is uploaded.
Have a GraphQL appInstallations dump instead of inventory JSON? Capture → inventory, then compare here.
Showing the shipped fixture. Replace either side with your own export, then compare.
Paste two exports, or load the fixture, to see a record.
Shopify agencies reviewing an install often get a verbal “we added a reporting app.” The useful question is which granted scopes and webhook topics actually changed. This record answers that from two exports you already have — it does not pull live Shopify data and does not interpret Shopify policy.
Shopify distinguishes scopes an app declares from scopes a merchant granted. Put the granted values in the export. A future API adapter should keep that distinction; this page never infers a scope from an app’s name.
Each inventory is JSON you control. Required fields: captured_at
(ISO 8601), api_version, source,
authorization_state, and apps (each with a
unique id and string lists for scopes and
webhooks). Incomplete exports are rejected. If a source
cannot provide a field, leave the capture out rather than inventing a
value.
{
"captured_at": "2026-08-24T10:00:00Z",
"api_version": "2026-07",
"source": "merchant-export",
"authorization_state": "active",
"apps": [
{ "id": "app-analytics", "scopes": ["read_analytics"], "webhooks": ["app/uninstalled"] }
]
}
Export only app metadata (ids, granted scopes, webhook topics, authorization state, API version, source, and capture time) from a store you are authorized to administer. Paste the earlier export as Before and the later export as After. The page lists added and removed apps, scopes, and webhooks. It does not connect to Shopify or decide whether a change is allowed.
No. Comparison runs entirely in your browser from the two JSON exports you paste. There are no accounts, no Shopify API calls, and no upload.
The record is marked inconclusive. A reversed capture order is never treated as an unchanged result.