Send test emails
Simulate delivered, bounced, complained, and suppressed events with SendPing test addresses — without harming your domain reputation.
While building your integration it is important to exercise the different deliverability outcomes — a delivery, a hard bounce, a spam complaint, a suppressed recipient. SendPing provides reserved test addresses that trigger each event reliably, so you can verify your webhooks, event handling, and suppression logic without mailing real people.
Available test addresses
| Address | Simulates |
|---|---|
delivered@test.sendping.co | A successful delivery — the email advances to delivered. |
bounced@test.sendping.co | A hard bounce (an SMTP 550 5.1.1 "Unknown User"). The email moves to bounced and the recipient is auto-suppressed. |
complained@test.sendping.co | The message is delivered but the recipient marks it as spam — a complained event, and the recipient is suppressed. |
suppressed@test.sendping.co | The recipient is already on your suppression list, so the send is skipped with status suppressed. |
Send to a test address
import { SendPing } from 'sendping';
const mb = new SendPing('mb_xxxxxxxxx');
const { data, error } = await mb.emails.send({
"from": "Acme <hello@yourdomain.com>",
"to": ["bounced@test.sendping.co"],
"subject": "Testing a bounce",
"html": "<p>This should hard-bounce.</p>"
});
console.log({ data, error });Labeling test runs
The delivered, bounced, and complained addresses support plus-labeling: add any string after a + (e.g. delivered+signup@test.sendping.co) and the event still fires, but the recipient address now identifies that specific test run. This is useful for correlating webhook callbacks back to the flow that triggered them.
delivered+signup@test.sendping.co
delivered+password-reset@test.sendping.co
bounced+import-batch@test.sendping.cosuppressed@test.sendping.co address does not support labeling.