clickSomo

Kontak & persetujuan

Daftar yang bisa Anda pertanggungjawabkan, bukan sekadar daftar yang Anda miliki

Siapa pun bisa menyimpan sepuluh ribu alamat surel. Pertanyaan yang penting — yang ditanyakan oleh regulator, penyedia layanan, dan hati nurani Anda sendiri dengan kata-kata yang sedikit berbeda — adalah dari mana masing-masing alamat itu berasal dan atas dasar apa Anda boleh menulis kepadanya. ClickSomo menjadikan hal itu fakta yang tersimpan, bukan sesuatu yang harus Anda rekonstruksi.

Identitas adalah alamat surel

Satu kontak per alamat per proyek, ditegakkan oleh basis data, bukan oleh harapan. Alamat dinormalisasi saat ditulis, tidak pernah saat dibaca — normalisasi saat membaca membuat kendala itu hanya hiasan yang membiarkan Anna@ dan anna@ masuk keduanya.

Nomor telepon disimpan dalam format E.164 jika ada, tetapi nomor telepon adalah atribut, bukan identitas. Tidak ada grafik resolusi identitas, tidak ada protokol penggabungan, dan tidak ada jejak audit penggabungan, karena setiap kontak di sini datang melalui saluran yang sudah memiliki alamat: impor, formulir, langganan, atau kode Anda sendiri.

Nama disimpan secara utuh

display_name disimpan persis seperti yang diberikan dan tidak pernah dipecah menjadi bagian-bagian. Pemecahan nama adalah pabrik bug — "van der Berg", "Kim Min-jun", nama tunggal, gelar, dan setiap konvensi urutan yang bukan Anglo — dan pemecahan yang salah muncul di merge tag sebagai "Dear van,", yang lebih buruk daripada tidak ada personalisasi sama sekali.

Bagian terstruktur hanya ada untuk sumber yang sudah menyediakannya terpisah. Tidak ada yang diturunkan. Dan nama yang diketik sendiri oleh seseorang tidak pernah ditimpa oleh CSV berikutnya yang kebetulan mengamati sesuatu yang berbeda, karena last-write-wins membiarkan impor yang paling ceroboh menang.

Satu kontakApa yang disimpan
  • 1IdentitasSurel, dinormalisasi. Unik dalam proyek.
  • 2NamaDisimpan utuh. first_name diturunkan saat render, tidak pernah disimpan.
  • 3AtributApa saja yang Anda mau, sebagai JSON. Milik Anda, dan dapat diinterpolasi sebagai attrs.*.
  • 4Tag dan daftarTag adalah entitas kelas satu dan hidup di satu penyimpanan; daftar adalah keanggotaan yang eksplisit.
  • 5PersetujuanSatu baris per saluran, dengan dasar hukum dan buktinya.
  • 6PeristiwaLog tambah-saja dari semua yang dilakukan orang ini. Tabel tempat produk bergantung.
  • ×Tidak pernahTidak ada kata sandi, tidak ada hash, tidak ada sesi, tidak ada kunci API. Kolom yang mengautentikasi seseorang adalah insiden, bukan fitur.

Dibatasi untuk tenant dan proyek, keduanya

Buku besar persetujuan

Tidak adanya izin bukanlah izin

Satu baris per kontak per saluran — surel, SMS, surat, push — masing-masing membawa status, dasar hukum, sumber, bukti, penanda waktu, dan yurisdiksi. Kontak tanpa baris dasar untuk suatu saluran tidak dapat dikirim apa pun di saluran itu. Bukan "ditandai". Tidak bisa.

consent

Seseorang secara aktif meminta. Pengiriman formulir dengan bukti yang disimpan, double opt-in, kotak centang yang mereka centang sendiri. Ini dasar terkuat dan satu-satunya yang dapat dihasilkan oleh formulir.

legitimate_interest

Yang terbaik yang bisa dicapai impor CSV. Lembar kerja tidak dapat mengingat seseorang menyetujui sesuatu, jadi tidak pernah diizinkan mengklaim mereka menyetujuinya — dan mengunggah ulang berkas yang sama tidak menaikkan levelnya.

contract

Anda menulis kepada mereka karena sesuatu yang menjadi pihak Anda berdua. Pengingat layanan, pemberitahuan perpanjangan, hal yang akan membuat mereka kesal jika tidak menerimanya.

Sebelum kampanye dikirim, Anda melihat campuran dasar dari audiensnya: berapa banyak orang ini yang meminta, berapa banyak yang Anda jangkau atas dasar kepentingan yang sah, dan berapa banyak yang ada karena kontrak. Ini satu angka yang telah menghentikan lebih banyak pengiriman buruk daripada spanduk peringatan apa pun yang pernah ditulis.

