Kontakter & Zoustëmmung
Eng Lëscht, déi Dir verdeedegen däit — net just eng Lëscht, déi Dir hutt
Jiddereen kann zéngdausend E-Mail-Adressen hunn. D'Fro, déi zält — déi eng Regulater, e Provider an Äert Gewëssen all a liicht anere Wierder stellen — ass, wou jiddereen dovun hierkënnt an op wat fir enger Grondlag Dir däerft doru schreiwen. ClickSomo mécht doraus eng gespäichert Tatsaach, an net eppes, wat Dir hätt misse rekonstruéieren.
D'Identitéit ass d'E-Mail-Adress
Ee Kontakt pro Adress pro Projet, duerch d'Datebank duerchgesat an net duerch Hoffnung. Adressen normaliséiert gi beim Schreiwen, ni beim Liesen — normaliséiert ee beim Liesen, ass d'Constraint just eng Dekoratioun, déi Anna@ an anna@ béid eraléit.
Telefonnummer gi gespäichert, wou se existéieren, an E.164, awer eng Telefonnummer ass en Attribut, keng Identitéit. Et gëtt keen Identitéits-Resolutiouns-Graph, keng Merge-Prozedur an keen Audit-Trail vu Merges, well all Kontakt hei iwwer e Kanal kënnt, deen schonn eng Adress huet: en Import, e Formulaire, eng Abonnement oder Ären eegene Code.
Den Numm gëtt ganz gespäichert
display_name gëtt genee sou gespäichert, wéi en uginn gouf, an ni an Deeler opgedeelt. Nimm opzedeelen ass eng Bug-Fabrik — "van der Berg", "Kim Min-jun", Mononymmen, Titelen, an all Reiefolleg-Konventioun, déi net anglo-amerikanesch ass — an eng falsch Opdeelung erschéngt an engem Merge-Tag als "Léif van,", wat schlimmer ass wéi keng Personalisatioun iwwerhaapt.
Strukturéiert Deeler gëtt et just fir Quellen, déi se schonn getrennt liwweren. Näischt leet se of. An en Numm, deen een selwer aginn huet, gëtt ni vun engem spéidere CSV iwwerschriwwen, deen zufälleg eppes aneres gesinn huet, well last-write-wins léisst den schlëmmsten Import gewannen.
- 1IdentitéitE-Mail, normaliséiert. Eenzelarteg am Projet.
- 2NummGanz gespäichert.
first_namegëtt beim Rendere ofgeleet, ni gespäichert. - 3AttributerAlles wat Dir wëllt, als JSON. Äer, an interpoléierbar als
attrs.*. - 4Tags a LëschtenTags sinn éischter Klass a liewen an engem Späicher; Lëschten sinn explizit Memberchaft.
- 5ZoustëmmungEng Zeil pro Kanal, mat enger legaler Grondlag an hire Beweiser.
- 6EvenementerEn Append-only Logbuch vun allem, wat dës Persoun gemaach huet. D'Tabell, op där d'Produkt hänkt.
- ×NiKee Passwuert, keen Hash, keng Sessioun, keen API-Schlëssel. Eng Kolonn, déi een authentifizéiert, wier en Zwëschenfall, keng Funktioun.
Op Tenant a Projet limitéiert, béid
D'Zoustëmmungsregëster
D'Fehle vun engem Grondlag ass keng Erlaabnis
Eng Zeil pro Kontakt pro Kanal — E-Mail, SMS, Bréif, Push — all mat engem Zoustand, enger legaler Grondlag, enger Quell, de Beweiser, den Zäitstempelen an der Jurisdiktioun. E Kontakt ouni Grondlag-Zeil fir e Kanal kann op dësem Kanal näischt kréien. Net "ass markéiert". Kann net.
consent
Et huet een aktiv gefrot. E Formulaire-Submit mat gespäichertem Beweis, en Double-Opt-in, eng Checkbox, déi een selwer ugekratzt huet. Dëst ass déi stäerkst Grondlag an déi eenzeg, déi e Formulaire produzéieren kann.
legitimate_interest
Dat Bescht, wat en CSV-Import gëtt. Eng Tabell kann sech net erënneren, datt een zoustëmmt huet, sou datt se ni däerf behaapten, hie géif et — an d'selwecht Datei nach eng Kéier eropzelueden verbessert et net.
contract
Dir schreift un si well vun eppes, wou Dir allebéid Deel sinn. D'Service-Erënnerung, d'Verängerungsnotiz, d'Saach, déi se geéiert hunn, wann se se net kréien.
Ier eng Campagne verschéckt gëtt, gesitt Dir d'Grondlag-Mix vun hirem Publikum: wivill vun dëse Leit gefrot hunn, wivill Dir ënner berechtegtem Interesse erreecht, a wivill do sinn wéinst engem Kontrakt. Et ass eng Zuel, déi méi schlecht Sendungen gestoppt huet wéi all Warnbanner, deen jeemools geschriwwe gouf.
Firwat dës méi streng ass wéi néideg fir Iech: et geet eigentlech net ëm Iech. D'Reputatioun vu Bulk-Sendungen ass eng geteilt Ressource, an eng onvirsiichteg Lëscht vergëft de Puet fir all déi, déi vun der selwechter Infrastruktur senden. Pro-Tenant Beschwerde- a Bounce-Rate ginn iwwerwaacht, an e Kontou, deem seng Raten den Schwellwäert iwwerschreiden, gëtt hei gedrosselt — ier en Provider et fir all d'Leit op eemol mécht.

