Which app, which store, which call.
Record deprecated calls per app and store, identify the services that made them, and put the fleet in deadline order. Tokens stay on your infrastructure.
Manual checks are “not operationally viable”. “We need a programmatic, automated, machine-readable way to monitor deprecated and breaking API usage across apps and stores.”Partner agency managing ~200 custom apps · Shopify developer community
Deadline-ordered fleet queue
The output of sunsetlog report: one row per app, shop and deprecation. Fictional sample data, not a customer.
| Deadline | App / shop | Deprecation | Source | Calls | Last seen |
|---|---|---|---|---|---|
| −4 d2026-09-26 · shopify | catalog-syncfictional-north.myshopify.com | Shop.productsfeed migration target 2026-10 | shopify_onlyno service reported it | 1 presence | 09-30 05:41 |
| 1 d2026-10-01 · shopify | reviewsfictional-lune.myshopify.com | Shop.productVariantsSDK API 2025-04 | attributedsync-worker · catalog.ts:88 | 312 | 09-30 05:58 |
| 1 d2026-10-01 · estimate | loyalty-pointsfictional-verde.myshopify.com | REST /products.jsonSDK API 2025-10 | sdk_onlycatalog-worker | 86 | 09-29 22:10 |
| 61 d2026-11-30 · shopify | catalog-syncfictional-atelier.myshopify.com | Collection.productsCountfeed migration target 2026-10 | shopify_onlyno service reported it | 1 presence | 09-28 13:02 |
| unknownno deadline evidence | loyalty-pointsfictional-sud.myshopify.com | Order.customerSDK API unstable | sdk_onlywebhooks · order.ts:41 | 9 | 09-27 09:15 |
Keep collection on your infrastructure
A Node fetch wrapper and a standalone Go CLI. No hosted account required.
Wrap your Shopify calls
Aggregate the deprecation and served-version headers per app, shop and service. Optional call-site capture points to your code.
Poll the custom-app feed
Read deprecated_api_calls.json using environment-variable references. Shopify tokens never leave your infrastructure.
Get the queue
Reconcile exact identities and order by deadline. Unmatched feed entries remain shopify_only; sunsetlog never guesses the source.
Install a CLI archive and SDK tarball from a release. npm publication is pending. Source and setup guide (repository access may be required until public launch).
const { wrapFetch, fileSink } = require('@sunsetlog/shopify');
const shopifyFetch = wrapFetch(fetch, {
app: 'reviews', service: 'sync-worker',
sink: fileSink('./events'), callsite: false
});
// Use shopifyFetch in your Shopify HTTP adapter.
sunsetlog poll --config stores.yaml --out events
sunsetlog report --events events --out .
Empty and partial results are explicit
Examples of CLI states; this page does not run the collector.
No deprecated calls recorded
Either the fleet is clean, or nothing is instrumented. Wrap fetch and poll custom apps. A clean report is not proof of clean traffic.
Read the setup guidetoken_env, never a token value. The entire config is rejected before any network call.With a valid config, a per-store 401 leaves other stores running and exits non-zero. Run report separately for the successful stores.
fail fictional-verde.myshopify.com: HTTP 401 ok fictional-north.myshopify.com: 1 feed row # poll exits 2; successful events remain local
What sunsetlog cannot see
- Dev Dashboard apps have no Shopify-side feed. For them, the SDK is the only signal: only instrumented calls can be attributed.
- Calls outside instrumentation, including Postman calls with a Dev Dashboard app's token, cannot be attributed by anyone but Shopify.
- Missing deprecation headers, deprecated resource properties and HTTP adapters that bypass wrapped fetch are blind spots. This is not a completeness guarantee.
- No Storefront API or webhook coverage. SDK verification uses recorded headers and local mock servers, pending live development-store verification.
- The SDK never reads response bodies. It inspects GraphQL request query text only for an operation name; bodies, variables, tokens and query strings are never emitted.
Run 20+ Shopify apps? Pre-order the hosted feed.
The collector is free. The hosted machine-readable fleet feed and deadline alerts are not built yet: this is a pre-order / design-partner offer for agencies running 20+ apps. We build the hosted service only after a signed paid commitment.
Pre-order terms are set by the founder. No card is taken on this page; no price or refund terms are implied.