Drip campaigns

FeatureEmailService
Shipped
September 17, 2026 at 12:38 AM UTC
Author
Kamo
Commit
3516946

A drip is an automated sequence of emails a person enters when something happens: a lead arrives (by hand, imported, or from an integration), a lead's status or sub-status changes, a lead is reassigned or claimed with a credit, a lead's birthday or anniversary comes round, a team member or member account is created, a campaign email is sent, opened, clicked or goes unanswered, someone finishes another drip, or a member adds them by hand. Every email has its own wait, send window (in the org's or the contact's time zone) and condition on how the previous email did. Sending. A drip email is queued on a hidden edition campaign per (step, cycle) through **************** so it goes out exactly like campaign mail: opt-out and eligibility checks, the releaser's hosts, warm-up and send window, DKIM, tracking, unsubscribe, bounces and the staged outbox. Editions are left out of the campaigns list, the snapshot, the home widget and the progress and engagement frames, and the campaign endpoints answer 404 for one. Engine (drip/DripEngine): every 5s on its own thread under lease email-drip-engine, it drains email_drip_triggers (exits first, then enrolments), sweeps birthdays and anniversaries once per org-local day, and moves each due person on: waits count from when the previous email was actually sent, a bounce or opt-out ends the run, a person is read again before each email (merge tokens: first_name, agent_name, market and the rest), and a finished run lets chained drips start. Re-entry is once, again after finishing (with a cooldown) or restart; exit rules take people out on a status change, a reassignment or a click on a drip link. API: /api/email/drips (list, options, CRUD, activate, pause, archive, unarchive, duplicate, people, manual enrolment, removal, timelines, activity), VIEW_BULK_EMAIL to read and MANAGE_BULK_EMAIL to change. Live: type "drip" frames on the campaigns topic, coalesced per second. Campaign sends, first opens and link clicks (now with the URL) are handed to kamo-shared-library's DripTriggerRecorder. Tables and the edition columns were applied by hand **************** before this commit.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing