SaaS e equipos de produto
O teu produto sabe cousas que ningunha ferramenta de marketing pode observar
Quen rematou o onboarding e quen se atascou no paso tres. Quen convidou a un colega. Quen alcanzou o límite dúas veces esta semana. Quen non abriu a cousa en quince días. Cada unha desas é un mellor disparador que calquera derivada dunha apertura de correo, e todas están a dúas liñas de código de selo.
Os eventos son toda a integración
POST /v1/events co teu propio token: un nome que elixes, un contacto, un payload, unha chave de idempotencia. Esa é toda a conexión. Non hai SDK que manter actualizado, nin pantalla de mapeo, nin vocabulario noso ao que teñas que traducir o teu produto.
Cada evento chega ao rexistro de só adición do contacto, e desde aí son tres cousas á vez. Un disparador, para que un funil comece cando chega. Un predicado, para que un segmento poida dicir "fixo isto nos últimos catorce días" ou, máis útil, "non o fixo". E un obxectivo, para que unha secuencia remate no momento en que alguén fai a cousa á que se lle estaba empurrando.
Esa terceira é a que fai que a mensaxería de ciclo de vida sexa soportable de recibir. O empurrón para rematar de configurar a túa conta debería deixar de existir no segundo en que a conta está configurada, e na maioría das ferramentas non o fai, porque a secuencia e o produto non se están a falar.
- ⚡Activador
api_event—signup.completed, planfree. - 2Enviar correoA única cousa que facer primeiro. Non unha visita de once funcións.
- 3Esperar 2 días
wake_atna execución. Nada en cola, nada que desfacrer se reescribes isto mañá. - ?CondiciónChegou
project.created? Non → a rama de axuda. Si → o obxectivo de abaixo. - 4Rama de axudaUnha mensaxe, ofrecendo a cousa concreta que non fixo. Despois, unha segunda espera.
- 5ObxectivoChega
project.created. A execución sae. Ningún correo de onboarding máis, nunca, para esta persoa.
Os teus nomes de eventosA túa definición de activado
Cinco funís
O ciclo de vida, na orde na que realmente ocorre
1 · Activación
Gatillo: rexistro. Dous ou tres mensaxes, cada unha sobre unha acción, cada unha cun obxectivo que remata a secuencia cando esa acción ocorre. O funil máis valioso que vas construír, e o que máis merece a pena reescribir tres veces.
2 · O estancamento
Gatillo: segment_enter — rexistrouse, ningún evento significativo en sete días. Unha mensaxe que pregunta en vez de dicir, e outra que ofrece algo concreto. Despois, parar. Unha cuarta mensaxe para quen ignorou tres é unha mensaxe para ninguén.
3 · O momento de expansión
Gatillo: un evento que significa que está a obter valor — acadou o límite, convidou a un terceiro colega, exportou por segunda vez. Este é o único momento no que unha mensaxe de mellora é benvida, e é un momento que o teu produto pode nomear con precisión.
4 · Renovación e reclamacións de pagamento
Gatillo: date_field antes da renovación, ou un evento de pagamento. Aviso, recordatorio e — se un pagamento falla — unha secuencia curta que se detén no instante en que ten éxito. Os nodos de obxectivo non son opcionais nas reclamacións de pagamento; son a diferenza entre un recordatorio e unha molestia.
5 · Recuperación
Gatillo: segment_enter — cancelado ou inactivo durante sesenta días. Dúas mensaxes, sinceras, despois unha etiqueta e silencio. O que cambiou desde que se foi é unha mellor mensaxe que un desconto.
E o interno
notify_team avisa a unha persoa cando unha conta que merece unha persoa cruza unha liña. Un funil non ten que rematar nun correo a un cliente; ás veces a acción correcta é dicirlle a alguén do teu lado que colla o teléfono.

Ninguén abandona a propósito. Simplemente deixa de abrilo.
Por que a un desenvolvedor podería gustarlle isto de verdade
As partes que importan cando quen integra es ti
Sen endpoints privados
Cada pantalla é construible desde a API pública, porque non hai outro tipo. Se queres incrustar un informe de campaña no teu propio panel de administración, nada se interpón no teu camiño e nada ten que ser enxeñado á inversa.
Chaves de idempotencia en todas partes
En cada ruta que modifica datos. A túa lóxica de reintentos, a túa cola de polo menos unha vez e a túa rede inestable convértense todos en problema doutro — concretamente, nun índice único.
Simula antes de publicar
POST /v1/simulate fai unha execución de proba dun contacto a través dun funil e devolve o camiño e cada mensaxe que enviaría. Ponno en CI se queres: un funil é un grafo, e un grafo pódese probar.
Un servidor MCP
Apunta un axente a /mcp e deixa que cree e comprobe funís. As ferramentas con capacidade de envío precisan unha confirmación explícita e están limitadas por cota, así que un prompt mal interpretado non pode converterse en cincuenta mil correos.
Webhooks de saída
Asinado, con reintentos con backoff, polo menos unha vez. O mesmo vocabulario de eventos que usan os informes, para que o teu almacén de datos e o teu panel non discrepen sobre que significa "entregado".
Unha supresión que realmente chega
Unha solicitude de eliminación quita o contacto e o seu historial de mensaxes aquí e propágase a cada servizo irmán que tiña unha copia. Unha solicitude, un resultado, e algo que podes sinalar cando te pregunten.
Onde está a fronteira
ClickSomo ten unha lista de correo e o que esa lista fixo. Non é a túa base de datos de usuarios e non intenta selo: un contacto nunca leva unha credencial, nunca inicia sesión e nunca se converte nunha conta. Os teus usuarios viven no teu produto; os contactos viven aquí, e os dous únense por un enderezo de correo e polos eventos que elixas enviar.
Esa separación é deliberada e é a razón pola que o modelo de consentimento funciona. Ti es o responsable do tratamento dos datos dos teus usuarios; nós procesamos no teu nome. Un deseño no que unha ferramenta de marketing se converte silenciosamente no almacén de identidades é un que non se pode desenredar despois, e é exactamente o fallo que este está construído para evitar.
A versión práctica: envía os eventos, envía os atributos polos que queres segmentar, e deixa todo o demais onde está. Se se chega a dar o caso de que estás a empurrar todo o teu esquema para aquí, o segmento que intentas construír probablemente é unha consulta na túa propia base de datos que debería chegar como un atributo booleano.