I did a bit of a deep dive on this and I believe I’ve found a workaround. For context, the use case I experienced was importing contacts from our SaaS application userbase. After initial import some percentage of these contacts were marked as “Contact has bounced globally” without having sent any emails i.e. we had no historical basis to filter on to identify which of these users should be added to our global suppression list and/or removed from the CRM.
I had hoped the “hs_email_is_ineligible” property, which is a hidden property on contact records, would be populated & available via the API but no such luck. I also looked at:
- hs_email_bad_address
- hs_email_bounce
- hs_email_customer_quarantined_reason
- hs_email_hard_bounce_reason
- hs_email_hard_bounce_reason_enum
- hs_email_is_ineligible
- hs_email_optout
- hs_email_quarantined
- hs_email_quarantined_reason
- hs_emailconfirmationstatus
- hs_legal_basis
- hs_sa_first_engagement_descr
The only field I was able to verify across 1,000+ globally bounced records as consistently being populated every single time when the contact record was marked as a global bounce (tested by navigating to the Contact record in the UI) was hs_email_hard_bounce_reason_enum. In every case this field was marked as “OTHER”.
To filter these contacts in the list view, I combined the filters:
- Email hard bounce reason is any of “Other”
- Recent sales email open date is unknown
- Last marketing email open date is unknown
Translation: Give me all the contact records where we have “other” listed as the email hard bounce reason BUT also where we have nothing in terms of the last date/time the contact opened an email from our team. This isn’t a silver bullet since there will still be use cases where you’ll have email history with a contact & then they transition into a “global bounce” state. For those, I’ve found adding the unsubscribe filter helps since it seems those get bucketed into “Other” as well.