Eloïse Chizat
04/23/2026, 9:30 AMconversations (incremental | append+deduped) and conversations_parts (incremental | append+deduped)
👉 I have missing conversations_parts : statistics.count_conversation_parts on conversation does not match the number of parts for this conversation in conversations_parts
Am I missing something ?
Thanks 🙏Mark Grivnin
04/28/2026, 5:32 AMstatistics.count_conversation_parts actually count as a part? Could you check that it counts the same things that conversation_parts count?Eloïse Chizat
04/28/2026, 7:26 AMcount_conversation_parts (integer) Total number of conversation parts.
👉 a part is a message, a note, an assignment...
It should be the same : when we call the Intercom API for a conversation, we get more parts than what's available in the Airbyte table. We’ve manually verified this across several conversations and parts. We've ignored conversations that are missing only one part, but we found some that are missing more than 10 parts.Mark Grivnin
04/29/2026, 10:02 PMconversation_parts is a sub-stream of conversations, if the parent stream hits rate limits or errors during pagination, some conversations may not be fetched at all, meaning none of their parts get synced for that run.
3. 3. Specific missing parts - For a conversation with missing parts, could you compare the updated_at timestamps of the missing parts against the sync schedule? Specifically: Were the missing parts created during a sync run (i.e., after the sync started but before it finished)? Or were they created between two syncs and still missed? This will help us determine whether the issue is with the client-side incremental filter or with conversations not being fetched by the parent stream.Eloïse Chizat
04/30/2026, 8:49 AMMark Grivnin
04/30/2026, 7:06 PMGET /conversations/{id} directly and check the updated_at field on the missing parts? Specifically:
• Do the missing parts have`updated_at = 0`or some other unexpected value?
• Or do they have normal, recent`updated_at`timestamps?Eloïse Chizat
05/05/2026, 8:16 AMMark Grivnin
05/06/2026, 11:17 PMshould_be_synced) dropped them because their updated_at fell just behind the global cursor.
The issue: this filter uses the previous sync's duration (a few minutes) as its lookback, not the configured lookback_window (1 day). So parts even slightly behind the cursor get silently dropped.
You could run a full refresh on conversation_parts to recover missing parts, but the issue will recur on incremental syncs.
I'm filing a GitHub issue on the Airbyte Python CDK repo for this.Eloïse Chizat
05/07/2026, 2:51 PMEloïse Chizat
05/19/2026, 7:27 AMMark Grivnin
05/19/2026, 3:19 PM