Saltar al contenido
OS Domains
Use case

Notifications bimodales: steady state bajo, bursts de millones, entrega en segundos.

OS Domains entrega notificaciones de alto volumen para SaaS y plataformas operativas cuyo tráfico es bimodal: un steady state bajo y bursts de cientos de miles de mensajes cuando un evento desencadenante hace fanout sobre la base de clientes. La capacidad de burst está pre-provisionada con 2× de headroom en cada PoP para absorber hasta 5M de mensajes por hora con una latencia P99 de submission de 180 ms y un SLA contractual del 99,99%. Los webhooks firmados con HMAC-SHA256, en formato CloudEvents v1.0 y con buffer de replay de 7 días, son el contrato entre ambas plataformas, y los pools de IP separados para transaccional, notification y marketing evitan que una queja en uno degrade la entrega de las alertas que importan.

Las notifications de alto volumen viven entre el transaccional y el marketing: volumen alto que puede saltar 100-1000× en un evento, pero con la urgencia per-mensaje del transaccional porque el destinatario está esperando. Diseñamos para el burst específicamente: 2× headroom permanente en cada PoP, capacidad burst-absorption pre-provisionada, colas de despacho separadas para tráfico time-sensitive vs background. La diferencia se ve el día que tu plataforma tiene incidente y necesitas avisar a 50K clientes en 5 minutos sin que el proveedor de email se atragante.

Los webhooks no son nice-to-have aquí: son el contrato entre tu plataforma y la nuestra. HMAC-SHA256 con timestamp anti-replay, formato CloudEvents v1.0, replay buffer de 7 días si tu endpoint cae, retry con backoff exponencial. Para clientes Performance y Enterprise nuestro propio on-call está suscrito a alertas de degradación de tu cuenta: si tu latencia cae, paginamos a nuestro ingeniero en 5 minutos antes de que tú escribas el ticket. El plan Enterprise incluye cláusulas NIS2 artículo 21 sobre medidas de ciberseguridad y atestación anual de resiliencia incluida para sectores supervisados.

En breve

  • Burst absorbido hasta 5M de mensajes por hora por PoP con 2× de headroom pre-provisionado: sin cold-start de autoescalado en la ruta crítica de una alerta sensible al tiempo.
  • Latencia P99 de submission de 180 ms incluso en burst, con SLA contractual del 99,99% y failover multi-PoP en menos de 30 s en Performance y Enterprise.
  • Pools de IP separados para transaccional, notification y marketing: una queja en un pool no degrada la entrega de los otros.
  • Webhooks HMAC-SHA256 en formato CloudEvents v1.0, con retry de 30 min y buffer de replay de 7 días drenado en orden cronológico si tu endpoint cae.
  • Smart fanout que suaviza la tasa por proveedor de buzón y timezone-aware scheduling para digests, manteniendo cada pico bajo el headroom de 2× sin throttling.
Cifras clave
Capacidad burst pico
5M msg/h
Latencia P99 submission
180 ms
SLA contractual
99,99%
Webhook replay buffer
7 días

¿Qué son las notificaciones de alto volumen?

Las notificaciones de alto volumen se sitúan entre el transaccional y el marketing en términos de volumen, pero comparten con el transaccional la sensibilidad al tiempo. Los ejemplos típicos: notificaciones de producto SaaS (alguien te mencionó, tu build falló, tu factura vence en 3 días), alertas financieras (umbral de saldo, detección de fraude, advertencia de seguridad sobre login desde IP desconocida), páginas operativas (tu incidente está escalando, tu deploy terminó, tu monitoreo disparó alerta), notificaciones de marketplace (recibiste un mensaje, alguien compró tu producto, alguien dejó review). El volumen es alto —a veces millones diarios distribuidos en una base de clientes— pero cada mensaje individual tiene que aterrizar en segundos porque hay un destinatario esperando. El problema arquitectónico es sostener tasa pico de envío sin sacrificar latencia por mensaje, y eso requiere disciplina específica que muchos proveedores no tienen porque diseñaron para o transaccional puro o marketing puro.

¿Por qué el burst bimodal rompe a la mayoría de los proveedores?

