Getting Started
Sandbox and live mode
How sandbox mode differs from live, and how to graduate your team.
Every team starts in sandbox. Sandbox lets you build and test the full API surface without worrying about deliverability, domain verification, or compromising real recipients.
What’s different in sandbox
| Behaviour | Sandbox | Live |
|---|---|---|
| API endpoints | Same. | Same. |
| API keys | sk_test_… | sk_live_… |
Email from address | A ZevSend-owned default sender. | Your verified domain. |
| SMS sender label | A shared sandbox sender. | Your approved sender ID, or the platform default. |
| Recipient delivery | Allowed recipients only (your own verified addresses). | Anyone. |
| Suppressions | Tracked but isolated to your team. | Tracked and enforced platform-wide. |
| Webhook events | Fire as normal. | Fire as normal. |
| Dashboard volume metrics | Visible but flagged sandbox. | Counts toward your billable usage. |
Allowed recipients in sandbox
In sandbox, we only deliver to recipients that have been verified on your team. This is the safety net that lets you put the API on a staging environment without risk. Add and verify recipients from the dashboard under Settings → Verified recipients.
Sending to an unverified address still returns 202 Accepted and
shows up in the dashboard, but the message terminates with
failed and a clear reason — no spam leaves the platform.
Going live
To switch to live mode you’ll need to:
- Verify at least one domain. This is the brand identity
we’ll use as the
fromfor email and the brand context for SMS and WhatsApp. - Submit your brand details. Customer support email, legal name, and a support URL. These are what we use to keep ZevSend a trustworthy place to receive a message from — and what recipients see when they ask “who is this?”.
- Request a go-live review. From the dashboard, click Go live. We review and either approve or come back with questions.
Once approved, your test-mode API keys keep working for the
sandbox flow, and a separate sk_live_ key takes over for
production traffic. Both can run side by side.
Switching keys at runtime
Use sk_test_ and sk_live_ keys to target sandbox or live
explicitly. Your code never needs to branch on environment —
the key implies the mode.
const apiKey =
process.env.NODE_ENV === 'production'
? process.env.ZEVSEND_LIVE_KEY
: process.env.ZEVSEND_TEST_KEY; Updated at, Thursday, October 1, 2026