Контакти та згода
Список, який ви можете захистити, а не просто список, який у вас є
Кожен може мати десять тисяч адрес електронної пошти. Питання, що має значення — те, яке регулятор, провайдер і ваш власний сумління ставлять у трохи різних словах — це звідки походить кожна з них і на якій підставі ви можете їй писати. ClickSomo перетворює це на збережений факт, а не на те, що вам довелося б реконструювати.
Ідентичність — це адреса електронної пошти
Один контакт на адресу в межах проєкту, це забезпечує база даних, а не надія. Адреси нормалізуються під час запису, а не під час читання — нормалізуйте при читанні, і обмеження стає лише декорацією, що пропускає і Anna@, і anna@.
Номери телефонів зберігаються у форматі E.164, якщо вони є, але номер телефону — це атрибут, а не ідентичність. Тут немає графа розпізнавання ідентичності, протоколу злиття та журналу аудиту злиттів, адже кожен контакт надходить через канал, який уже має адресу: імпорт, форму, підписку або ваш власний код.
Ім'я зберігається цілісно
display_name зберігається точно так, як його ввели, і ніколи не розбивається на частини. Розбиття імен — це фабрика помилок: «van der Berg», «Кім Мін-джун», односкладові імена, титули та всі порядки слів, відмінні від англійських. А неправильне розбиття з'являється в тезі злиття як «Шановний van,», що гірше, ніж узагалі без персоналізації.
Структуровані частини існують лише для джерел, які надають їх уже розділеними. Ніщо їх не виводить самостійно. Ім'я, яке людина ввела власноруч, ніколи не перезаписується пізнішим CSV, що випадково зафіксував щось інше, адже принцип «останній запис перемагає» дає перемогу найбільш недбалому імпорту.
- 1ІдентичністьЕлектронна пошта, нормалізована. Унікальна в межах проєкту.
- 2Ім'яЗберігається цілісно.
first_nameвиводиться під час рендерингу, ніколи не зберігається. - 3АтрибутиЩось завгодно, у форматі JSON. Ваші дані, які можна інтерполювати як
attrs.*. - 4Теги та спискиТеги є об'єктами першого класу і зберігаються в одному сховищі; списки — це явне членство.
- 5ЗгодаОдин рядок на канал, із правовою підставою та її доказами.
- 6ПодіїЖурнал лише для додавання, що фіксує все, що робила ця людина. Таблиця, на якій тримається весь продукт.
- ×НіколиНіяких паролів, хешів, сесій чи API-ключів. Колонка, яка автентифікує когось, — це інцидент, а не функція.
Обмежено і тенантом, і проєктом
Реєстр згод
Відсутність — це не дозвіл
Один рядок на контакт на канал — електронна пошта, SMS, лист, push — кожен із станом, правовою підставою, джерелом, доказами, часовими мітками та юрисдикцією. Контакту без рядка підстави для каналу не можна надіслати нічого через цей канал. Не «позначено». Неможливо.
consent
Людина активно погодилася. Надіслана форма зі збереженими доказами, подвійне підтвердження підписки, прапорець, який вона встановила сама. Це найсильніша підстава і єдина, яку може створити форма.
legitimate_interest
Найкраще, чим може завершитися імпорт із CSV. Таблиця не може пам'ятати, що людина на щось погодилася, тому їй ніколи не дозволяється це стверджувати — а повторне завантаження того самого файлу цього не змінює.
contract
Ви пишете їй через щось, стороною чого ви обидва є. Нагадування про сервіс, повідомлення про продовження, те, чого вона була б роздратована, не отримавши.
Перед надсиланням кампанії ви бачите розподіл підстав її аудиторії: скільки з цих людей дали згоду, скільки ви охоплюєте на підставі законного інтересу, а скільки тут через договір. Це одна цифра, яка зупинила більше поганих розсилок, ніж будь-який попереджувальний банер.
Чому це суворіше, ніж потрібно саме для вас: справа не в вас. Репутація масових розсилок — спільний ресурс, і одна недбала розсилка отруює колодязь для всіх, хто надсилає з тієї ж інфраструктури. Рівні скарг і відмов відстежуються для кожного тенанта, і акаунт, чиї показники перевищують поріг, обмежується тут — до того, як це зробить провайдер для всіх одразу.

