clickSomo

Kontaktar og samtykke

Ei liste du kan forsvara, ikkje berre ei liste du har

Kven som helst kan ha ti tusen e-postadresser. Spørsmålet som verkeleg tel — det ein tilsynsmyndigheit, ein leverandør og ditt eige samvit alle spør om, i litt ulike ord — er kvar kvar av dei kjem frå og på kva grunnlag du kan skriva til dei. ClickSomo gjer dette til eit lagra faktum i staden for noko du måtte ha rekonstruert.

Identiteten er e-postadressa

Éin kontakt per adresse per prosjekt, handheva av databasen og ikkje av von. Adresser blir normaliserte når dei blir skrivne, aldri når dei blir lesne — normaliserer du ved lesing, er avgrensinga berre pynt som slepp både Anna@ og anna@ inn.

Telefonnummer blir lagra i E.164 der dei finst, men eit telefonnummer er ein eigenskap, ikkje ein identitet. Det finst ingen identitetsoppløysingsgraf, ingen fletteprotokoll og ingen revisjonsspor av flettingar, fordi kvar kontakt her kjem inn gjennom ein kanal som allereie har ei adresse: ein import, eit skjema, ei påmelding, eller din eigen kode.

Namnet blir lagra heilt

display_name blir lagra akkurat slik det vart oppgjeve og blir aldri delt opp i delar. Namnsplitting er ein feilfabrikk — «van der Berg», «Kim Min-jun», mononym, titlar, og kvar ordningskonvensjon som ikkje er anglo — og ein feil splitting dukkar opp i ein flettetag som «Kjære van,», noko som er verre enn ingen personalisering i det heile.

Strukturerte delar finst berre for kjelder som leverer dei allereie atskilde. Ingenting avleiar dei. Og eit namn nokon sjølv har skrive inn blir aldri overskrive av ei seinare CSV som tilfeldigvis observerte noko anna, fordi sist-skriv-vinn lar det slurveteaste importen vinna.

Éin kontaktKva som blir lagra
  • 1IdentitetE-post, normalisert. Unik innanfor prosjektet.
  • 2NamnLagra heilt. first_name blir avleia ved vising, aldri lagra.
  • 3EigenskaparKva du vil, som JSON. Dine, og interpolerbare som attrs.*.
  • 4Etikettar og listerEtikettar er førsteklasses og ligg i eitt lager; lister er eksplisitt medlemskap.
  • 5SamtykkeÉi rad per kanal, med eit lovleg grunnlag og dokumentasjonen for det.
  • 6HendingarEin logg som berre kan utvidast, over alt denne personen gjorde. Tabellen heile produktet kviler på.
  • ×AldriIngen passord, ingen hash, ingen økt, ingen API-nøkkel. Ei kolonne som autentiserer nokon ville vere ein hending, ikkje ein funksjon.

Avgrensa til både leigetaker og prosjekt

Samtykkeregisteret

Fråver er ikkje løyve

Éi rad per kontakt per kanal — e-post, SMS, brev, push — kvar med ein tilstand, eit lovleg grunnlag, ei kjelde, dokumentasjonen, tidsstempla og jurisdiksjonen. Ein kontakt utan grunnlagsrad for ein kanal kan ikkje få noko sendt på den kanalen. Ikkje «er flagga». Kan ikkje.

consent

Nokon har aktivt spurt om det. Eit innsendt skjema med dokumentasjon lagra, ein dobbel påmelding, ei avkryssing dei sjølve gjorde. Dette er det sterkaste grunnlaget, og det einaste eit skjema kan produsere.

legitimate_interest

Det beste ein CSV-import kan lande som. Eit rekneark kan ikkje hugse at nokon samtykte i noko, så det får aldri påstå at dei gjorde det — og å lasta opp same fila på nytt oppgraderer det ikkje.

contract

Du skriv til dei fordi de begge er part i noko. Tenesteminnatet, fornyingsvarselet, det dei ville blitt irriterte over ikkje å få.

Før eit utsend sendast, ser du grunnlagsblandinga i målgruppa: kor mange av desse personene spurde sjølve, kor mange du når under legitimt interesse, og kor mange som er der på grunn av ein kontrakt. Det er eitt tal som har stansa fleire dårlege utsend enn noko varselbanner nokon gong skrive.

