Catalog sync sounds like plumbing — boring, invisible, presumed to work. Until you run a flash sale, you change a price at 10am, and at 10:42am buyers are still seeing the old price in the app. Or you launch a new SKU at 9am and it does not appear in the app until you manually trigger a republish. Or inventory shows 12 units left in the app while Shopify has sold out, and you ship oversells.
The platforms that handle this well do so silently. The platforms that handle it poorly do so silently too, until they don't. This piece is about what good sync looks like, the failure modes to ask vendors about, and the edge cases that separate the production-grade systems from the demo-grade ones.
What should sync, and when
A complete sync covers: product titles and descriptions, variants (size, color, etc.), prices and compare-at prices, inventory by location, images, metafields, collections, and tags. Each of these needs to propagate to the app within seconds of being changed in Shopify admin, with no manual step.
The "within seconds" part is where many platforms fall short. Some sync only on a schedule — every 15 minutes or every hour. Others sync on Shopify webhook trigger but with a queue that can lag during peak periods. The right architecture is webhook-driven with low-latency propagation, falling back to scheduled reconciliation as a safety net rather than a primary mechanism.
Inventory: the most painful edge case
Inventory is where bad sync causes real money loss. Two failure modes: oversell (app sells items that are out of stock, brand has to cancel and refund) and artificial scarcity (app shows out of stock when items are available, buyer leaves empty-handed). Both cost LTV and trust.
The fix is real-time inventory reads at the moment of cart-add and checkout, not just at the moment of catalog sync. The app should query current inventory before letting the user add to cart, and check again at checkout confirmation. If inventory drops between the two, the buyer is told before they pay. Most apps do not do this; the savings on infrastructure are not worth the customer experience cost.
Price changes during a sale
Flash sales and time-limited promotions are where price sync gets tested. A brand changes prices at 10am sharp. The mobile-web visitor sees the new price immediately because the storefront is live. The app visitor sees the old price for as long as the sync lags. If the sync runs every 15 minutes, the app is selling at the wrong price for up to 15 minutes after the sale starts.
The fix is the same as for inventory: webhook-triggered price updates with sub-second propagation, plus a real-time price read at the moment of cart-add and checkout. If a buyer is in checkout when the price changes, the platform decides which price wins — usually the one that was active at cart-add — and shows the buyer a clear message if anything shifted.
Variants and metafields
Variants (sizes, colors, packs) and metafields (custom data attached to products) are where sync subtlety hides. A new size added to a product needs to appear in the app variant picker. A metafield used for product copy ("ingredients," "fit guide") needs to propagate when the brand edits it.
The mistake some platforms make is syncing product-level data without syncing variants or metafields. The product page in the app shows the old size set, or the ingredient list is from three months ago. This is preventable but only if the sync architecture is designed for it from the start.
Webhooks vs polling
Shopify provides webhooks for every catalog change: products/update, inventory_levels/update, collections/update, and more. A well-architected sync subscribes to these webhooks and updates the app data layer in response. A poorly-architected sync polls Shopify on a schedule and discovers changes after the fact.
Webhooks are the right answer for any change-driven system. Polling is the right answer only for reconciliation — a periodic full sweep that catches missed webhooks. If your platform is polling-primary, you have a system that will be 0–N minutes behind reality at any given moment. If it is webhook-primary, you have a system that catches up within seconds.
“Sync that is "usually right" is sync that is sometimes wrong. The day it is wrong is the day you find out which kind of platform you bought.”— Operations lead, anonymous
Questions to ask a platform vendor
- When I change a price in Shopify, how long until the app reflects it? Acceptable answer: under 10 seconds.
- When inventory hits zero on a SKU in Shopify, can the app still let a buyer add to cart? Acceptable answer: no, with real-time check at cart-add.
- What happens if Shopify is briefly unreachable during checkout? Acceptable answer: graceful degradation with retry, not silent failure.
- Are metafields synced for use in product copy? Acceptable answer: yes, all metafields the brand exposes.
- How do you handle variants added to existing products? Acceptable answer: immediate sync with the product, no manual republish.
- What is your reconciliation cadence? Acceptable answer: daily, as a safety net behind webhook sync.
If a vendor cannot answer these questions confidently, the sync architecture is probably not what you need. Demo the platform during a price change in real time before committing; it tells you everything.