clickSomo

Kontakte & toestemming

'n Lys waarvoor jy kan staanslaan, nie net 'n lys wat jy het nie

Enigiemand kan tienduisend e-posadresse hê. Die vraag wat saak maak — die een wat 'n reguleerder, 'n verskaffer en jou eie gewete almal in effens ander woorde vra — is waar elke een vandaan gekom het en op watter gronde jy daarna mag skryf. ClickSomo maak dit 'n gestoorde feit in plaas van iets wat jy sou moes rekonstrueer.

Identiteit is die e-posadres

Een kontak per adres per projek, afgedwing deur die databasis eerder as deur hoop. Adresse word genormaliseer wanneer hulle geskryf word, nooit wanneer hulle gelees word nie — normaliseer by lees en die beperking is 'n versiering wat Anna@ en anna@ albei toelaat.

Telefoonnommers word in E.164 gestoor waar hulle bestaan, maar 'n telefoonnommer is 'n eienskap, nie 'n identiteit nie. Daar is geen identiteitsoplossingsgrafiek, geen samesmeltingsprotokol en geen ouditspoor van samesmeltings nie, want elke kontak hier kom deur 'n kanaal wat reeds 'n adres het: 'n invoer, 'n vorm, 'n intekening, of jou eie kode.

Die naam word heel gestoor

display_name word presies gehou soos dit gegee is en word nooit in dele opgedeel nie. Naamsplitsing is 'n foutfabriek — "van der Berg", "Kim Min-jun", eenlettername, titels, en elke volgordekonvensie wat nie Anglo is nie — en 'n verkeerde splitsing verskyn in 'n sammertag as "Geagte van,", wat erger is as geen personalisering nie.

Gestruktureerde dele bestaan slegs vir bronne wat hulle reeds geskei verskaf. Niks lei hulle af nie. En 'n naam wat iemand self getik het, word nooit oorskryf deur 'n latere CSV wat toevallig iets anders waargeneem het nie, want laaste-skryf-wen laat die slordigste invoer wen.

Een kontakWat gehou word
  • 1IdentiteitE-pos, genormaliseer. Uniek binne die projek.
  • 2NaamHeel gestoor. first_name word afgelei by weergawetyd, nooit gestoor nie.
  • 3EienskappeEnigiets wat jy wil, as JSON. Joune, en interpoleerbaar as attrs.*.
  • 4Etikette en lysteEtikette is eersteklas en woon in een stoor; lyste is eksplisiete lidmaatskap.
  • 5ToestemmingEen ry per kanaal, met 'n regmatige grondslag en sy bewys.
  • 6Gebeure'n Slegs-toevoer-logboek van alles wat hierdie persoon gedoen het. Die tabel waarop die produkt rus.
  • ×NooitGeen wagwoord, geen hash, geen sessie, geen API-sleutel nie. 'n Kolom wat iemand outentiseer sou 'n voorval wees, nie 'n funksie nie.

Beperk tot huurder en projek, albei

Die toestemmingsregister

Afwesigheid is nie toestemming nie

Een ry per kontak per kanaal — e-pos, SMS, brief, push — elkeen met 'n toestand, 'n regmatige grondslag, 'n bron, die bewys, die tydstempels en die jurisdiksie. 'n Kontak sonder 'n grondslag-ry vir 'n kanaal kan niks op daardie kanaal ontvang nie. Nie "is gemerk" nie. Kan nie.

consent

Iemand het aktief gevra. 'n Vormin diening met die bewys gestoor, 'n dubbele opt-in, 'n merkblokkie wat hulle self aangedui het. Dit is die sterkste grondslag en dit is die enigste een wat 'n vorm kan voortbring.

legitimate_interest

Die beste wat 'n CSV-invoer kan bereik. 'n Sigblad kan nie onthou dat iemand met iets ingestem het nie, dus mag dit nooit beweer dat hulle dit gedoen het nie — en die herlaai van dieselfde lêer gradeer dit nie op nie.

contract

Jy skryf aan hulle weens iets waarby jy albei party is. Die diensherinnering, die hernuwingskennisgewing, die ding wat hulle irritant sou vind om nie te ontvang nie.

Voordat 'n veldtog stuur, sien jy die grondslagmengsel van sy gehoor: hoeveel van hierdie mense gevra het, hoeveel jy onder wettige belang bereik, en hoeveel daar is weens 'n kontrak. Dit is een nommer wat meer slegte stuurings gestop het as enige waarskuwingsbanner wat ooit geskryf is.

