## TL;DR

Bounces arrive as events but nothing translates them into contact status, so bounced contacts stay mailable. Create a bounce status field, map hard bounces to it via workflow or integration, and suppress bounced contacts from sends. The gap is the missing event-to-field mapping.

## Error

```text
(No error; the symptom is contacts with known hard bounces still marked mailable and receiving campaigns.)
```

## Steps

1. Check how bounces are recorded: email tool bounce reports, webhook events, or a bounce property. Expected: you find where the bounce data lands.
2. Create or identify a contact status field for bounce state (hard bounced, soft bounced, clean). Expected: a field that represents deliverability.
3. Build the mapping: hard bounce event sets status to hard bounced; a few consecutive soft bounces escalate. Expected: events drive the field automatically.
4. Add bounced status to every send suppression list. Expected: bounced contacts stop receiving mail.
5. Backfill the current bounced contacts from the bounce reports. Expected: the existing damage is contained.

## When to use

- Bounced contacts keep getting emailed.
- An agent syncs bounce events but status never changes.
- After switching email providers.

## When not to use

- Deliverability or spam-complaint tuning (different problem).
- Salesforce bounce handling (different tooling).

## Tool compatibility

- HubSpot email health, workflows, and suppression lists.
- Bounce webhooks from any email provider.

## Variant phrasings

### bounces not updating the contact

The event-to-field mapping is missing.

### hard bounced contacts still mailable

Suppression lists do not include the bounce status.

## Why it happens

Bounce data lives in the email tool while contact status lives in the CRM, and the bridge between them is a mapping nobody built. Each side looks healthy in isolation.

## Edge cases

- Soft bounces from full mailboxes resolve on their own; only escalate after repeats.
- Role addresses (info@, sales@) bounce differently; handle them as a class.
- Re-engaging a hard-bounced contact needs explicit consent handling, not just a status flip.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_sZkcPO9rrJnCDx0-g1I9aA
