Data & Analytics
Shopify discount codes disappear from one Airbyte stream
Two Shopify discount streams can disagree while syncs look healthy. Reconcile source IDs, cursor coverage and failed lookups before changing code.
October 27, 2026
Marketing reports say two active Shopify discounts do not exist. The discounts are present in a bulk-extracted stream but absent from a second Airbyte discount-code stream. An Airbyte issue reports exactly that disagreement. The issue does not yet prove why the records were missed, so changing a null-handling branch before comparing the source request path would be premature.
Start with the missing IDs
Capture the Shopify IDs, updated_at values, status and owning discount for each missing code. Compare them across the source API, the bulk stream and the incremental stream at the same time. Establish whether the parent discount appeared in that run's listing. If it did not, a later per-discount lookup cannot explain the absence by itself.
Follow the cursor and pagination
Review the connection's starting point, last saved cursor, pagination logs and any source filters. A discount last updated before the incremental floor may never be requested again even though it remains active. Check whether an initial snapshot included it and whether later backfills are supported by the installed Shopify source connector. A green sync indicates that the requests completed; it does not certify full business-object coverage.
Repair with a measured backfill
Choose a bounded historical window or approved reset only after the missing IDs and cursor gap are understood. Snapshot the current destination, then reconcile distinct discount and code IDs before and after the backfill. Test the effect on downstream joins and campaign attribution. Keep a scheduled comparison between Shopify's source count and the warehouse's active-discount set so future gaps surface before a promotion goes live.
Adovo’s view
Data quality begins where two supposedly equivalent views disagree. Treat that disagreement as an opportunity to define the object and its lifecycle precisely, not as an excuse to trust whichever stream is easier to query.
