clickSomo

總覽

四个运转部件,而且都很普通

联系人,附带你可以向他们发送什么的记录。一张决定何时发生什么的图。能渲染成图想发送的任何内容的文档。还有一个引导联系人走完这张图的引擎——不弄丢任何人、不重复发送,也不会在你周五下午四点半编辑它时出问题。

1联系人他们是谁,以及你依据什么可以给他们写信。
2触发器某件事发生了。一次运行开始。
3图等待、条件、分流、目标、发送。
4素材一份文档,渲染到目标渠道。
5发送你的邮箱或你的服务商。抑制名单在这里检查。
6事件送达、打开、点击——回写到联系人。

第六步反哺第二步。一封邮件被打开本身就是触发器;一个链接被点击是触发器;两者九十天都没有出现,也是一个可以进入的细分。这个循环就是整个产品,下面的一切都只是它六个部件之一的构建细节。

接下来要说的不是一份为了显得厉害而排列的功能清单。它是这个系统的形状,按一个人实际遇到它的顺序呈现。

联系人平面和账号平面永不相交

客户是你——你用 castomo 账号登录,ClickSomo 永远看不到你的密码,因为身份属于一个独立的服务,并且是离线验证的。

联系人是你营销的对象。联系人从不登录,从不持有凭据,也永远不会变成账号。这两个平面被永久分开,因为你自己的联系人的数据控制者是你,我们是处理者——正是这种安排让整件事合法,而不只是方便。

它还有一个实际的好处。一笔付款不会创建联系人。一次预订不会创建联系人。不存在任何暗门,能让兄弟服务在没有写信依据的情况下把某人悄悄加进你的列表。

联系人、细分与同意 →

ClickSomo 关于你存储了什么边界
  • 1三个标识符租户、项目和用户,以 uuid 形式。没有密码,没有个人资料,没有银行卡。
  • 2配额以数字形式联系人、发送次数、AI 生成次数。没有金额,没有货币,没有发票——计费词汇不会越过这条线。
  • 3你的联系人你的。范围限定在租户与项目的组合上,被遗忘的项目什么都看不到,而不是看到别人的数据行。

两个平面,永久分离

这里的一切都发生在某人的口袋里。

引擎

一次运行是一行数据,一次等待是它上面的一个时间

每个联系人、每个漏斗版本只有一次运行。工作进程租用到期的运行,执行节点直到遇到等待或终止节点,并写入下一次唤醒时间。这就是全部循环,它的朴素正是要点。

节点是纯函数

输入是运行、联系人和节点——其副作用与运行自身的推进在同一个事务中提交。工作进程在“发送”和“推进”之间被杀掉不会留下半完成的事,这正是让重试安全、而不是发出第二封邮件的原因。

等待不是排队的行

等待只是在运行上设置 wake_at。下游不会预先写入任何东西,所以当你编辑漏斗时,下游没有东西可被破坏——这正是所有在入口就预先物化序列的工具的失败模式。

幂等性是一个索引

不是先检查再插入:这两步之间的窗口恰好宽到足以重复发送。对运行、节点、联系人和窗口建的唯一索引才是真正阻止它的东西,而且在高负载下也能阻止。

每个触发器、动作和流程节点 →

它不是什么

它不是 CRM。它保存的是邮件列表和该列表做过什么,而不是你的销售管道、交易或发票。如果你需要这些,保留你现有的系统并向它发送事件即可。

它不是一个自行决定发送什么的智能体。AI 在你指定的位置起草漏斗或文案;它产出的图随后由与人类完全相同的校验器把关,未经人类发布,任何东西都不会到达真实的人。这是一个刻意的限制,也是运行可复现的原因。

它不是邮件服务器,也永远不会是。投递信誉属于你的服务商或你自己的邮箱——这也是为什么别人的糟糕活动不会在这里损害你的。

坦白的部分:自带发送渠道是一个真实的取舍。你需要配置一个邮箱或服务商,添加三条 DNS 记录并确认验证通过,而且如果你发送了被人举报的内容,后果由你承担。作为交换,你无需为投递付费,你的信誉不会与陌生人混在一起,更换服务商也不会改变其上游的任何东西。