Un burst de notificaciones es bimodal por naturaleza: el 95% del tiempo estás enviando a 1-5K/hora, y entonces un evento desencadenante —un deploy, un movimiento de mercado, un incidente de seguridad en uno de tus clientes, una caída de servicio de un proveedor que afecta a varios— provoca que envíes 500K mensajes en 15 minutos. La mayoría de los proveedores manejan el steady state correctamente y se atragantan en el burst. El atraganto adopta formas distintas: SES limita rate y encola internamente con retraso multi-minuto que es invisible al cliente hasta que aparece; SendGrid Pro throttlea para proteger su infraestructura compartida; los servicios gestionados con caps de capacidad horarios rechazan submissions hasta que la ventana del rate se resetea. Diseñamos específicamente para el caso de burst: 2× headroom permanente en cada PoP, capacidad de burst-absorption pre-provisionada, colas de despacho separadas para tráfico time-sensitive vs background. La idea: no quieres descubrir que tu proveedor se atraganta el día que tu plataforma tiene un incidente.

Qué hace a esta categoría distinta del marketing y del transaccional.

Las notificaciones difieren del marketing porque el destinatario está realmente esperando (engagement no es opcional, es el propósito completo del mensaje). Difieren del transaccional porque el volumen por evento puede ser 100-1000× el steady state, lo que hace que el dimensionamiento estable no baste. Comparten con el transaccional el requisito de baja latencia, y comparten con el marketing el requisito de alto throughput. La mayoría de los senders en esta categoría operan un setup híbrido: un pool transaccional pequeño para OTP y password resets, un pool de notificaciones que escala para bursts, y a veces un pool separado de marketing. Soportamos los tres en la misma cuenta con pools de IP separados, estadísticas separadas, webhooks separados routables a endpoints distintos según el flujo. La separación importa porque un complaint spike en marketing no debe degradar la entrega de tus alertas de seguridad.

¿Por qué los webhooks fiables importan tanto en notifications?

En notifications, los webhooks no son nice-to-have: son el contrato entre tu plataforma y la nuestra. Cada vez que enviamos un evento (queued, delivered, bounced, deferred, complained, replied) entregamos el webhook firmado con HMAC-SHA256 sobre el body completo, con timestamp Unix en epoch segundos dentro de la firma para protección anti-replay con ventana 5 minutos. La cabecera de firma es X-OSD-Signature con formato v1=hex_hash. La idempotencia es responsabilidad del receiver pero hacemos lo que podemos para facilitar: cada evento lleva un message_id único, así que tu endpoint puede usarlo como idempotency key y descartar duplicados durante una ventana razonable (recomendamos 7 días, que coincide con nuestro retention). El esquema CloudEvents v1.0 hace nuestro payload interoperable con AWS EventBridge, Google Eventarc, Knative y Argo Events sin parsing custom. Si tu endpoint cae, reintentamos durante 30 minutos con backoff exponencial (5s, 25s, 125s, 625s, 3125s); pasada esa ventana los eventos van al buffer de replay de 7 días donde quedan disponibles para drenaje cronológico cuando tu endpoint vuelva. El replay manual desde panel está disponible para Performance y Enterprise.

Cross-PoP failover y por qué Performance vale la pena para notifications.

Los clientes Performance y Enterprise tienen routing multi-PoP: si un PoP pierde transit (porque uno de los IXs cae, porque hay un BGP problem que un upstream tarda en resolver, porque un datacenter tiene incidente con su transit principal), el tráfico se desvía al PoP alterno en menos de 30 segundos. Los planes Starter y Standard son single-PoP y verían la interrupción durante toda la duración del incidente upstream. Recomendamos Performance para cualquier workload de notifications que no tolere una hora de regional outage, que es básicamente todas las notifications operativas críticas. La diferencia de precio entre Standard y Performance se amortiza la primera vez que tu PoP principal tiene incidente y el tráfico cambia transparentemente, lo que pasa estadísticamente 1-3 veces al año dependiendo de la región.

¿Cómo se gestiona el fanout a múltiples proveedores en un evento crítico?

