A hard bounce is a permanent email delivery failure: the receiving mail server has rejected a message because the recipient address, mailbox, or destination cannot accept it as sent. In most cases, you should immediately suppress that address from future sends, because retrying the identical message to the same address is unlikely to succeed.

Hard bounce definition in plain language

A hard bounce happens when an email cannot be delivered for a reason that is not expected to resolve on its own. The most familiar example is an address that does not exist, such as taylor@company.example after Taylor has left the company and the mailbox was deleted. Other permanent failures can involve an invalid domain, an address rejected by the recipient system, or a policy rejection that requires a sender-side change before another attempt could work.

The phrase “hard bounce” is widely used in email operations, but it is a practical classification rather than one perfectly uniform protocol label. At the SMTP level, a receiving server commonly communicates permanent failures with a 5xx reply code or an enhanced status code beginning with 5.. The IANA status-code registry defines 5.XXX.YYY as a permanent failure: resending the message in its current form is not likely to work without a change to the message or destination.

That distinction matters. A hard bounce is not simply “an email that did not arrive,” and it is not necessarily proof that the recipient never existed. It is a signal that the next action should usually be stop sending, inspect the diagnostic information, and correct the underlying problem if appropriate.

For senders, the safest default is straightforward:

  • Suppress recipient addresses that produce confirmed recipient-level hard bounces.
  • Preserve the raw SMTP response or delivery-status notification for diagnosis.
  • Do not treat every 5xx response as an address-quality issue without reading the code and message.
  • Fix sender configuration, authentication, or content problems before retrying policy-related permanent rejections.

Why hard bounces matter for deliverability

Hard bounces matter because they reveal a mismatch between the people or systems a sender intends to reach and the addresses actually being mailed. Repeatedly attempting delivery to nonexistent or permanently unreachable recipients wastes sending volume, corrupts campaign reporting, and can signal weak list hygiene to mailbox providers and sending platforms.

Email deliverability is not the same thing as an SMTP acceptance event. A message can be accepted and later filtered to spam, while a hard bounce is a more immediate, explicit delivery failure. Still, a rising hard-bounce rate is a meaningful warning sign because it often travels with other quality issues: old contact lists, purchased or scraped addresses, broken signup flows, poor identity resolution, or inadequate suppression handling.

The direct effect on campaign performance

Every hard bounce reduces the number of people who can receive a campaign. If a newsletter is sent to 100,000 recipients and 3,000 addresses permanently fail, the practical reachable audience is smaller than the list size suggested. Open rate and click rate can also look weaker or more volatile when the denominator includes addresses that cannot possibly receive the message.

For transactional email, the cost is more concrete. A hard bounce on a password-reset request, account verification email, invoice, or security alert can prevent a user from completing an important action. The problem may be an innocent typo entered during signup, but the result is the same: the user does not receive the message and support burden rises.

The indirect effect on sender reputation

Mailbox providers use many signals to decide whether to accept, rate-limit, spam-folder, or reject mail. They do not publish a universal formula that turns a specific hard-bounce percentage into an inbox-placement outcome. However, consistently mailing invalid addresses is a poor quality signal and can coincide with behavior that providers do scrutinize, including weak authentication, recipient complaints, low engagement, and unexpectedly large volume spikes.

Google’s sender guidelines require all senders to authenticate mail sent to personal Gmail accounts with SPF or DKIM, use TLS, and maintain valid forward and reverse DNS. Senders who send more than 5,000 messages per day to Gmail accounts must meet additional authentication requirements, including SPF, DKIM, and DMARC. Authentication will not turn an invalid mailbox into a valid one, but it reduces the chance that a sender-side identity problem is mistaken for a recipient-address problem.

Why suppression protects future sends

A suppression list is a record of recipients an application must not mail under specified conditions. Permanent recipient failures belong on that list because the sender has already received evidence that the address is undeliverable. Suppression turns bounce feedback into a durable control: instead of rediscovering the same invalid address in the next campaign, the application filters it before attempting delivery.

This is especially important when several systems can trigger messages. A marketing platform, product application, CRM, billing tool, and support desk may all hold the same address. If only one system suppresses hard bounces, the other systems can continue generating failed mail. The best operational model centralizes the decision or propagates suppression events quickly to every sender.

