Global Catalog REST API Migration: Plan Before Nov 2026

A practical Global Catalog REST API migration plan for Shopify merchants and app developers before the November 2026 shutdown, with GraphQL mappings and a cutover checklist.

Global Catalog REST API Migration: Plan Before Nov 2026

Shopify is retiring the Global Catalog REST API in November 2026, and any store, ERP or app that still reads catalogue data through it will stop receiving responses. A Global Catalog REST API migration means moving those calls to the GraphQL Catalog API, remapping fields such as price and compare-at price, and testing the cutover before the deadline rather than after it.

This guide is written for Shopify merchants, operations managers and developers who maintain multi-market, multi-currency or B2B catalogues. It covers what the endpoint does today, who is affected, how the GraphQL equivalents map, how to handle compare-at prices now returned as list_price, and a testing checklist you can run before you switch production traffic.

What the Global Catalog REST API does today

The Global Catalog REST API exposes catalogue data across markets: products, variants, prices per market and currency, and the relationships between a product and the catalogues it belongs to. Integrations use it for price syncs, marketplace feeds, ERP imports and B2B price lists.

On 2 November 2026 those REST endpoints stop responding. Requests will fail, and any scheduled job that depends on them will either error out or silently write nothing. If your price sync runs nightly, the first symptom is usually stale prices in one market, not a hard crash.

Who is affected

  • Multi-market stores with per-market pricing or currency conversion.
  • Multi-currency stores where catalogue prices differ from the default market.
  • B2B catalogues with company-specific price lists and quantity rules.
  • Apps and middleware that poll catalogue endpoints on a schedule.
  • ERPs and PIMs that push or pull catalogue data through REST.

If you only sell in one market in one currency and never touch catalogue endpoints, you may be unaffected. Confirm that before assuming it.

GraphQL Catalog API equivalents

The GraphQL Catalog API is the replacement. The concepts are similar, but the shape is different: you request exactly the fields you need, and catalogue data is reached through connections and nodes rather than flat REST resources.

REST concept GraphQL equivalent Notes
Catalogue list catalogs connection Paginate with cursors
Catalogue detail catalog(id:) Returns market, company location or app catalogue
Products in a catalogue catalog.products connection Cursor pagination, not page numbers
Variant price in a market Price fields on the variant within the catalogue context Request per-market price fields explicitly
Compare-at price list_price Renamed; see below
Market assignment Market and catalogue relationships Check which catalogue a market resolves to

Two practical differences matter. First, GraphQL uses cursor-based pagination, so any loop that used page and limit must be rewritten. Second, you must request price fields explicitly; if you forget them, you get products with no price data and no error.

Mapping the fields you rely on

Start by listing every field your integration reads today. For each one, find the GraphQL field, then note whether the type changed. Common surprises:

  • Money values arrive as objects with amount and currency code, not a single number.
  • Compare-at price is now list_price.
  • Some fields are only available inside a catalogue context; requesting them globally returns null.
  • Rate limits are calculated differently, so batch sizes that worked on REST may need adjusting.

Team planning a project with sticky notes on a glass wall

Handling compare-at prices as list_price

The rename from compare-at price to list_price is the change most likely to break a price sync quietly. If your code reads the old field name, it will not error in every case; it may simply return nothing, and your store keeps showing the old compare-at price or drops the strikethrough entirely.

A safe approach:

  1. Find every place your code reads compare-at price, including scripts, middleware and spreadsheet imports.
  2. Replace it with list_price in the GraphQL query.
  3. Confirm the returned value is a money object and format it accordingly.
  4. Add a validation step that flags products where list_price is lower than price, since that usually indicates a mapping error.
  5. Log a sample of before-and-after values for one week before you trust the sync.

Treat this as a data change, not just a code change. Run a report comparing old and new values across a few hundred products before you switch production jobs over.

Testing and rollback checklist

Work through this before you cut over:

  • Inventory every REST catalogue call, including cron jobs and third-party tools.
  • Build the GraphQL queries and confirm field coverage against a real catalogue.
  • Test with a multi-market store, not a single-market sandbox.
  • Verify list_price values against current compare-at prices.
  • Check cursor pagination handles catalogues larger than one page.
  • Confirm rate-limit behaviour under your normal batch size.
  • Run old and new syncs in parallel and diff the output.
  • Keep the REST path available as a fallback until the deadline.
  • Document how to revert if prices look wrong after cutover.
  • Schedule the final switch at least a month before November 2026.

A parallel run is the single most useful step. If the GraphQL job writes the same prices as the REST job for two weeks, you have evidence. If it does not, you have found the bug while you still have time.

Build in-house or bring in a Shopify app team

Migrating a single store with one market is a few days of work for a developer who knows GraphQL. Migrating a multi-market store with B2B price lists, an ERP and a marketplace feed is a project: field mapping, parallel runs, validation reports and a rollback plan.

Signs you should bring in help:

  • Catalogue data feeds more than one system (store, ERP, marketplace, PIM).
  • You have per-market or per-company pricing rules that are not fully documented.
  • Nobody on the team has shipped a GraphQL integration to production.
  • The integration was built by an agency or contractor who is no longer available.

Our team builds and migrates Shopify apps and catalogue integrations, including REST-to-GraphQL moves, and we take over existing projects. If you want the migration handled end to end, see our Shopify app development services. You can also compare how we work across products on the products page.

Whatever route you choose, start now. The deadline is fixed, and the quiet failures, stale prices and missing compare-at values, are the ones that cost sales.

Related reading

FAQ

Frequently asked questions

When exactly does the Global Catalog REST API stop working?

The shutdown date is 2 November 2026. After that, REST catalogue endpoints stop responding, so any integration still calling them will fail or return no data. Plan your cutover at least a month earlier so you have time to fix issues.

What replaces compare-at price in the GraphQL Catalog API?

Compare-at price is returned as list_price. It is a money object containing an amount and a currency code, so update your formatting code as well as the field name. Validate that list_price is not lower than price, which usually signals a mapping error.

Do single-market Shopify stores need to migrate?

Not always. If you sell in one market and one currency and no part of your stack calls catalogue endpoints, you may be unaffected. Check your apps, cron jobs and any ERP or PIM integration before assuming you are safe.

Can I run REST and GraphQL catalogue syncs at the same time?

Yes, and you should. Run both in parallel and compare the output for one to two weeks. If the GraphQL job writes the same prices and catalogue data as the REST job, you have evidence the migration is correct before you switch production traffic.

How long does a Global Catalog REST API migration take?

A single-market store with one integration is typically a few days of development plus testing time. Multi-market, multi-currency or B2B catalogues with ERP and marketplace feeds take longer because of field mapping, parallel runs and validation.

What breaks first if I do nothing?

Scheduled jobs usually fail quietly rather than loudly. The first visible symptom is often stale prices in one market or missing compare-at prices, which can go unnoticed for days. Monitor your sync logs and add alerts before the deadline.

Need your catalogue migrated before the deadline?

We migrate Shopify catalogue integrations from REST to GraphQL, including multi-market and B2B setups, and we take over existing projects. Tell us what your integration does today and we will map the migration.