Cuando un único evento dispara fanout (status page incident → 50K customer alerts simultáneos, deploy completado → 10K developer notifications, market move → 200K subscriber alerts), la dinámica con proveedores de buzón cambia. Enviar 50K mensajes en 5 minutos a una mezcla de Gmail, Outlook 365, Yahoo y Exchange corporativos está bien para Gmail (acepta esa tasa con pool adecuado), pero Outlook rate-limita por dominio remitente y Yahoo defiere si su backend ve un spike. Nuestro scheduler suaviza la tasa per-proveedor automáticamente para que ningún proveedor reciba el burst completo de una vez: si tienes 50K mensajes para enviar y tu pool tiene capacidad sostenida de 5K/min, el scheduler distribuye el burst en 10-12 minutos repartido por proveedor. El destinatario recibe el mensaje en segundos individuales, pero la cola interna evita generar un patrón que activaría defensas anti-abuse en el lado del receiver. Esto se llama smart fanout en nuestra documentación y está activo por defecto en Standard, Performance y Enterprise.

Patrones de digest: el caso especial de notificaciones agrupadas.

Algunas notificaciones son por naturaleza digest: el resumen diario de actividad, la lista semanal de mentions, el reporte de las últimas 24 horas. Estas no tienen la urgencia per-mensaje de las alertas operativas, pero sí tienen un patrón de envío masivo concentrado en una ventana corta (típicamente entre 7:00 y 9:00 hora local del destinatario). El reto operativo es enviar a una base de 1-10M destinatarios en distintos husos horarios y respetar el "envía a las 8:00 hora local de cada usuario" sin que el envío total se concentre en pocas horas UTC que saturarían los pools. Soportamos timezone-aware scheduling: pasas a la API el timestamp deseado en UTC más la timezone preferida del destinatario, y nuestra cola calcula el momento real de envío y lo distribuye a lo largo de las 24 horas siguiendo el patrón geográfico de tu base. Para una base global con 50% USA, 30% UE, 20% APAC, el envío real se reparte en 3 picos suaves entre 12:00-16:00 UTC, 06:00-09:00 UTC y 22:00-01:00 UTC respectivamente, lo que mantiene cada pico bajo el headroom de 2× sin throttling.

¿Cómo se integra con PagerDuty, Opsgenie y status pages?

El uso más crítico de notifications es el de incidentes operativos: cuando tu plataforma tiene un incidente, los suscriptores de tu status page reciben emails inmediatos, los oncall de tus clientes reciben page emails (si has integrado con su sistema), y tu propio equipo recibe escalation emails. La latencia importa más aquí que en cualquier otro lugar: un minuto de retraso en el incident notification puede significar que un cliente entera por Twitter antes que por email, lo que daña la confianza. Integramos con PagerDuty, Opsgenie y los status page providers más comunes (Statuspage de Atlassian, Better Stack, Instatus, Cachet) via webhooks bidireccionales: ellos disparan el evento, nosotros entregamos los mensajes, las acks vuelven a tu sistema para que tu dashboard muestre cuántos suscriptores recibieron y cuántos hicieron click. Para Performance y Enterprise, nuestro propio on-call está suscrito a alertas de degradación de tu cuenta —si tu latencia o entrega cae, paginamos a nuestro ingeniero en 5 minutos antes de que tú escribas el ticket.

Cómo lo resolvemos

Las capacidades específicas que importan para este caso.

01

Capacidad burst a 5M/h por PoP

Headroom pre-provisionado en cada PoP UE significa que un burst de 500K mensajes se submitea en menos de 6 minutos y se despacha al MX destinatario en menos de 12 minutos. Sin pre-warming requerido para bursts predecibles.

02

Colas separadas para tráfico time-sensitive

Marca los mensajes con priority=high en la API y saltan cualquier cola batch por cliente, yendo directos a la lane de despacho por IP. La diferencia es de segundos cuando el sistema está bajo carga normal y de minutos cuando está bajo carga pico.

03

Webhooks real-time con replay 7 días

Cada evento (queued, delivered, bounced, complained, replied) entregado en menos de 1 segundo desde el cambio de estado. HMAC-SHA256 con timestamp anti-replay. Si tu endpoint cae, retry 30 min con backoff exponencial luego buffer 7 días.

04

Control de fanout por dominio receptor