За кожним рядком у списку стоїть чиєсь «так».
Чотири шляхи входу
Кожен шлях до вашого списку — це ви, діючі зі своїми власними даними
Немає каналу приймання через сервісні токени і немає сусіднього продукту, який тихо пише у ваші контакти. Якщо ви хочете бачити когось у списку, один із цих чотирьох шляхів його туди додав.
Імпорт CSV
Зіставлення колонка за колонкою, нормалізація під час запису, перевірка MX, щоб мертві та помилково набрані домени було виявлено до жорсткої відмови, і фіксація з підставою, яку ви задаєте явно. Імпорт отримує ідентифікатор, і кожен створений ним контакт посилається на нього.
Форма ClickSomo
Рендериться з того самого документа, що й усе інше, з валідацією, honeypot та обмеженням частоти. Надіслана форма — єдиний шлях, який може правомірно створити consent, адже це єдиний випадок, коли людина присутня.
Сторінка, яку ви створили в dash-b
Конструктор дашбордів публікує сторінки; форма на такій сторінці надсилає дані сюди з вашими власними обліковими даними. Та сама валідація, та сама обробка згоди, жодної другої інтеграції для підтримки.
Публічний API
POST /v1/contacts з вашим власним токеном, семантика upsert, підтримка ключа ідемпотентності. Ваш застосунок уже знає, хто зареєструвався; це найкоротший шлях від цього факту до воронки.
Сегменти — це предикат, скомпільований
Сегмент — це збережене дерево предикатів над полями контактів, атрибутами, тегами, належністю до списків і поведінкою, скомпільоване в SQL і кешоване з кількістю. Оператори — звичайні: дорівнює, не дорівнює, входить, не входить, починається з, закінчується на, містить, задано, не задано — поєднані через «і», «або» та «не» на будь-яку потрібну глибину.
Перегляньте його перед використанням. Ендпоінт повертає реальні контакти, тож на запитання «хто насправді тут» ви відповідаєте, подивившись, а не надіславши й дізнавшись.
Сегменти виконують подвійну роль: як аудиторія кампанії, як умова на гілці воронки та як самостійний тригер — segment_enter запускає прогон у мить, коли хтось стає відповідним.
- 1Тег
tags contains "regular" - 2Атрибут
attrs.total_orders >= 3— ваше поле, ваша назва для нього. - 3ПоведінкаНемає події
order.paidза останні 90 днів. - 4ЗгодаПридатна основа для електронної пошти. Контакти без неї не враховані в кількості, адже їм усе одно неможливо надіслати листа.
- iПопередній перегляд412 контактів, перелічено. Перераховано знову під час надсилання, адже сегмент — це запитання, а не знімок.
Скомпільовано в SQLКількість кешована, відповідь актуальна
Виключення та коли воно перевіряється
Виключення мають проєктну та глобальну дію: жорсткі відмови, скарги, відписки, ручні записи та службові адреси. Вони перевіряються під час надсилання, а потім ще раз усередині самої служби надсилання.
Друга перевірка і робить роботу. Воронка з триденним очікуванням має триденне вікно, протягом якого хтось може відписатися, і система, що перевірила виключення під час постановки в чергу, усе одно надішле листа. Перевірка під час надсилання — це різниця між повагою до відписки та її фіксацією.
Видалення працює так само: запит на видалення прибирає контакт і його історію повідомлень тут, а також сягає кожного сусіднього сервісу, що зберігав копію, через той самий внутрішній канал, яким користується вся родина. Є одне місце, куди звертатися, і одна дія, що відбувається.