Hard bounce vs. soft bounce

The usual contrast is between a hard bounce and a soft bounce. A hard bounce is treated as permanent; a soft bounce is treated as temporary. The key word is treated. The classification should guide an automated response, but diagnostics and provider behavior still matter.

A temporary failure often appears as a 4xx SMTP reply or an enhanced status code beginning with 4.. The IANA registry describes this category as a persistent transient failure: the message may be valid, but a temporary condition has delayed or caused abandonment of delivery attempts, and sending later may succeed. Examples include a full mailbox, a temporary receiving-server problem, or a rate limit.

A permanent failure commonly appears as a 5xx SMTP reply or enhanced code beginning with 5.. A typical recipient problem might contain 550 5.1.1, often associated with an unknown or invalid mailbox. But the enhanced code and the human-readable diagnostic text should be evaluated together; receiver implementations vary, and the same three-digit SMTP code can cover more than one condition.

A practical comparison

SituationTypical classificationRecommended first action
Recipient mailbox does not existHard bounceSuppress the recipient address immediately
Recipient domain does not existHard bounceSuppress after verifying the event is genuine and correctly attributed
Mailbox is temporarily fullSoft bounceRetry according to provider retry behavior; do not immediately suppress
Recipient server is temporarily unavailableSoft bounceRetry later and monitor for a persistent pattern
Sender is blocked by a recipient policyOften a hard or permanent rejectionInvestigate authentication, reputation, content, and policy details before retrying
Message is rate-limitedUsually a soft bounce or deferralSlow the sending rate and retry later

The crucial nuance is the policy-rejection row. A permanent rejection from a recipient server may be classified as a hard bounce by an email service, but the recipient address might be completely valid. Suppressing the address alone would not solve a sender reputation issue, a missing authentication record, an invalid envelope sender, or an unsuitable message pattern.

That is why mature bounce handling has two tracks:

  1. Recipient remediation: suppress an address that is confirmed invalid or permanently unavailable.
  2. Sender remediation: investigate configuration, compliance, or reputation failures that could affect many valid recipients.

How SMTP status codes relate to hard bounces

SMTP is the protocol used to transfer email between mail systems. When a receiving system declines a delivery attempt, it returns a reply code. The first digit communicates the broad outcome: 2xx indicates success, 4xx indicates a temporary failure, and 5xx indicates a permanent failure.

Enhanced status codes add detail in the form class.subject.detail, such as 5.1.1. RFC 3463 defines these richer codes for delivery status reports, tracking, and diagnostics. The first digit carries the same broad classification: 2 for success, 4 for a persistent transient failure, and 5 for a permanent failure.

Common examples you may see

The following examples are useful for triage, but they should not be treated as a complete universal dictionary. Mailbox providers and gateways may add their own wording, wrap errors, or use codes in provider-specific ways.

  • 550 5.1.1: commonly indicates that the recipient mailbox does not exist or is unavailable.
  • 550 5.1.0: can indicate an address-related problem where the specific detail is not provided.
  • 553 5.1.3: can indicate an invalid recipient-address syntax.
  • 554 5.7.1: often indicates a security or policy rejection rather than a nonexistent mailbox.
  • 451 4.7.1: often indicates a temporary policy, reputation, or rate-related issue and should not normally be treated as a permanent invalid-address signal.

The phrase after a code is diagnostic, not decorative. For example, “user unknown” and “mailbox not found” point toward recipient suppression. “Message rejected due to policy” points toward a sender or message investigation. A system that blindly labels all 550 responses as invalid contacts may delete useful, valid recipients from a list while failing to fix a campaign-wide authentication problem.

Store the evidence, not only the label

When recording a hard bounce, keep more than a Boolean field such as bounced = true. At minimum, retain the event timestamp, provider message ID, recipient address, sending domain, SMTP reply, enhanced status code if available, diagnostic text, campaign or transaction identifier, and classification source.

This detail lets an operator answer questions that aggregate charts cannot:

  • Did failures begin immediately after a DNS or authentication change?
  • Are they concentrated at one recipient domain?
  • Do they affect a specific signup source or imported segment?
  • Are they address failures, content failures, or policy failures?
  • Has the same recipient failed more than once through different sending systems?

