Saltar al contenido
SendIt está en desarrollo y todavía no opera comercialmente · SendIt is in development and not yet commercially available.
SendItdocs
Español
Esc
navigateopen⌘Jpreview
En esta página

Notificaciones al destinatario

Correos y mensajes de WhatsApp automáticos para tu comprador en cada hito del envío, con reglas de consentimiento y control por evento y canal.

SendIt puede avisarle a tu comprador, la persona que recibe el paquete, cuando su pedido avanza. Los avisos salen por correo y por WhatsApp, en español, y tú no construyes nada. Tú controlas qué eventos notifican y por qué canal.

Qué se notifica

Evento Cuándo se dispara Correo WhatsApp
order_confirmed La orden pasa a CONFIRMED
label_purchased Se compra la guía de un envío
shipment_delivered El rastreo llega a DELIVERED
claim_filed Se presenta una reclamación de seguro

La entrega ocurre en segundo plano. Nunca retrasa la compra de la guía ni la respuesta del API.

Reglas de consentimiento

  • WhatsApp requiere opt-in explícito. La LFPDPPP exige consentimiento antes de cualquier mensaje. WhatsApp se envía solo cuando la orden vinculada al envío tiene customerOptInToWhatsapp: true. Un envío sin orden vinculada jamás recibe WhatsApp.
  • El correo es transaccional. Son mensajes de servicio sobre el propio envío del destinatario, así que no requieren opt-in individual. El control es el interruptor por organización que se describe abajo. El correo se toma del customerEmail de la orden, o del correo de contacto de la dirección destino.
  • El modo de prueba nunca notifica. Toda operación con livemode: false se registra como SKIPPED y no envía nada real.

Los mensajes de WhatsApp usan plantillas preaprobadas por Meta, en español (es-MX). Por ejemplo, la de label_purchased incluye el número de rastreo, la paquetería y la fecha estimada de entrega.

Controla qué se envía

Los interruptores son por organización, por evento y por canal. Un interruptor ausente significa habilitado (la función viene encendida): solo creas filas para apagar cosas.

Consulta la matriz completa

curl https://api.sendit.mx/v1/notification-settings \
  -H "X-API-Key: sk_live_..."
{
  "success": true,
  "data": [
    { "eventType": "order_confirmed", "channel": "EMAIL", "isEnabled": true, "subjectOverride": null },
    { "eventType": "order_confirmed", "channel": "WHATSAPP", "isEnabled": true },
    { "eventType": "label_purchased", "channel": "EMAIL", "isEnabled": true, "subjectOverride": "Tu guía {{trackingNumber}} está lista" },
    { "eventType": "shipment_delivered", "channel": "WHATSAPP", "isEnabled": false }
  ]
}

4 eventos × 2 canales = 8 filas con su valor efectivo. Las filas de correo traen además subjectOverride, que es null cuando usas el asunto que trae SendIt. Las de WhatsApp no lo traen. Cualquier miembro autenticado puede leer la configuración; el alcance notification_settings:read solo aplica a las llaves de API.

Apaga o enciende interruptores

curl -X PUT https://api.sendit.mx/v1/notification-settings \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "settings": [
      { "eventType": "shipment_delivered", "channel": "WHATSAPP", "isEnabled": false }
    ]
  }'

Requiere rol OPERATOR o superior y el alcance notification_settings:write. Es una actualización parcial: solo tocas las filas que mandas.

Parámetros del cuerpo

PropType
settingsobjeto[]

Interruptores a actualizar. Cada elemento trae eventType (order_confirmed | label_purchased | shipment_delivered | claim_filed), channel (EMAIL | WHATSAPP) e isEnabled (boolean). En filas EMAIL acepta además subjectOverride.

Typeobjeto[]

Apagar un canal detiene esa notificación en toda la organización. Apagar WhatsApp no tiene efecto sobre mensajes que ya se suprimían por falta de opt-in.

Personaliza el asunto del correo

En una fila EMAIL, subjectOverride reemplaza el asunto que trae SendIt. Omítelo para dejar el asunto como está, mándalo con un texto de hasta 150 caracteres para reemplazarlo, o mándalo en null para volver al asunto original.

curl -X PUT https://api.sendit.mx/v1/notification-settings \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "settings": [
      {
        "eventType": "label_purchased",
        "channel": "EMAIL",
        "isEnabled": true,
        "subjectOverride": "Tu guía {{trackingNumber}} está lista"
      }
    ]
  }'

Cada evento acepta solo sus propias variables:

