Publish/Unpublished Product to Market

Hi everyone,

I’m looking for guidance on the best way to track product updates when products are included or excluded from Shopify Markets catalogs, in a scalable way.

Context

  • We have ~250 Markets, each with its own catalog (one region per Market)

  • Currently, we use product_feeds/incremental_sync for all product-related use cases

  • This includes generic product updates as well as Market catalog include/exclude changes

Problem

  • For generic product updates, incremental_sync triggers multiple webhook calls

  • A single bulk product update results in one event per Market

  • With ~250 Markets, this causes excessive webhook traffic and data churn

We considered using products/update, which would reduce generic product updates to a single webhook, but it does not cover Market catalog include/exclude changes, so it doesn’t fully solve our use case.

What I want to understand

  • Is product_feeds/incremental_sync the recommended approach for Market catalog membership changes?

  • Is there an alternative webhook or API to track catalog include/exclude changes without per-Market fan-out?

  • Or is the expected Shopify pattern to accept multiple events and handle batching/deduplication downstream?

Any best practices or recommendations would be greatly appreciated.

Hi @Rushabh_Shah

Thanks for connecting here, I’ll address the question you have below:

Is product_feeds/incremental_sync recommended for catalog membership?

Yes, this is the correct approach for tracking catalog include/exclude changes.

Is there an alternative without per-Market fan-out?

Unfortunately, there is no aggregated “catalog membership changed” webhook that provides a single event with all affected Markets.

is the expected Shopify pattern to accept multiple events and handle batching/deduplication downstream ?

Yes, we’d recommend implementing downstream batching, deduplication, and use EventBridge/Pub-Sub for scale. See this doc for more info:

Thanks @Liam-Shopify ,

There is no any alternative for this?

Scenario:
Markets: 250
Bulk product update: 5000

Webhook fired: 5000 * 250 = 12,50,000

We need to handle it within 5Sec. As Shopify having 5Sec timeout. Also each 250 webhook are same as it is product level update.

Can you suggest some alternative which help this details in more reliable way?

Yes, this is expected behavior with Shopify Markets.

At the moment, product_feeds/incremental_sync is the correct and supported way to track Market catalog include/exclude changes. These changes are Market-specific by design, so Shopify emits events per Market, which is why you’re seeing the fan-out behavior.

There is currently no separate webhook or API that reports catalog membership changes globally without per-Market events. The products/update webhook is intentionally generic and does not cover Market-level catalog changes.

The recommended pattern is to accept these multiple events and handle batching, deduplication, or consolidation on your side. Many large integrations rely on downstream processing to reduce churn rather than expecting Shopify to collapse Market-specific updates into a single event.

Hello @Ankit_Saxena ,

Thanks for providing this details.

Is there any rate limit from Shopify for firing webhooks?

Like: 250 markets

Bulk Products Update: 30,000

In this case webhook count is : 30,000 * 250 = 75,00,00

Is there any limitations from Shopify?

Is there any other shopify is going to be introduced in future scopes?