Michael Sonnleitner
05/29/2026, 7:18 AMdiscount_code stream.
The problem: a number of discount codes that clearly exist in Shopify never show up in our destination. This happens regardless of the sync mode — we see the gap both when relying on incremental syncs with a lookback window and when doing a full reset and re-fetching everything from scratch. So it doesn't look like a typical state/cursor issue where a lookback window would normally close the gap.
A few details that might help:
- Connector version: 3.4.0 (Shopify source)
- Affected stream: discount_code
- Reproducible across both incremental (with lookback window) and full-refresh / full reset
- The missing codes do exist and are queryable directly in the Shopify admin / API
Questions:
1. Is the discount_code stream in 3.4.0 known to under-fetch in certain cases (e.g. only returning codes tied to specific price rule / discount types, or only DiscountCodeBasic while skipping other discount kinds like automatic, BXGY, free-shipping, or app-managed discounts)?
2. Does the stream depend on its parent stream (price_rules / discounts) in a way that would silently drop child codes if the parent record isn't picked up?
3. Are there pagination or API-version limitations in 3.4.0 (REST vs GraphQL Admin API) that could cause records to be missed?
Any guidance on root cause and whether this is fixed in a newer connector version would be much appreciated. Thanks!kapa.ai
05/29/2026, 7:18 AMdiscount_codes stream in the Shopify source connector:
1. Discount Types Covered by the Stream The discount_codes stream uses the GraphQL Bulk API (IncrementalShopifyGraphQlBulkStream) and queries the codeDiscountNodes endpoint. The query uses inline fragments to handle multiple discount types: [Shopify streams source]
• DiscountCodeApp
• DiscountCodeBasic
• DiscountCodeBxgy
• DiscountCodeFreeShipping
So the connector does attempt to cover multiple discount code types, not just DiscountCodeBasic. However, automatic discounts (which are not code-based) are not part of this stream — they would not appear in codeDiscountNodes by design, as they don't require a code at checkout.
2. Parent Stream Dependency The DiscountCodes stream is not implemented as a substream of PriceRules in v3.4.0. It is a standalone IncrementalShopifyGraphQlBulkStream that queries Shopify's GraphQL Bulk API directly: [Shopify streams source]
class DiscountCodes(IncrementalShopifyGraphQlBulkStream):
bulk_query: DiscountCode = DiscountCode
This means there is no parent stream dependency that would silently drop child codes if a parent record is missed. The stream fetches discount code nodes directly.
3. GraphQL Bulk API Limitations Since the stream uses the GraphQL Bulk API, Shopify's bulk operation limitations apply. The documentation notes: [Shopify limitations]
> For all Shopify GraphQL Bulk API requests, Shopify's bulk operation limitations apply. Different request types can have different limitations.
One known issue worth checking: if you receive a "The BULK job couldn't be created at this time, since another job is running." error, a concurrent bulk job may be interfering with the sync. You can check the operation's progress or cancel the in-progress job.
4. Known Missing-Record Issues in Recent Versions Version 3.3.3 fixed a bug where incremental GraphQL Bulk streams could silently skip parent records after a bulk job checkpointed mid-output. The affected streams were: [Shopify changelog]
• metafield_customers, metafield_products, metafield_product_images, product_images, customer_address
discount_codes is not listed as an affected stream for that fix.
The lookback_window_in_days feature added in v3.4.0 is specifically designed to re-fetch records missed due to race conditions or late-arriving updates on incremental syncs — it would not address gaps that also appear in full-refresh/full-reset syncs. [Shopify changelog]
Summary The knowledge sources do not document a known bug specifically causing discount_codes to under-fetch in v3.4.0. Since the issue persists even after a full reset, it is unlikely to be a cursor/state or lookback issue. The most likely areas to investigate (based on available information) are:
• Whether the missing codes are of a type not covered by the four inline fragments (e.g., automatic discounts with no code).
• Whether a concurrent Shopify Bulk API job is interfering with the sync.
• Whether Shopify's own bulk operation limitations are causing partial result sets.
For further investigation, I'd recommend checking the Airbyte GitHub Discussions for similar reports, as the knowledge sources do not contain enough information to confirm a specific root cause for your scenario. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.