SaaS и продуктови екипи
Вашият продукт знае неща, които никой маркетингов инструмент не може да наблюдава
Кой е завършил onboarding и кой е заседнал на третата стъпка. Кой е поканил колега. Кой е удари лимита два пъти тази седмица. Кой не е отварял нещото от две седмици. Всяко от тях е по-добър тригер от всичко, произтичащо от отворен имейл, и всички са на разстояние от два реда код.
Събитията са цялата интеграция
POST /v1/events с вашия собствен токен: име, което сте избрали, контакт, payload и ключ за идемпотентност. Това е цялата връзка. Няма SDK, което да поддържате актуално, няма екран за съпоставяне и няма речник от нас, в който да превеждате продукта си.
Всяко събитие попада в append-only журнала на контакта, а оттам е три неща едновременно. Тригер, така че фуниел да започне, когато пристигне. Предикат, така че сегмент да може да каже „е направил това през последните четиринадесет дни“ или, по-полезно, „не е направил“. И цел, така че последователността да приключи в момента, в който някой направи нещото, към което го подтикваше.
Третото е това, което прави съобщенията за жизнения цикъл поносими за получаване. Подтикът да завършите настройката на акаунта си би трябвало да престане да съществува секунда след като акаунтът е настроен, а в повечето инструменти това не става, защото последователността и продуктът не си говорят.
- ⚡Задействане
api_event—signup.completed, планfree. - 2Изпращане на имейлЕдното нещо, което да направите първо. Не обиколка на единадесет функции.
- 3Изчакване 2 дни
wake_atна изпълнението. Нищо не е в опашка, нищо за разглобяване, ако утре пренапишете това. - ?УсловиеПристигнало ли е
project.created? Не → помощният клон. Да → целта отдолу. - 4Помощен клонЕдно съобщение, предлагащо конкретното нещо, което не са направили. После второ изчакване.
- 5Цел
project.createdпристига. Изпълнението приключва. Никога повече писмо за въведението за този човек.
Вашите имена на събитияВашето определение за активация
Пет фунии
Жизненият цикъл, в реда, в който действително се случва
1 · Активация
Тригер: регистрация. Две или три съобщения, всяко за едно действие, всяко с цел, която прекратява последователността, когато това действие се случи. Най-ценната фуния, която ще изградите, и тази, която най-много си заслужава да пренапишете три пъти.
2 · Застоят
Тригер: segment_enter — регистриран, без значимо събитие в продължение на седем дни. Едно съобщение, което пита, а не наставлява, и едно, което предлага нещо конкретно. После спрете. Четвърто съобщение до някого, който е игнорирал три, е съобщение до никого.
3 · Моментът на разширяване
Тригер: събитие, което означава, че получават стойност — достигнали лимита, поканили трети колега, експортирали за втори път. Това е единственият момент, в който съобщение за надграждане е приветствано, и той е момент, който вашият продукт може да назове точно.
4 · Подновяване и опити за плащане
Тригер: date_field преди подновяване или събитие за плащане. Известие, напомняне и — ако плащането се провали — кратка последователност, която спира мигновено при успех. Целевите възли не са по избор при опитите за плащане; те са разликата между напомняне и тормоз.
5 · Връщане на клиенти
Тригер: segment_enter — отказал или неактивен шейсет дни. Две съобщения, честни, после етикет и тишина. Това, което се е променило откакто са си отишли, е по-добро съобщение от отстъпка.
И вътрешната
notify_team уведомява човек, когато акаунт, заслужаващ човешко внимание, пресича граница. Фунията не трябва да завършва с имейл до клиент; понякога правилното действие е да кажете на някого от ваша страна да вдигне телефона.

Никой не се отказва нарочно. Просто спират да го отварят.
Защо един разработчик наистина може да хареса това
Частите, които имат значение, когато вие сте този, който интегрира
Без лични крайни точки
Всеки екран е изградим от публичния API, защото няма друг вид. Ако искате да вградите доклад за кампания в собствения си администраторски панел, нищо не ви пречи и нищо не трябва да се реверсира.
Ключове за идемпотентност навсякъде
На всеки променящ маршрут. Вашата логика за повторни опити, вашата опашка с „поне веднъж“ и вашата нестабилна мрежа се превръщат в проблем на някой друг — по-конкретно, на уникален индекс.
Симулирайте, преди да пуснете
POST /v1/simulate изпълнява пробно контакт през фуния и връща пътя и всяко съобщение, което би изпратил. Сложете го в CI, ако искате: фунията е граф, а граф може да се тества.
MCP сървър
Насочете агент към /mcp и нека той създава и проверява фунии. Инструментите с възможност за изпращане изискват изрично потвърждение и са ограничени от квота, така че погрешно прочетен промпт не може да се превърне в петдесет хиляди имейла.
Изходящи уебкукове
Подписани, с повторни опити с нарастващо изчакване, поне веднъж. Същият речник на събитията, който използват докладите, така че складът ви за данни и таблото ви да не спорят какво означава „доставено“.
Изтриване, което действително достига
Заявка за изтриване премахва контакта и историята на съобщенията му тук и се разпространява към всяка сестринска услуга, съхранявала копие. Една заявка, един резултат и нещо, което можете да посочите, когато ви попитат.
Къде лежи границата
ClickSomo съхранява пощенски списък и това, което списъкът е направил. Той не е вашата потребителска база данни и не се опитва да бъде: контакт никога не носи идентификационни данни, никога не влиза и никога не се превръща в акаунт. Вашите потребители живеят във вашия продукт; контактите живеят тук, а двете са свързани с имейл адрес и събитията, които изберете да изпратите.
Това разделение е умишлено и е причината моделът на съгласие да работи. Вие сте администраторът на данните за вашите потребители; ние обработваме от ваше име. Дизайн, при който маркетингов инструмент тихо се превръща в хранилище за идентичност, е такъв, който не може да бъде разплетен по-късно, и е точно провалът, който този е изграден да избегне.
Практическият вариант: изпращайте събитията, изпращайте атрибутите, по които искате да сегментирате, и дръжте всичко останало там, където е. Ако се хванете, че бутате цялата си схема насам, сегментът, който се опитвате да изградите, вероятно е заявка във вашата собствена база данни, която трябва да пристига като един булев атрибут.