Mengapa ini lebih ketat daripada yang Anda butuhkan: ini sebenarnya bukan tentang Anda. Reputasi pengiriman massal adalah sumber daya bersama, dan satu daftar yang ceroboh meracuni sumur bagi semua orang yang mengirim dari infrastruktur yang sama. Tingkat keluhan dan bounce per tenant dipantau, dan akun yang tingkatnya melampaui ambang batas dibatasi di sini — sebelum penyedia melakukannya kepada semua orang sekaligus.

Di balik setiap baris dalam daftar, ada seseorang yang berkata ya.

Empat jalur masuk

Setiap rute masuk ke daftar Anda adalah Anda, bertindak atas data Anda sendiri

Tidak ada jalur ingest token layanan dan tidak ada produk saudara yang diam-diam menulis ke kontak Anda. Jika Anda ingin seseorang masuk ke daftar, salah satu dari empat jalur inilah yang menempatkannya di sana.

Impor CSV

Dipetakan kolom demi kolom, dinormalisasi saat penulisan, diperiksa MX agar domain mati dan salah ketik tertangkap sebelum hard-bounce, dan didaratkan dengan dasar yang Anda tetapkan secara eksplisit. Impor mendapatkan id, dan setiap kontak yang dibuatnya menunjuk kembali ke sana.

Formulir ClickSomo

Dirender dari dokumen yang sama dengan yang lainnya, dengan validasi, honeypot, dan pembatasan laju. Pengiriman adalah satu-satunya rute yang secara sah dapat menghasilkan consent, karena hanya di sanalah orangnya hadir.

Halaman yang Anda buat di dash-b

Perancang dasbor menerbitkan halaman; formulir di salah satunya mengirim data ke sini dengan kredensial Anda sendiri. Validasi yang sama, penanganan persetujuan yang sama, tanpa integrasi kedua yang harus dipelihara.

API publik

POST /v1/contacts dengan token Anda sendiri, semantik upsert, kunci idempotensi dihormati. Aplikasi Anda sudah tahu siapa yang mendaftar; inilah jalur terpendek dari fakta itu ke sebuah funnel.

Segmen adalah predikat, yang dikompilasi

Segmen adalah pohon predikat tersimpan atas kolom kontak, atribut, tag, keanggotaan daftar, dan perilaku, dikompilasi ke SQL dan disimpan dalam cache beserta jumlahnya. Operatornya adalah operator biasa — equals, not equals, in, not in, starts with, ends with, contains, is set, is not set — digabungkan dengan and, or, dan not sedalam yang Anda perlukan.

Pratinjau sebelum Anda menggunakannya. Endpoint mengembalikan kontak nyata, sehingga pertanyaan "siapa yang benar-benar ada di dalamnya" Anda jawab dengan melihat, bukan dengan mengirim lalu mengetahuinya.

Segmen kemudian berperan ganda: sebagai audiens untuk kampanye, sebagai syarat pada cabang funnel, dan sebagai pemicu tersendiri — segment_enter memulai sebuah run begitu seseorang menjadi memenuhi syarat.

Pelanggan tetap yang pendiamPratinjau segmen · 412
  • 1Tagtags contains "regular"
  • 2Atributattrs.total_orders >= 3 — kolom Anda, nama Anda untuknya.
  • 3PerilakuTidak ada peristiwa order.paid dalam 90 hari terakhir.
  • 4PersetujuanDasar surel yang dapat digunakan. Kontak tanpa dasar tersebut tidak masuk dalam hitungan, karena memang tidak dapat dikirimi surel.
  • iPratinjau412 kontak, terdaftar. Dihitung ulang saat pengiriman, karena segmen adalah sebuah pertanyaan, bukan cuplikan.

Dikompilasi ke SQLJumlah disimpan dalam cache, jawaban langsung

Supresi, dan kapan diperiksa

Supresi berlaku per proyek dan global: hard bounce, keluhan, pembatalan langganan, entri manual, dan alamat peran. Semuanya diperiksa saat pengiriman, lalu sekali lagi di dalam layanan pengiriman itu sendiri.

Kata kedualah yang berperan. Funnel dengan jeda tiga hari memiliki jendela tiga hari di mana seseorang dapat berhenti berlangganan, dan sistem yang memeriksa supresi saat pesan diantrekan tetap akan mengirim surel kepadanya. Memeriksa saat pengiriman adalah perbedaan antara menghormati pembatalan langganan dan sekadar mencatatnya.

Penghapusan bekerja dengan cara yang sama: permintaan penghapusan menghapus kontak beserta riwayat pesannya di sini, dan menjangkau setiap layanan saudara yang menyimpan salinannya melalui jalur internal yang sama seperti yang digunakan keluarga lainnya. Ada satu tempat untuk meminta dan satu hal yang terjadi.