Test mode and test addresses
Exercise every outcome, including bounces and spam complaints, without emailing a real person.
A project made as test, and its ss_test_… keys, never reach the mail provider. Messages are accepted, rendered and given simulated delivery events, all labelled simulated. They do not count against your allowance, and a test project does not need a verified domain.
Choose the outcome with the address
The part before the @ decides what happens to each recipient. The domain does not matter.
| Send to | Result |
|---|---|
delivered@anything.test | Delivered. Any other address is delivered too. |
bounced@anything.test | Bounced (bounce@ works too). |
complained@anything.test | Delivered, then reported as spam. |
suppressed@anything.test | Treated as suppressed. |
Simulated outcomes trigger your webhooks as well, with "simulated": true, so you can build and test your handlers end to end. Simulated bounces and complaints never add a real address to your suppression list.
curl -X POST 'https://api.sendsend.email/v1/emails' -H "Authorization: Bearer $SENDSEND_TEST_KEY" -H 'Content-Type: application/json' -d '{
"from": "Acme <hello@anything.test>",
"to": ["delivered@example.com", "bounced@example.com", "complained@example.com"],
"subject": "Try every outcome",
"text": "Hello"
}'See the result per recipient with Retrieve an email, or the totals with Retrieve metrics.
Test mode proves your code handles each outcome. It cannot tell you whether real mail reaches the inbox. For that, send a few real messages from a verified live domain.