Forum Discussion
Discrepency between bounce count on segment vs SQL
You’re not looking at the wrong table. These two approaches are simply looking up for different things.
The hard_bounced = true filter in segmentation reflects the current email status on the user profile. This means your segment includes all users whose email is marked as hard bounced, as long as they’ve received any message on any channel since 2025-12-03—such as email, push, SMS, in-app messages, Content Cards, or banners.
In contrast, the USERS_MESSAGE_EMAIL_BOUNCE_SHARED table in Query Builder contains individual email bounce events. The 297 rows you’re seeing represent actual email sends that hard bounced within the timeframe you queried, which is why this number is much smaller.
It’s also worth noting that the segment filter “last received any message” applies across all channels, not just email. As a result, users who are hard bounced for email but have recently received messages via other channels will still be included in the segment.
If you want closer alignment while staying within segmentation, try switching the filter to “last received email after 2025-12-03” along with hard_bounced = true. This will give you results that are much closer to what you see in Query Builder.
Ultimately, it comes down to your use case. If you need real-time segmentation, using the last received email filter will get you there. If you need precise, message-level bounce data and attribution, Query Builder is the better option. Hope this helps!
Related Content
- 4 months ago