Hoekom dit strenger is as wat nodig is vir jou: dit gaan eintlik nie oor jou nie. Uitsendingsreputasie in groot volume is 'n gedeelde hulpbron, en een sorgelose lys vergiftig die put vir almal wat vanaf dieselfde infrastruktuur stuur. Per-huurder klagte- en terugstuurkoerse word gemonitor, en 'n rekening waarvan die koerse die drempel oorskry word hier gedrossel — voordat 'n verskaffer dit vir almal gelyktydig doen.

Agter elke ry in die lys, het iemand ja gesê.

Vier maniere in

Elke roete in jou lys is jy, wat op jou eie data optree

Daar is geen diens-token-invoerbaan en geen susterprodukt wat stilletjies in jou kontakte skryf nie. As jy iemand op 'n lys wil hê, het een van hierdie vier hulle daar gesit.

CSV-invoer

Geotoe kolom vir kolom, genormaliseer by skryf, MX-gekontroleer sodat dooie en verkeerd gespelde domeine gevang word voordat hulle hard-terugstuur, en geplaas met 'n grondslag wat jy eksplisiet stel. Die invoer kry 'n id, en elke kontak wat dit geskep het, verwys daarna terug.

'n ClickSomo-vorm

Weergegee uit dieselfde dokument as alles anders, met validering, 'n honeypot en 'n koersbeperking. 'n Indiening is die enigste roete wat wettig consent kan voortbring, want dit is die enigste een waar die persoon teenwoordig is.

'n Bladsy wat jy in dash-b gebou het

Die dashbord-ontwerper publiseer bladsye; 'n vorm op een daarvan plaas hier met jou eie geloofsbriewe. Selfde validering, selfde toestemmingshantering, geen tweede integrasie om te onderhou nie.

Die publieke API

POST /v1/contacts met jou eie token, upsert-semantiek, die idempotensiesleutel word gerespekteer. Jou app weet alreeds wie aangemeld het; dit is die kortste pad van daardie feit na 'n tregter.

Segmente is 'n predikaat, gekompileer

'n Segment is 'n gestoorde predikaatboom oor kontakvelde, attribuute, etikette, lyslidmaatskap en gedrag, gekompileer na SQL en gekas met 'n telling. Die operateurs is die gewones — gelyk aan, nie gelyk aan nie, in, nie in nie, begin met, eindig met, bevat, is gestel, is nie gestel nie — gekombineer met en, of en nie tot die diepte wat jy ook nodig het.

Kry 'n voorskou daarvan voordat jy dit gebruik. Die eindpunt gee regte kontakte terug, dus is "wie is eintlik hierin" 'n vraag wat jy deur te kyk antwoord, eerder as deur te stuur en uit te vind.

Segmente doen dan dubbele werk: as gehoor vir 'n veldtog, as die voorwaarde op 'n tregtertak, en as sneller in eie reg — segment_enter begin 'n uitvoering die oomblik dat iemand in aanmerking kom.

Stil gereeldesSegmentvoorskou · 412
  • 1Etikettags contains "regular"
  • 2Attribuutattrs.total_orders >= 3 — jou veld, jou naam daarvoor.
  • 3GedragGeen order.paid-gebeurtenis in die laaste 90 dae nie.
  • 4Toestemming'n Bruikbare grondslag vir e-pos. Kontakte sonder een word nie in die telling ingesluit nie, want daar kon hoe dan ook nie aan hulle gestuur word nie.
  • iVoorskou412 kontakte, gelys. Word weer getel by stuurtyd, want 'n segment is 'n vraag en nie 'n kitsopname nie.

Gekompileer na SQLTelling gekas, antwoord intyds

Onderdrukking, en wanneer dit nagegaan word

Onderdrukkings is op projekvlak en globaal: harde bons, klagtes, uittekenings, handmatige inskrywings en roladresse. Hulle word by stuurtyd nagegaan, en dan weer binne die stuurdiens self.

Daardie tweede woord doen die werk. 'n Tregter met 'n driedagewag daarin het 'n driedaagse venster waarin iemand kan uitteken, en 'n stelsel wat onderdrukking nagegaan het toe die boodskap in die wagtou gestaan het, sal hulle hoe dan ook nog pos. Om by stuurtyd na te gaan is die verskil tussen 'n uittekening te eer en een bloot aan te teken.

Uitwissing werk op dieselfde manier: 'n verwyderingsversoek verwyder hier die kontak en hul boodskapgeskiedenis, en bereik elke susterdiens wat 'n kopie gehou het deur dieselfde interne baan wat die res van die familie gebruik. Daar is een plek om te vra en een ding wat gebeur.