Your sending provider’s event format may differ, but email event systems commonly expose an event type such as a bounce, along with message metadata and bounce information. Build your processing around stable IDs and documented event payloads rather than trying to infer delivery outcomes from opens or missing clicks.

How to calculate hard bounce rate

A hard bounce rate measures the share of attempted or accepted-for-delivery messages that resulted in hard bounces during a defined period. The precise denominator should be documented because dashboards and providers can count sends differently. Some use attempted recipients, some use accepted messages, and some remove messages suppressed before delivery from the denominator.

A clear general formula is:

Hard bounce rate = (hard-bounced recipients / delivered-attempt recipients) × 100

For campaign reporting, “delivered-attempt recipients” usually means unique recipient addresses for which the sending system actually attempted delivery after applying pre-send suppression. Do not include contacts that were skipped because they were already unsubscribed, suppressed, or invalidated before the send. They matter for list quality, but they were not new delivery attempts.

Worked hard-bounce-rate example

Suppose a product team sends an onboarding campaign to 20,000 unique recipient addresses.

  • 300 addresses were already on the permanent suppression list, so the system does not attempt to send to them.
  • The platform attempts delivery to 19,700 recipients.
  • 118 recipients produce confirmed hard-bounce events.

The hard bounce rate is:

Hard bounce rate = (118 / 19,700) × 100
Hard bounce rate = 0.5989%
Hard bounce rate ≈ 0.60%

The campaign’s hard bounce rate is therefore 0.60%. The 300 pre-suppressed contacts should be reported separately as skipped recipients, not counted as new bounces in this campaign. Combining old suppressions with new failures would make it harder to tell whether list acquisition and validation are improving.

Recipient count versus message count

A rate based on recipients is often more useful than a rate based on messages. Imagine the same invalid address receives three triggered emails in a day because suppression processing is delayed. A message-based calculation would count three hard-bounce events, which exaggerates the number of bad contacts but correctly reveals a system failure: the application kept sending after the first event.

Use both views when possible:

  • Unique hard-bounced recipients reveal the scale of address-quality problems.
  • Hard-bounced messages reveal how effectively suppression is enforced after feedback arrives.

For transactional mail, calculate rates by message type as well. Password resets, receipts, welcome emails, and product alerts can have different recipient sources and failure patterns. A high hard-bounce rate in welcome mail may point to a broken signup form; a spike in invoice failures may indicate stale customer records or a CRM import problem.

Common causes of hard bounces

Hard bounces have several causes, and treating them all as “bad addresses” leads to weak remediation. The most useful diagnostic framework separates recipient problems, domain problems, sender problems, and data-pipeline problems.

1. The mailbox does not exist

This is the canonical hard bounce. The local part of the address is wrong, the user left the organization, the mailbox was deleted, or a forwarding arrangement ended. In an SMTP diagnostic, this may appear as “user unknown,” “no such user,” or “mailbox not found.”

A deleted mailbox is not necessarily a data-entry error. Business contacts change roles, university addresses expire, consumers abandon old accounts, and companies close or rename domains. Even a list built through legitimate opt-in will decay over time. The appropriate response is normally permanent suppression, while preserving a record of the address and reason for auditing.

2. The domain is invalid or no longer receives email

An address can be syntactically valid while its domain has no working mail route. A user may mistype gmal.com instead of gmail.com; a company may let a domain expire; or a domain may exist without being configured to receive mail.

Domain failures deserve a little extra care. A temporary DNS or routing problem can look serious, and provider classifications may vary. If the event is clearly a permanent domain failure, suppress the address. If the diagnostics point to a temporary network issue, treat it as a transient event and allow the provider’s retry process to run.

3. Invalid syntax or malformed input

Some malformed strings fail before the email reaches a recipient mailbox. Examples include missing @ signs, invalid domain formatting, accidental spaces, or forms that accept display-name text in an email field. Modern applications should block obvious syntax errors at entry, but syntax validation alone cannot establish that a mailbox exists.

Client-side validation improves user experience, while server-side validation protects data integrity. Neither replaces bounce processing. An address can meet syntax rules, have a valid domain, and still belong to no one.

