<@U04S8PLJWMT> Hi! We're running the Shopify sourc...
# replication-ask-ai
m
@kapa.ai Hi! We're running the Shopify source connector (v3.4.0) and seeing missing records in the
discount_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!
k
Great questions. Here's what the knowledge sources reveal about the
discount_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]
Copy code
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.