✨ NEW! Introducing Postmark’s Retention Add-on

How to test bounces

Along with our Sandbox mode feature, Postmark offers a black hole domain (bounce-testing.postmarkapp.com) to test bounces. This can be useful to test your integrations, allowing you to generate fake bounces in a safe manner, so it won’t affect your sending domain or reputation.

Sending an email to our bounce-testing.postmarkapp.com domain will immediately bounce the message—this will appear as a real bounce in your activity and statistics, as well as post a webhook (if you have this enabled). By default, we classify messages as a hard bounce, but you can test other bounce types too as defined in our Bounce API documentation, and listed below. We have set up a dedicated address for each bounce type, to help you generate a fake bounce for it.
An example recipient address that will generate a soft bounce:

All bounce types listed below are supported:


Email address

Name & Description

HardBounce HardBounce@bounce-testing.postmarkapp.com
Hard bounce — The server was unable to deliver your message (ex: unknown user, mailbox not found).
Transient Transient@bounce-testing.postmarkapp.com
Message delayed or Undeliverable — The server could not temporarily deliver your message (ex: Message is delayed due to network troubles).
Unsubscribe Unsubscribe@bounce-testing.postmarkapp.com
Unsubscribe request — Unsubscribe or Remove request.
Subscribe Subscribe@bounce-testing.postmarkapp.com
Subscribe request — Subscribe request from someone wanting to get added to the mailing list.
AutoResponder AutoResponder@bounce-testing.postmarkapp.com Auto responder — Automatic email responder(ex:"Out of Office" or"On Vacation").
AddressChange AddressChange@bounce-testing.postmarkapp.com Address change — The recipient has requested an address change.
DnsError DnsError@bounce-testing.postmarkapp.com DNS error — A temporary DNS error.
SpamNotification SpamNotification@bounce-testing.postmarkapp.com Spam notification — The message was delivered, but was either blocked by the user, or classified as spam, bulk mail, or had rejected content.
OpenRelayTest OpenRelayTest@bounce-testing.postmarkapp.com
Open relay test — The NDR is actually a test email message to see if the mail server is an open relay.
Unknown Unknown@bounce-testing.postmarkapp.com
Unknown — Unable to classify the NDR.
SoftBounce SoftBounce@bounce-testing.postmarkapp.com Soft bounce — Unable to temporarily deliver message(i.e. mailbox full, account disabled, exceeds quota, out of disk space).
VirusNotification VirusNotification@bounce-testing.postmarkapp.com Virus notification — The bounce is actually a virus notification warning about a virus/code infected message.
ChallengeVerification ChallengeVerification@bounce-testing.postmarkapp.com Spam challenge verification — The bounce is a challenge asking for verification you actually sent the email. Typcial challenges are made by Spam Arrest, or MailFrontier Matador.
BadEmailAddress BadEmailAddress@bounce-testing.postmarkapp.com
Invalid email address — The address is not a valid email address.
ManuallyDeactivated ManuallyDeactivated@bounce-testing.postmarkapp.com Manually deactivated — The email was manually deactivated.
Unconfirmed Unconfirmed@bounce-testing.postmarkapp.com Registration not confirmed — The subscriber has not clicked on the confirmation link upon registration or import.
Blocked Blocked@bounce-testing.postmarkapp.com
ISP block — Blocked from this ISP due to content or blacklisting.
SMTPApiError SMTPApiError@bounce-testing.postmarkapp.com SMTP API error — An error occurred while accepting an email through the SMTP API.
InboundError InboundError@bounce-testing.postmarkapp.com
Processing failed — Unable to deliver inbound message to destination inbound hook.
DMARCPolicy DMARCPolicy@bounce-testing.postmarkapp.com DMARC Policy — Email rejected due DMARC Policy.
TemplateRenderingFailed TemplateRenderingFailed@bounce-testing.postmarkapp.com Template rendering failed — An error occurred while attempting to render your template.

Custom message headers

Rather than sending to the dedicated addresses above, another way to generate fake this is using our " X-PM-Bounce-Type" custom header e.g. X-PM-Bounce-Type: SoftBounce. This works for sending via SMTP and our API.
Example body format:
	"From": "sender@example.com",
	"To": "test@bounce-testing.postmarkapp.com",
	"Subject": "Bounce",
	"TextBody": "This will bounce",
	"ReplyTo": "reply@example.com",
	"TrackOpens": true,
	"TrackLinks": "None",
	"MessageStream": "outbound",
	"Headers": [{
		"Name": "X-PM-Bounce-Type",
		"Value": "SoftBounce"
Example request with CURL:
curl "https://api.postmarkapp.com/email" \
 -X POST \
 -H "Accept: application/json" \
 -H "Content-Type: application/json" \
 -H "X-Postmark-Server-Token: server token" \ 
 -d '{
	"From": "sender@example.com",
	"To": "test@bounce-testing.postmarkapp.com",
	"Subject": "Bounce",
	"TextBody": "This will bounce",
	"ReplyTo": "reply@example.com",
	"TrackOpens": true,
	"TrackLinks": "None",
	"MessageStream": "outbound",
	"Headers": [{
		"Name": "X-PM-Bounce-Type",
		"Value": "SoftBounce"

Things to note

  • These testing options will only work with our black hole domain (bounce-testing.postmarkapp.com).
  • They support camel case and are case insensitive, so soft_bounce@bounce-testing.postmarkapp.com or X-PM-Bounce-Type: soft_bounce will also work.
  • Hard Bounces will act like normal Hard Bounces, and will be added to your suppression list. If you need to test an inactive recipient again, it will need to be reactivated.
  • Spam Complaints are currently not supported (they will default to a Hard Bounce).
  • Bounces via our black hole domain will not be counted towards bounce limits.
  • Each sent message will count as 1 email and will be deducted from your monthly plan.
Last updated May 31st, 2023

Still need some help?

Our customer success team has your back!