Cuando un evento dispara fanout (status page incident → 50K customer alerts), throttle automático por proveedor de buzón para evitar hits de los umbrales anti-abuse. Smart fanout activo por defecto en Standard+.

05

PagerDuty integration para nuestro on-call

Si tu latencia de notification o tasa de entrega degrada, nuestro ingeniero on-call recibe page en 5 minutos —tu problema se vuelve nuestro problema antes de que tengas que escribir el ticket. Configurable por cliente Performance y Enterprise.

06

Status API a 60 req/min

Check programático del estado de plataforma para que tu aplicación pueda adaptarse (encolar localmente, fallback, alertar a tu equipo) cuando estamos degradados. Status data freshness inferior a 60 segundos.

07

Timezone-aware scheduling para digests

Pasas a la API el timestamp deseado más timezone del destinatario; la cola calcula el momento real de envío. Distribuye el envío total a lo largo de 24 horas siguiendo el patrón geográfico de tu base, evita picos UTC.

08

Esquema CloudEvents v1.0 nativo

Webhooks en formato CloudEvents v1.0 para interoperabilidad nativa con AWS EventBridge, Google Eventarc, Knative, Argo Events. Sin parsing custom requerido. Extensiones específicas de email documentadas en OpenAPI 3.0.

Retos habituales

Lo que vemos fallar y cómo lo arreglamos.

Fanout a múltiples receivers en un solo evento crítico

Enviar 50K mensajes en 5 minutos a una mezcla de Gmail, Outlook, Yahoo y Exchange corporativo está bien para Gmail pero Outlook rate-limita y Yahoo deferre. Nuestro scheduler suaviza la tasa per-proveedor automáticamente para que ningún proveedor reciba el burst completo al mismo tiempo. El destinatario recibe el mensaje en segundos individuales aunque internamente la cola lo distribuya.

Webhook endpoint outages durante picos de incidentes

Tu webhook handler es más probable que falle precisamente en el momento que más lo necesitas (cuando 500K eventos están firing en 15 minutos durante un incidente real). El replay buffer de 7 días cubre este escenario; una vez tu endpoint vuelve a responder 200, drenamos cada evento perdido en orden cronológico con los timestamps originales del evento, no del replay.

Cross-PoP failover en outages regionales

Los clientes Performance y Enterprise tienen multi-PoP routing: si un PoP pierde transit, el tráfico se desvía al PoP alterno en menos de 30 segundos. Starter y Standard son single-PoP y verían el outage. Recomendamos Performance para cualquier workload de notifications que no tolere outage regional de 1 hora.

Idempotency en arquitecturas event-driven con reintentos

En sistemas event-driven serios los webhooks de upstream reentran a la lógica de envío con reintentos (Stripe reintenta hasta 72 horas con backoff exponencial). Sin idempotency keys generadas por tu aplicación, el destinatario recibe el mensaje dos veces. Nuestra cabecera Idempotency-Key resuelve la duplicación del lado nuestro durante 24 horas, pero el UUID lo genera tu sistema. Documentamos el patrón en el quickstart de Performance.

Apple Mail Privacy Protection en notifications

Para notifications el impacto MPP es mixto. Por un lado, las notifications van a usuarios que esperan el mensaje, así que el open rate inflado no rompe operativa. Por otro lado, los digests que se calculan por engagement (envía resumen solo si el usuario ha estado activo) sufren porque el "activo" detectado por opens incluye machine opens. Recomendamos pivotar a clicks como señal de engagement para lógica de envío de digests.

Preguntas frecuentes

Las preguntas que más nos hacen.

01

¿Cómo de rápido puedo enviar 1 millón de notifications?

En tier Performance, 12 minutos desde submission API hasta hand-off al MX destinatario para el conjunto completo de mensajes, sostenido. La capacidad burst escala más allá de eso con aviso previo. Los clientes Enterprise con ventanas pre-provisionadas han llegado a 5M en 60 minutos; típicamente recomendamos distribuir esos volúmenes en ventana más larga para proteger la reputación del lado receiver más que del lado nuestro. La diferencia entre 12 minutos y 60 minutos es protección del cliente, no técnica.

02

¿Soportáis endpoints batch de envío?