Kvifor dette er strengare enn nødvendig for deg: det handlar eigentleg ikkje om deg. Omdømet til masseutsending er ei felles ressurs, og éi uaktsam liste forgiftar brønnen for alle som sendar frå same infrastrukturen. Klage- og returfrekvensar per leigetaker blir overvaka, og ein konto som bryt grenseverdien blir drosla her — før ein leverandør gjer det for alle på ein gong.

Bak kvar rad i lista har nokon sagt ja.

Fire vegar inn

Kvar veg inn i lista di er du, som handlar på eigne data

Det finst ingen inntakslane for tenestetoken og inga systervareprodukt som stille skriv inn i kontaktane dine. Vil du ha nokon på ei liste, er det ein av desse fire som sette dei der.

CSV-import

Mappa kolonne for kolonne, normalisert ved skriving, MX-sjekka så døde og feilstava domene blir fanga før dei hardt returnerer, og landa med eit grunnlag du setjer eksplisitt. Importen får ein id, og kvar kontakt den oppretta peikar tilbake på den.

Eit ClickSomo-skjema

Vist frå same dokument som alt anna, med validering, ein honeypot og ein frekvensgrense. Ei innsending er den einaste vegen som legitimt kan produsere consent, fordi det er den einaste der personen er til stades.

Ei side du bygde i dash-b

Dashborddesigneren publiserer sider; eit skjema på ei av dei postar hit med dine eigne credentials. Same validering, same samtykkehandtering, ingen andre integrasjon å vedlikehalde.

Det offentlege API-et

POST /v1/contacts med din eigen token, upsert-semantikk, idempotensnøkkel blir respektert. Appen din veit allereie kven som har registrert seg; dette er den kortaste vegen frå det faktum til ein trakt.

Segment er eit predikat, kompilert

Eit segment er eit lagra predikattre over kontaktfelt, attributtar, merkelapp, listemedlemskap og åtferd, kompilert til SQL og bufra med eit tal. Operatorane er dei vanlege — lik, ulik, in, not in, startar med, sluttar på, inneheld, er sett, er ikkje sett — kombinert med and, or og not til den djupna du treng.

Førehandsvis det før du bruker det. Endepunktet returnerer ekte kontaktar, så «kven er eigentleg med her» er eit spørsmål du svarer ved å sjå, ikkje ved å senda og finna det ut.

Segment gjer så dobbeltteneste: som publikum for eit utsend, som vilkåret på ein traktgrein, og som utløysar i seg sjølv — segment_enter startar ein køyring i det augneblinke nokon blir kvalifisert.

Stille faste kundarSegmentførehandsvising · 412
  • 1Merkelapptags contains "regular"
  • 2Attributtattrs.total_orders >= 3 — ditt felt, ditt namn på det.
  • 3ÅtferdIngen order.paid-hending dei siste 90 dagane.
  • 4SamtykkeEit brukbart e-postgrunnlag. Kontaktar utan ein er ikkje med i talet, for dei kunne uansett ikkje blitt sendt til.
  • iFørehandsvising412 kontaktar, lista opp. Talde på nytt ved utsend, for eit segment er eit spørsmål og ikkje eit øyeblikksbilete.

Kompilert til SQLTalet bufra, svaret live

Undertrykking, og når den blir kontrollert

Undertrykkingar er prosjektomfattande og globale: harde retur, klager, avmeldingar, manuelle oppføringar og rolleadresser. Dei blir kontrollerte ved utsendingstid, og så igjen inne i tenesta som sender sjølv.

Det andre ordet er det som gjer jobben. Ein trakt med ein tre-dagers venting i seg har eit tre-dagers vindauge der nokon kan melda seg av, og eit system som kontrollerte undertrykking då meldinga blei lagt i kø vil likevel senda dei e-post. Å kontrollere ved utsending er forskjellen på å respektere ein avmelding og å registrere ein.

Sletting fungerer på same måte: ein slettingsførespurnad fjernar kontakten og meldingshistorikken deira her, og når alle søstertenester som heldt ein kopi gjennom same interne kanalen som resten av familien bruker. Det finst eitt stad å spørja og éi ting som skjer.