4. Stale, purchased, scraped, or poorly sourced lists

High hard-bounce rates frequently begin upstream of the email platform. Contacts copied from old spreadsheets, obtained from third parties, collected without confirmation, or scraped from public websites may be outdated, fabricated, role-based, or unsuitable for the intended communication.

The operational fix is not merely to send more cautiously. Stop using the source until it can be evaluated. Identify the source field on each contact record, compare bounce rates by source and acquisition date, and quarantine segments that materially underperform. Consent, relevance, and address quality should be assessed before a large send, not after an avoidable failure spike.

5. Broken signup or account-update flows

A sudden increase in hard bounces can be a product defect. Common examples include a form field mapped to the wrong database column, a mobile keyboard causing a recurring typo, an API integration truncating addresses, or an import that concatenates names and email values incorrectly.

Look for a sharp change by event time, app version, landing page, locale, referral source, or client device. If all failures share a pattern such as a missing top-level domain or a duplicated suffix, the cause may be easy to repair. Correcting records and fixing validation is more valuable than repeatedly cleansing the same broken input stream.

6. Recipient-server policy or security rejection

Some permanent bounces occur because the receiving server rejects the sender or message, not because the recipient is invalid. Missing or misaligned authentication, an incorrect sending identity, poor IP or domain reputation, suspicious content, malformed headers, or an unsafe attachment can lead to a policy rejection.

These events should trigger a sender-level investigation. Verify SPF, DKIM, DMARC alignment where applicable, the envelope sender, return-path configuration, TLS behavior, DNS, message formatting, and sending patterns. Do not assume the recipient needs to be removed if the diagnostic suggests that a valid mailbox rejected your mail due to policy.

How to reduce hard bounces before sending

The cheapest hard bounce is the one prevented before an SMTP transaction begins. Prevention is a combination of better data collection, careful validation, consent-based acquisition, list maintenance, and technical sending discipline.

Use layered address validation

A useful validation process has several layers, each solving a different problem:

  1. Syntax validation: reject clearly malformed input, including missing separators and invalid domain structure.
  2. Domain validation: check that the domain is plausibly configured to receive mail, while recognizing that DNS results can change.
  3. Mailbox-risk assessment: identify disposable, mistyped, risky, or otherwise questionable addresses where appropriate for the use case.
  4. User confirmation: send a confirmation or verification email for signup flows where confirmation is appropriate.
  5. Ongoing feedback: process bounces, complaints, unsubscribes, and user updates continuously after the address enters the database.

No single layer is perfect. SMTP-level mailbox probing can be unreliable or discouraged by recipient systems, and catch-all domains may appear to accept any local part even when a particular person cannot receive mail. Use verification as risk reduction, not as a promise that every message will be delivered.

For quick checks before importing contacts or inviting users, a free email address verification tool can help identify obvious address-quality issues. It should complement, not replace, real-time bounce suppression after mail is sent.

Confirm addresses at the moment of collection

Double opt-in or confirmation-based account verification can substantially reduce typos and addresses entered without the owner’s involvement. It also creates a record that the person controlled the mailbox at the time of signup. Whether double opt-in is the right choice depends on the product, jurisdiction, audience, and conversion trade-offs, but confirmation is especially valuable for marketing subscriptions.

For product accounts, make email confirmation part of a clear user journey. Tell the user where the confirmation was sent, allow correction of a typo, offer a resend flow with rate limiting, and avoid locking the user into an unchangeable invalid address. A hard bounce on a confirmation email is often a recoverable product interaction if the UI helps the user fix it.

Maintain list hygiene continuously

List hygiene is not a quarterly spreadsheet cleanup. It is the ongoing process of keeping contact data current and mailing only recipients who can and should receive the message. The core controls are simple: immediate hard-bounce suppression, unsubscribe honoring, complaint handling, re-engagement or inactivity policies, and source-level quality reporting.

A contact’s lifecycle should include an explicit deliverability state. For example, a record might be active, unconfirmed, temporarily_deferred, permanently_suppressed, or unsubscribed. Avoid a single generic “inactive” flag that hides whether the cause was a bounce, an unsubscribe, a complaint, a manual block, or a user-requested account closure.