Sí. POST /v2/send acepta arrays de hasta 1 000 destinatarios por request, cada uno renderizado desde una template compartida con variables de merge per-destinatario. La latencia de submission es idéntica para batched vs individual —tuneamos para lo que tu aplicación produzca de forma más natural. Para volúmenes más grandes hay POST /v2/send/bulk que acepta hasta 50 000 destinatarios por request con respuesta async.

03

¿Qué pasa si mi webhook handler está caído durante un burst?

Reintentamos cada evento durante 30 minutos con backoff exponencial (5s, 25s, 125s, 625s, 3125s). Pasados esos 30 minutos los eventos van al buffer de replay de 7 días. Una vez tu endpoint devuelve 200 OK, drenamos el buffer en orden cronológico con timestamps originales del evento. También puedes disparar replay manual desde el panel para un rango de fechas específico o por filtro de tipo de evento.

04

¿Cómo manejáis deliverability para transaccional + notification + marketing en una sola cuenta?

Tres pools de IP separados, cada uno con su propio historial de reputación en cada proveedor de buzón. El panel muestra dashboards per-pool. Si un pool tiene complaint spike, solo ese pool ve degradada su reputación —los otros siguen en placement pleno. Algunos clientes van más allá y separan por sub-product (notificaciones de billing en un pool, alertas de seguridad en otro, alertas operativas en un tercero) para que un incidente en una sub-app no toque el resto.

05

¿Puedo enviar notifications en 7+ idiomas con templates por locale?

Sí. Guardas templates por locale (welcome-en, welcome-de, welcome-es, welcome-pt-br, welcome-fr, welcome-it, welcome-nl), pasas locale y recipient_id en el objeto data, renderizamos el template correcto server-side. Alternativamente puedes pasar html/text directamente por mensaje —la API acepta cualquier patrón. Las plantillas con condicionales por locale (Mustache supporta if/else) también son posibles aunque más complicadas de mantener; recomendamos templates separados.

06

¿Qué SLA tenéis sobre latencia P99 de notifications?

El SLA contractual es sobre disponibilidad de plataforma (99,99% mensual) y sobre latencia plataforma-side (submission API hasta hand-off MTA en sub-200 ms P99). No SLA-mos la latencia end-to-end (de submission a llegada en buzón destinatario) porque depende de infraestructura ajena. Sí monitorizamos esa cifra y la mostramos en el dashboard; si baja consistentemente, el on-call investiga y abre comunicación con el cliente si hay impacto real. Los clientes Enterprise tienen este detalle en addendum contractual.

07

¿Cómo facilitáis el cumplimiento NIS2 para notifications críticas?

NIS2 (Directiva (UE) 2022/2555, transpuesta en España por el Real Decreto-ley 7/2024) clasifica como entidades importantes a los proveedores de servicios de plataforma cuando el cliente final es entidad esencial. Nuestro DPA Enterprise incluye cláusulas NIS2 artículo 21 sobre medidas de gestión de riesgo de ciberseguridad. Producimos atestación anual escrita con resumen de incidentes, utilización de capacidad, resultados de pruebas BCP, resumen de incidentes de seguridad. Apta para incluir en tu propia notificación regulatoria bajo NIS2 artículo 23 cuando aplica.

08

¿Soportáis envío de notifications transaccionales con sello cualificado eIDAS 2?

Sí, bajo plan Enterprise con addendum eIDAS. La integración pasa por QTSP (Qualified Trust Service Provider) acreditados; entregamos la lista en onboarding. Lo más común para clientes en España es la integración con FNMT-RCM y Sealed Cloud. Para sector público español bajo Facturae 3.2 vía FACe, el flujo está documentado paso a paso en la documentación Enterprise.

Hablamos

Agenda una llamada técnica de 45 minutos con un ingeniero.

Sin SDR, sin comisiones, sin rondas de cualificación. Cuéntanos lo que necesitas, te decimos si encajamos, y te llevas una recomendación sea cual sea la respuesta.

Teléfono +43 1 205 11 80 Lun–Vie · 9–18 CET
Email [email protected] Respuesta media 4h en horario laboral
Oficina Fleischmarkt 1, 1010 Wien Con cita previa