Repository navigation
Description
Background
Platforms that provision tenants, and developers who integrate the transactional API (/emails, apps/api/src/transactional/routes.ts), need to test from dev, CI and QA without delivering real mail and without hurting sender reputation.
Waypoint mirrors every send endpoint with a sandbox one (/v1/sandbox/email_messages and the batch variants). Sandbox sends render the template and log the message but never deliver it. Waypoint also stores per-template test-data scenarios, and its hero copy says: "Test, debug, and preview emails with sandbox API endpoints" (API ref, home, docs index).
SendLit already has "send a test to yourself" (#34), which still delivers a real email. There is no way to send through the API without delivering.
Source: Waypoint competitor profile (Oct 2026), takeaway #4.
Proposed fix
- Test mode for transactional sends. Use either test API keys (e.g. an
sl_test_prefix and a key-levelmode: test) or atest: trueflag //emails/testroute, whichever fits the API contract better.- Test-mode requests are validated and rendered exactly like live ones (template, merge tags, attachments).
- They are logged in the activity log with a clear "test" badge.
- They are never handed to the ESP.
- They return the same response shape plus
test: trueand the rendered subject, HTML and text.
- Excluded from accounting. Test sends don't count toward quota or billing, aren't in deliverability rates, don't trigger auto-pause (Auto-pause broadcasts and sequences on high bounce or complaint rates #25), and don't fire customer webhooks unless the receiver opts in (Signed (HMAC) outbound event webhooks to customers #52).
- Saved test data. Each template can store named test-data scenarios (JSON) that are used for previews, "send test" and test-mode calls.
- Tooling coverage. Add test mode to the API contract, the TS SDK (TypeScript SDK for SendLit (for CourseLit campaign sending; CLI-ready, MediaLit-style) #61) and the MCP tools. Document it in the API docs.
Acceptance criteria
- A test-mode call returns 2xx with the rendered output, creates a log entry marked test, and no ESP transport call happens (asserted in tests).
- Validation errors match live mode exactly (same status codes and messages).
- Test sends are excluded from quota, billing, deliverability stats and auto-pause.
- A test key can't send live, and a live key with
test: truedoesn't deliver. - Templates can save, edit and select test-data scenarios. The preview uses the selected one.
- Docs page covers test mode, with curl and SDK examples.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity