How to Join _Sent to _Bounce for Deliverability Audits
Two valid join paths
_Bounce can join to _Sent on the four engagement keys (JobID, ListID, BatchID, SubscriberID) when you need bounces tied to a specific deployment.
For subscriber-level bounce history independent of a single send, join on SubscriberKey instead.
Send-level bounce audit
SELECT
s.JobID,
s.SubscriberKey,
s.EventDate AS SentDate,
b.EventDate AS BounceDate,
b.BounceCategory,
b.SMTPCode
FROM _Sent s
INNER JOIN _Bounce b
ON s.JobID = b.JobID
AND s.ListID = b.ListID
AND s.BatchID = b.BatchID
AND s.SubscriberID = b.SubscriberID
WHERE b.BounceCategory = 'Hard bounce'
AND b.EventDate >= DATEADD(day, -30, GETDATE())
Deliverability checklist
- Separate hard vs. soft bounces — hard bounces often trigger auto-unsubscribe.
- Cross-check _Subscribers.Status after hard bounces to confirm list hygiene.
- In child BUs, profile attributes may require Ent._Subscribers.
Related reference: _Sent · _Bounce · _Subscribers