Evento Variables permitidas en el asunto
order_confirmed customerName, orderNumber, totalPrice
label_purchased customerName, carrier, trackingNumber, estimatedDelivery
shipment_delivered customerName, trackingNumber, deliveredAt
claim_filed customerName, claimNumber, shipmentId
Código Cuándo Cómo resolverlo
400 INVALID_INPUT Mandaste subjectOverride en una fila WHATSAPP El copy de WhatsApp lo aprueba Meta y no es editable — quita el campo
400 INVALID_INPUT El asunto usa una variable que ese evento no publica Usa solo las variables de la tabla de arriba
400 INVALID_INPUT El asunto trae un salto de línea o pasa de 150 caracteres Manda una sola línea de máximo 150 caracteres

Pon tu marca en los correos

Los correos al destinatario pueden llevar tu logo, tu color y tu pie de página. Con publicTrackingPage activo, esa misma marca aparece en la página de rastreo público.

Método Ruta Acceso
GET /v1/notification-settings/branding Cualquier miembro, o llave con notification_settings:read
PUT /v1/notification-settings/branding Rol ADMIN o superior + notification_settings:write

Parámetros del cuerpo

PropType
logoUrl?string

URL https del logo, máximo 500 caracteres. Aparece en el encabezado del correo.

Typestring
accentColor?string

Color de acento en hexadecimal de seis dígitos (por ejemplo #4361EE).

Typestring
replyTo?string

Correo al que responde tu comprador, máximo 320 caracteres.

Typestring
footerText?string

Texto plano del pie de página, máximo 500 caracteres. En la página pública llega como footer.

Typestring
publicTrackingPage?boolean

true = muestra tu marca en la página de rastreo público. Solo aplica ahí.

Typeboolean
Defaultfalse

replyTo aplica solo al correo y nunca sale en la respuesta pública. El logoUrl y el accentColor aplican a los dos.

curl -X PUT https://api.sendit.mx/v1/notification-settings/branding \
  -H "X-API-Key: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "logoUrl": "https://cdn.tutienda.mx/logo.png",
    "accentColor": "#4361EE",
    "replyTo": "hola@tutienda.mx",
    "footerText": "Gracias por comprar en Tu Tienda.",
    "publicTrackingPage": true
  }'
{
  "success": true,
  "data": {
    "logoUrl": "https://cdn.tutienda.mx/logo.png",
    "accentColor": "#4361EE",
    "replyTo": "hola@tutienda.mx",
    "footerText": "Gracias por comprar en Tu Tienda.",
    "publicTrackingPage": true
  }
}

Todos los campos son opcionales, y GET omite los que nunca configuraste. Una organización nueva devuelve { "success": true, "data": {} }.

Las plantillas de WhatsApp no cambian nunca.

Código Cuándo Cómo resolverlo
400 INVALID_INPUT logoUrl no es https o pasa de 500 caracteres Publica el logo en una URL https propia
400 INVALID_INPUT accentColor no es un hexadecimal de seis dígitos Usa el formato #RRGGBB
400 INVALID_INPUT replyTo no es un correo válido, o footerText pasa de 500 caracteres Corrige el valor y reenvía
403 INSUFFICIENT_SCOPE La llave no tiene notification_settings:write Emite una llave con ese alcance

Consulta las plantillas

GET /v1/notification-templates regresa el catálogo de plantillas, una por evento y canal (4 × 2 = 8), para que tu dashboard muestre una galería de vista previa. Es de solo lectura y usa el alcance notification_settings:read. Las plantillas no son editables: el texto está aprobado por Meta en WhatsApp, o es propio del código en correo.

curl https://api.sendit.mx/v1/notification-templates \
  -H "X-API-Key: sk_live_..."
{
  "success": true,
  "data": [
    {
      "eventType": "label_purchased",
      "channel": "EMAIL",
      "variables": ["customerName", "carrier", "trackingNumber", "estimatedDelivery"],
      "subject": "Tu envío está en camino — FEDMX123456789",
      "exampleBody": "Hola María,\n\nGeneramos la guía de tu envío con FedEx.\n…"
    },
    {
      "eventType": "label_purchased",
      "channel": "WHATSAPP",
      "variables": ["customerName", "carrier", "trackingNumber", "estimatedDelivery"],
      "templateName": "label_purchased",
      "exampleBody": "Hola María, …",
      "configured": true
    }
  ]
}

Las entradas de correo se renderizan con tu marca y tu asunto activos: subject refleja tu subjectOverride si lo definiste, y exampleHtml trae la vista previa con tu logo, color y pie.

Las plantillas de WhatsApp están en español (es-MX), preaprobadas por Meta y se muestran sin marca. configured indica si la plantilla está disponible. El canal de correo funciona de manera independiente.

Semántica de entrega

  • Sin duplicados. El reprocesamiento de un mismo evento no envía un segundo mensaje por el mismo canal.
  • Los canales son independientes. Una falla en un canal nunca bloquea al otro ni a tus webhooks.

¿Te ha resultado útil esta página?