Hanner all Zeil an der Lëscht huet een Jo gesot.
Véier Weeër eran
All Wee an Är Lëscht sinn Dir, déi op Ären eegene Donnéeën handelt
Et gëtt keng Service-Token-Ingest-Lane an keng Schwësterprodukt, déi roueg an Är Kontakter schreiwen. Wann Dir een op eng Lëscht wëllt, dann huet een vun dëse véier se dohigesat.
CSV-Import
Kolonn fir Kolonn zugeuerdnéiert, beim Schreiwen normaliséiert, MX-gepréift, sou datt doudeg a vertippte Domaine erfaasst ginn ier se hard-bounce, an mat enger Grondlag gelant, déi Dir explizit setzt. Den Import kritt eng ID, an all Kontakt, deen en ugeluecht huet, weist op hien zeréck.
E ClickSomo-Formulaire
Aus dem selwechten Dokument gerendert wéi alles aner, mat Validatioun, engem Honeypot an engem Rate-Limit. Eng Ofgab ass déi eenzeg Route, déi legitim e consent-Grondlag produzéiere kann, well et déi eenzeg ass, wou d'Persoun präsent ass.
Eng Säit, déi s du an dash-b gebaut hues
Den Dashboard-Designer publizéiert Säiten; e Formulaire op enger dovun schéckt hei mat dengen eegene Logindaten. D'selwecht Validatioun, déi selwecht Consent-Behandlung, keng zweet Integratioun fir ze pflegen.
Déi ëffentlech API
POST /v1/contacts mat dengem eegene Token, Upsert-Semantik, Idempotenz-Schlëssel gëtt respektéiert. Deng App weess schonn, wie sech ugemellt huet; dat ass de kierzste Wee vun där Tatsaach zu engem Funnel.
Segmenter sinn e Prädikat, kompiléiert
E Segment ass e gespäichert Prädikat-Bam iwwer Kontaktfelder, Attributer, Tags, Lëschte-Memberschaft a Verhalen, kompiléiert zu SQL an zwëschegespäichert mat enger Zuel. D'Operateure sinn déi gewinnt — equals, not equals, in, not in, fänkt un mat, endet mat, enthält, ass gesat, ass net gesat — kombinéiert mat and, or an not op jiddwer Déift, déi s du brauchs.
Kuck et un, ier s de et benotzt. Den Endpoint gëtt richteg Kontakter zréck, also ass "wie ass eigentlech dran" eng Fro, déi s du duerch kucken beäntweren an net duerch schécken a feststellen.
Segmenter maachen dann Duebeldéngscht: als Publikum fir eng Kampagne, als Bedingung op engem Funnel-Ast a als Ausléiser am eegene Sënn — segment_enter fänkt e Run un, am Moment wou een berechtegt gëtt.
- 1Tag
tags contains "regular" - 2Attribut
attrs.total_orders >= 3— däin Feld, däin Numm dofir. - 3VerhalenKee
order.paid-Event an de leschten 90 Deeg. - 4ConsentEng benotzbar E-Mail-Grondlag. Kontakter ouni eng sinn net an der Zuel, well si souwieso net ugeschriwwe kënne ginn.
- iVirschau412 Kontakter, opgelëscht. Beim Verschécken nach eng Kéier gezielt, well e Segment eng Fro ass an kee Schnappschoss.
Zu SQL kompiléiertZuel zwëschegespäichert, Äntwert live
Suppression, a wou se gepréift gëtt
Suppressioune si projekt- a global: hard bounces, Beschwerden, Unsubscribes, manuell Androen a Roll-Adressen. Si ginn beim Verschécken gepréift, an dann nach eng Kéier am Verschéck-Déngscht selwer.
Dat zweet Wuert mécht d'Aarbecht. E Funnel mat enger dräi-Daag-Waartzäit huet en dräi-Daag-Fënster, an där een sech kann ofmellen, an e System, deen d'Suppression gepréift huet, wéi d'Noriicht an d'Queue koum, schéckt hinnen trotzdeem. D'Prüfung beim Verschécken ass den Ënnerscheed tëscht engem Unsubscribe respektéieren an een opzeechnen.
Läschen funktionnéiert genee esou: eng Läsch-Ufro hëlt de Kontakt a seng Noriichten-Historie hei ewech, a erreecht all Geschwëster-Déngscht, deen eng Kopie hat, iwwer déi selwecht intern Linn, déi de Rescht vun der Famill benotzt. Et gëtt eng Plaz fir ze froen an eng Saach, déi geschitt.