Saltar al contenido principal

Comunicaciones y canales

IncentIA envía mensajes a los miembros por varios canales nativos, con selección automática del mejor canal según preferencias y disponibilidad.

Canales soportados

CanalProveedorUso típico
EmailSMTP configurableComunicaciones extensas, facturas, newsletter
SMSTwilioAlertas cortas, OTP, recordatorios
WhatsAppMeta Business APIConversacional, mensajes urgentes, altos CTR
TelegramBot APINicho B2B, comunidades
PushWeb Push (VAPID) / APNs / FCMNotificaciones app / PWA

Cada canal requiere configuración del proveedor (API keys, números emisores, VAPID keys, etc.) a nivel de tenant.

Channel Router

El ChannelRouter decide qué canal usar para cada mensaje según:

  1. Preferencia del miembro — si dijo "prefiero WhatsApp", intenta ese primero.
  2. Disponibilidad — si el miembro no tiene teléfono o no ha aceptado push, se descarta.
  3. Opt-in — respeta consentimientos GDPR / LOPD.
  4. Tipo de mensaje — algunos tipos están ligados a canales concretos (ej. OTP por SMS).
  5. Fallback — si el canal preferido falla, prueba el siguiente.

Plantillas (templates)

Cada mensaje se construye a partir de una plantilla por canal:

  • Texto con variables: Hola {{member.name}}, tienes {{points}} puntos disponibles.
  • HTML para email (con layout, imágenes, CTA).
  • Media (imágenes, PDFs) adjuntable según canal.

Las plantillas se scopean:

  • Globales del tenant — usadas por defecto.
  • Por campaña — específicas para una activación concreta.
  • Por tipo de eventoEvidenceApproved, EvidenceRejected, RewardRedeemed, etc.

Cuando se dispara un evento, se busca plantilla en este orden:

  1. Plantilla de la campaña (si aplica).
  2. Plantilla global del tenant.
  3. Texto por defecto en código (fallback).

Flujos visuales

El editor visual de flujos permite diseñar secuencias de mensajes con:

  • Triggers — "cuando un miembro se registra", "cuando cumpleaños", "cuando puntos > X".
  • Condiciones — "si es VIP", "si vive en Madrid", "si lleva 30d sin actividad".
  • Esperas — "espera 3 días antes del siguiente paso".
  • Acciones — enviar mensaje, actualizar atributo, asignar a segmento, etc.

Ejemplo de flujo:

[Trigger] Miembro se registra

[Acción] Enviar email bienvenida (plantilla welcome_email)

[Espera] 7 días

[Condición] ¿Ha hecho alguna compra?
├─ Sí → [Acción] Enviar WhatsApp agradecimiento
└─ No → [Acción] Enviar push con oferta de reactivación

Los flujos corren en background (vía Hangfire) y son idempotentes — un miembro no recibe el mismo paso dos veces.

Las comunicaciones suelen incluir URLs. Si apuntas directamente a la landing, y WhatsApp la bloquea, los miembros ven un error.

Solución: Dynamic Links — URLs cortas en tu dominio (https://tu-dominio.app/r/verano) que redirigen al destino real. Si WhatsApp bloquea el dominio redireccionado, cambias el destino del Dynamic Link y los nuevos clicks funcionan sin reenviar el mensaje.

Ver Dynamic Links.

Métricas

Por cada mensaje se trackea:

  • Enviado / Entregado / Abierto / Clicado / Rebotado.
  • Canal usado.
  • Tiempo de respuesta (solo email / WhatsApp).
  • Opt-out desencadenado.

Agregables por campaña, plantilla o segmento.

Opt-in y cumplimiento

  • Cada miembro tiene preferencias de canal y tipo de mensaje (marketing, transaccional).
  • Los mensajes transaccionales (OTP, evidencia aprobada) se envían siempre.
  • Los marketing requieren opt-in explícito.
  • Todo cambio queda registrado para cumplimiento GDPR / LOPD.

Pruebas y simulación

Antes de lanzar un flujo grande:

  • Modo dry-run — simula el flujo sin enviar mensajes reales.
  • Audiencia de prueba — ejecuta contra un segmento de solo internos.
  • Preview de plantilla con datos de ejemplo.