Scheduled messages
and automated funnels

One click — a three-step welcome chain. Another — a reminder an hour before an event. A third — a recurring newsletter. All via REST API or dashboard.

· Once / Drip / Recurring — 3 types, worker every 30 s

Reminder · tomorrow 14:00
One message at a set time. Perfect for reminders, scheduled promos, delayed event notifications.
POST /v1/scheduled 30s tick · SKIP LOCKED
3
schedule types in one API
50
steps per drip chain
30 s
worker tick interval
SKIP
LOCKED in worker against races

Without us

Own cron or SaaS funnels — no joke

Cron + worker + DB

Every 30 seconds poll DB, take jobs with FOR UPDATE SKIP LOCKED, retry on failure — non-trivial infra.

Drip is a state graph

Subscription trigger, steps with delays, conditional transitions, webhook on chain completion. Building this — weeks of work.

Flodesk, ConvertKit and alternatives — from $29/mo

And all over email. But you want messenger, where open rate is 95% instead of 20%.

What's inside

Three schedule types through one API

Once — delayed send

POST /v1/scheduled with subscriber_id and scheduled_at in ISO 8601. Reminders, planned promos, event notifications.

Drip — chains on subscribe

Triggers: subscription, segment, permission. Up to 50 steps, each with delay_minutes. Webhook drip.step_sent and drip.completed.

Recurring

Every N hours (interval_hours ≥ 1). Broadcast-style with channel/segment/permission filters. Media and button support.

Personal variables

Like in broadcast: {{first_name}}, {{username}}, {{lang}}. Rendered individually for each subscriber.

FOR UPDATE SKIP LOCKED

Two workers won't process the same job. Scale workers horizontally without extra coordination.

drip.completed webhook

On chain completion an event fires — you can trigger your next flow step (e.g., unlock content).

How it works

From trigger to send

01

Create a schedule

POST /v1/scheduled / /v1/drip-chains / /v1/recurring. Set text (or template), filters, trigger or time.

02

Worker ticks every 30 s

Picks jobs with next_run_at <= now, locks FOR UPDATE SKIP LOCKED, sends via /v1/send. On failure — retry on next tick.

03

Webhook events

scheduled.sent / scheduled.failed for once, drip.step_sent / drip.completed for chains, recurring.sent for recurring.

FAQ

Frequently asked

The worker ticks every 30 seconds. A scheduled_at=12:00:00 job fires between 12:00:00-12:00:30. More precision isn't needed — Telegram and Max themselves add ~200-500 ms of delay.

Up to 50 steps. Each — a separate template or text with delay_minutes from the trigger. Typical scenarios: welcome (3 steps), onboarding (7-10 steps), course (20-30 steps).

Yes. A trigger is one of: subscription (new subscriber), segment (tag applied), permission (permission granted). On fire, drip_queue records are created with calculated run times for each step.

Following steps are skipped. You get a drip.completed webhook with a note of early exit so you can update state on your side (e.g., tag "unsubscribed at step 3").

Same as a regular message — 1 credit for Telegram/Max, 2 for email. A 5-step drip chain = 5 credits per subscriber. Recurring is billed like broadcast — 1 credit per successful delivery.

Yes. DELETE /v1/drip-chains/:id — stops the chain for all subscribers (active steps finish, new ones don't start). For a specific subscriber — remove the trigger (revoke tag/permission or delete subscription).

Free to start

Hook up in 5 minutes

No credit card. 100 free credits per month — enough to try every feature.