Automations

AutomationsOne event, an entire journey.

Event-triggered email workflows. Fire any event from your app and Sendry runs an automation per contact: multi-step sequences with sends, waits, conditional branches, and A/B splits.

Why teams pick it

  • One visual flow

    Compose welcome series, drips, win-backs, and onboarding from a single visual flow.

  • Instant triggers

    Triggered the moment your event arrives, no polling, no cron.

  • Conditional branches

    Branch on contact properties or event payload to personalize the path.

  • Flexible waits

    Wait steps support any duration: minutes, days, or weeks.

  • Re-entry policies

    Prevent spam: once-per-contact, cooldown, or always re-fire.

  • Segment triggers

    Also fires on segment membership changes, perfect for behavioral journeys.

What you get

Everything ships on every plan unless noted otherwise.

  • Trigger automations from any event in your app via POST /v1/events.
  • Multi-step flows with sends, waits, branches, and A/B splits.
  • Re-entry policies: once_per_contact, cooldown (min seconds), or always.
  • Branch on contact properties or fields from the event payload.
  • A/B split traffic between two variants to test subject lines or content.
  • Trigger on contact_added_to_segment for behavioral journeys.
  • Per-automation stats: total runs, active runs, completed, failed.
  • Manage and inspect every run from the dashboard at /automations.
fire-event.sh
1curl -X POST https://api.sendry.online/v1/events \
2 -H "Authorization: Bearer YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{"name":"user.signed_up","contact_email":"jane@acme.com","properties":{"plan":"pro"}}'
Any automation listening for user.signed_up kicks off the moment this request lands. Properties are available in branch conditions, so event.plan == "pro" can send a different welcome path than the free tier.
Primitives

Step types

Compose flows from four primitives. Chain them however you like.

send_email

Send a templated email to the contact

wait

Pause the run for any duration before continuing

branch

Conditional split on contact property or event payload

ab_split

Split traffic between two variants for testing

Control

Re-entry policies

Decide what happens when the same contact triggers an automation more than once.

once_per_contact

Each contact enters the automation a single time. Re-triggers are ignored.

cooldown

Re-trigger only after a minimum number of seconds since the last run.

always

Every matching event starts a new run, no matter how recent the last one was.

Use cases

Common use cases

Anything that starts with an event ends with the right email.

Welcome drip series

user.signed_up → email 1 → wait 2d → email 2 → wait 5d → email 3

Cart abandonment

cart.abandoned → wait 1h → reminder → wait 24h → discount offer

Post-purchase follow-up

order.placed → receipt → wait 7d → review request

Onboarding by behavior

Branch by feature_used events to teach the next best thing

Re-engagement / win-back

contact_added_to_segment 'inactive_30d' → win-back flow

A/B subject testing

ab_split → variant A or B → measure opens & clicks per branch

Observability

Per-automation stats

Every automation reports its run counts so you can see what is working.

Total runs

Lifetime triggers per automation

Active

Runs in flight right now

Completed

Reached the end of the flow

Failed

Errored mid-run with reason

Works with the rest of the stack

Same keys, same dashboard, same delivery pipeline.

Ready to wire up your first automation?

Automations are available on Pro, Business, and Enterprise plans. Build flows in minutes from the dashboard.