ZevSend Docs
Sign up

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

BehaviourSandboxLive
API endpointsSame.Same.
API keyssk_test_…sk_live_…
Email from addressA ZevSend-owned default sender.Your verified domain.
SMS sender labelA shared sandbox sender.Your approved sender ID, or the platform default.
Recipient deliveryAllowed recipients only (your own verified addresses).Anyone.
SuppressionsTracked but isolated to your team.Tracked and enforced platform-wide.
Webhook eventsFire as normal.Fire as normal.
Dashboard volume metricsVisible 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:

  1. Verify at least one domain. This is the brand identity we’ll use as the from for email and the brand context for SMS and WhatsApp.
  2. 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?”.
  3. 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