How to handle a hard bounce after it happens

Once a hard bounce arrives, speed and correctness are more important than guesswork. Your system should make a deterministic decision for the next send while retaining enough context for humans to investigate exceptions.

A practical hard-bounce workflow

  1. Receive the event: accept provider webhooks, event streams, or delivery-status notifications through an authenticated endpoint.
  2. Verify and deduplicate it: associate the event with the correct message and recipient; account for retries and duplicate delivery of webhooks.
  3. Classify the failure: use the provider’s bounce type, SMTP reply, enhanced status code, and diagnostic text.
  4. Apply suppression: immediately block future sends to addresses confirmed as permanently undeliverable.
  5. Route systemic failures: create an alert when policy, authentication, or domain-level failures affect several recipients.
  6. Update reporting: record the event against the relevant campaign, message type, source, and recipient lifecycle state.
  7. Offer a correction path: if the recipient is an active user, allow them to update their email address through a secure account flow.

Suppression should be idempotent

An event-processing system should tolerate the same bounce notification more than once. In software terms, suppression should be idempotent: applying the event twice must yield the same final state as applying it once. Use a stable event identifier when available, or deduplicate with a combination of provider message ID, recipient, event type, and timestamp window.

This detail prevents noisy analytics and protects against race conditions. If a provider retries a webhook or your queue replays an event, an idempotent handler will not create duplicate audit records, duplicate customer notifications, or unpredictable state changes.

Do not automatically erase the contact

Suppressing an email address is not the same thing as deleting the customer or contact record. Deletion can remove consent history, purchase information, account relationships, and the explanation for why the address should not be mailed. Keep only the data that is necessary and lawful for your business, but distinguish the communication status from the broader customer record.

A user may later return and provide a corrected email address. In that case, add the new address as a new deliverable identity, confirm it as appropriate, and leave the old hard-bounced address suppressed. Do not silently reactivate a known-bad address because the contact record was edited elsewhere.

Diagnosing hard-bounce spikes

A single hard bounce is usually a recipient-data event. A sudden cluster is an operational incident until proven otherwise. The pattern of failures determines whether you should clean a list, repair an integration, or pause sending while you investigate a sender-level problem.

Questions to ask first

Start with the dimensions that expose common causes:

  • Did the rate rise at a specific time or after a deployment?
  • Is one campaign, template, transactional stream, or API client affected?
  • Are failures concentrated at a single recipient domain?
  • Do diagnostics say “user unknown,” or do they reference policy and authentication?
  • Did the affected contacts come from one import, partner, form, or acquisition channel?
  • Did sending volume, IPs, domains, return paths, or DNS records change?

A jump in 5.1.1 errors across addresses from a recently imported list probably points to data quality. A jump in 5.7.1 errors at multiple mailbox providers following a domain configuration change points toward sender authentication or policy. Both may be labeled permanent bounces by a platform, but they demand very different fixes.

Segment before acting

Do not make a global list decision based on a blended bounce rate. Segment results by recipient domain, country, source, signup date, campaign, sender domain, and message category. A 1% overall rate can conceal a 20% failure rate in one imported segment, while a low overall rate can hide a serious configuration issue affecting a strategically important recipient domain.

For example, if password-reset messages to one enterprise customer’s domain start failing after that customer changes its mail gateway, the correct response is not to suppress every affected user permanently without review. Preserve the diagnostics, contact the customer through an alternate channel if appropriate, and investigate whether the domain’s policy now requires a sender-side adjustment.

Hard bounces in transactional and marketing email

The same underlying delivery event has different business implications depending on the email stream. Transactional messages are triggered by an individual action or account event; marketing messages are sent to an audience segment. Both require bounce suppression, but their prevention and remediation workflows differ.

Transactional email

A hard bounce on transactional mail often means the product needs to help a specific user recover. If a confirmation, alert, or receipt bounces, consider notifying the user in-app, showing an account banner, or asking them to update their address during their next authenticated session. Do not expose sensitive content in those notices, and do not repeatedly resend a failed message hoping that an invalid mailbox will recover.

