Skip to main content
ReallyQuickEmails separa tráfico productivo y de desarrollo por el prefijo de la API key, no por un parámetro del request. Así un dev no manda tráfico de pruebas como producción por olvidar un flag.

El modelo

Test mode SÍ envía emails realesEl email sale de verdad y llega al inbox del destinatario. Puedes probar deliverability, render visual y comportamiento de los clientes de email igual que en producción. La diferencia está en métricas y routing de webhooks, no en el envío. Por eso, los envíos test también consumen cuota mensual.

Cómo se decide el modo

El modo viaja en la key. No hay parámetro mode, ni headers especiales, ni flag por endpoint:
→ webhook a webhook_url → payload con is_test: false → actividad visible en las métricas de producción

Webhook routing

Cada proyecto tiene cuatro URLs configurables (en pares outbound/inbound, una para cada modo):

Si la URL _dev está vacía

Fallback a la URL de liveSi tu proyecto no tiene webhook_url_dev y envías con sk_test_*, los eventos caen a webhook_url. El payload llega con is_test: true para distinguirlos. Si ambas URLs están vacías, el evento no se entrega, pero el email sigue saliendo al inbox real. Ver el detalle en Webhooks.

is_test en el payload

Todos los webhooks (outbound e inbound) incluyen is_test: boolean en el body. Si quieres, recibe todo en una sola URL (webhook_url) y filtra lado-cliente, dejando webhook_url_dev vacío:
Pero mantenerlas separadas es lo recomendado para evitar accidentes operativos.

Caso de uso: setup multi-environment

Tu app local usa sk_test_. Los emails que mandes en desarrollo:
  • Llegan al inbox real (pruebas render, deliverability)
  • Quedan marcados con is_test: true — no mezclan métricas con prod
  • Webhooks funcionan idéntico (si configuras webhook_url_dev apuntando a un ngrok o servicio de testing)
Tu código no necesita saber el modoEl modo depende solo de qué env var lees. Los call sites a la API son idénticos. El switch vive en las variables de entorno de tu hosting, no en código donde es fácil olvidar un flag.

Casos extremos

Suppression list

Es compartida entre live y test. Si un destinatario se dio de baja por un envío live, los envíos test al mismo recipient también se omiten. En /v1/send-template-email recibes 200 con skipped: true; en /v1/send-email la supresión se aplica en segundo plano y la actividad queda con estado suppressed. Así, los tests de QA no reactivan la entrega a usuarios que ya no quieren tus emails.

Rate limit

Live y test comparten el rate limit y la cuota mensual de tu proyecto. Un spike de tests consume cuota real y afecta tu envío productivo.

Regenerar keys

Live y test se regeneran independientemente desde el dashboard: regenerar una no afecta la otra. La key anterior queda invalidada al instante.

Próximos pasos

  • API Keys — referencia completa con ejemplos de idempotency y dry-run.
  • Webhooks — formato de payload y verificación HMAC.
  • Quickstart — primer envío end-to-end con sk_test_*.