clickSomo

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.

ActivaciónExecución n.º 2 118
  • ⚡Activadorapi_event — signup.completed, plan free.
  • 2Enviar correoA única cousa que facer primeiro. Non unha visita de once funcións.
  • 3Esperar 2 díaswake_at na 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.