Transactional systems also need strong event correlation. Store the application user ID, message purpose, provider message ID, and recipient address so a bounce can trigger the appropriate action. A hard bounce on an account-verification email may mean the account remains unverified; a hard bounce on a billing notice may require a secure alternative notification method.

Marketing and lifecycle email

For campaigns, hard bounces should immediately remove the address from future marketing sends. The bigger question is where the address came from and why it was still in the audience. Review imports, signup confirmation rules, dormant-contact reactivation, CRM syncs, and manual list uploads.

Marketing teams should not try to “win back” a hard-bounced address through more email. If there is a legitimate alternate channel and a valid relationship, the person can be invited to update their details there. Otherwise, respect the evidence from the recipient server and stop attempting delivery.

Shared infrastructure, separate reporting

If the same domain sends both transactional and marketing mail, reporting should still separate the streams. A decline in marketing-list quality should not obscure reliability monitoring for password resets and receipts. Likewise, a configuration issue affecting transactional mail should not be buried inside a large campaign dashboard.

An email API should make this operational separation practical through message metadata, tags, event handling, and clear sending identities. Review the email API setup guides and event documentation before wiring bounce processing into production, particularly if multiple services can send on behalf of the same application.

A hard-bounce prevention checklist

Use this checklist before high-volume campaigns and as part of regular deliverability operations:

  • Validate email input on both the client and server side.
  • Confirm addresses where the signup or subscription workflow supports it.
  • Record contact source, acquisition date, consent state, and last update date.
  • Check imported lists for malformed addresses, duplicate records, and unexpected domains.
  • Process hard-bounce events automatically and suppress confirmed invalid recipients immediately.
  • Keep raw SMTP diagnostics and provider event data for investigation.
  • Separate recipient-invalid failures from sender-policy failures in dashboards.
  • Authenticate sending domains with the applicable SPF, DKIM, and DMARC configuration.
  • Monitor bounce rates by stream, recipient domain, source, and sending domain.
  • Pause or narrow a send when a new segment produces an unexpected hard-bounce spike.
  • Provide users a secure way to correct an email address after a failed confirmation or notification.
  • Test webhook retries, deduplication, and suppression propagation across every application that sends mail.

Conclusion

A hard bounce is a permanent delivery-failure signal, not just a disappointing campaign statistic. Most often, it means the recipient address should be suppressed immediately. Sometimes, especially with policy-related 5xx rejections, it means the sender must repair authentication, configuration, reputation, or message practices before sending again.

The best hard-bounce strategy combines prevention and fast feedback: collect cleaner addresses, validate them in layers, confirm them when appropriate, process bounce events automatically, and preserve diagnostic detail. When bounce handling is built into the email pipeline rather than treated as a post-campaign cleanup task, lists stay healthier, transactional messages become more reliable, and deliverability decisions become much easier to explain.

FAQ

Is a hard bounce always a fake or invalid email address?

No. A hard bounce often means the mailbox does not exist, but permanent failures can also be caused by recipient-server policies, authentication problems, sender reputation, or message issues. Read the SMTP and enhanced status codes plus the diagnostic text before deciding whether only the recipient should be suppressed or whether the sender configuration needs repair.

Should I resend an email after a hard bounce?

Usually, no. For a confirmed recipient-level hard bounce, suppress the address and do not retry the same destination. If the failure was a sender-side policy rejection, correct the underlying issue first; a retry may be appropriate only after that change and only when the recipient address itself remains valid.

What is a good hard bounce rate?

There is no universal threshold that guarantees inbox placement because mailbox providers assess many signals and providers may count events differently. The practical goal is to keep hard bounces as close to zero as possible, investigate meaningful increases quickly, and compare trends by list source, mail stream, and recipient domain rather than relying only on one blended benchmark.

Does a 5xx SMTP error always mean a hard bounce?

A 5xx response indicates a permanent SMTP failure, but it does not always mean the recipient address is invalid. A 5.1.x address-related response often supports suppression, while a 5.7.x policy or security response may require sender-side remediation. Classification should use the full event context.

How quickly should I suppress a hard-bounced address?

Immediately after receiving and validating a confirmed recipient-level hard-bounce event. Real-time or near-real-time suppression prevents another application, campaign, or triggered workflow from attempting the same known-undeliverable address.