Features
Automations for transactional sequences
Send one event from your app and let Groundmail run the follow-ups: welcome mail, trial reminders, dunning notices. No cron jobs, no queue to babysit.
Steps
A small set of steps that cover most flows
Build in the dashboard canvas or create automations over the API. Every run starts from an event.
Send email
Delay
Condition
Wait for event
Cancel on events
Event placeholders
Example
Define the flow once, trigger it from anywhere
Create the automation as a draft, activate it, then send events from your app with any SDK or plain HTTP.
POST /automations
{
"name": "Trial ending",
"trigger": {
"type": "event",
"event": "trial.started",
"cancel_on_events": ["subscription.created"]
},
"steps": [
{ "type": "delay", "seconds": 950400 },
{
"type": "send_email",
"email": {
"from": "billing@yourdomain.com",
"to": "{{event.email}}",
"template": {
"id": "trial-ending",
"variables": { "name": "{{event.data.name}}" }
}
}
}
]
}POST /events
curl -X POST https://api.groundmail.dev/events \
-H "Authorization: Bearer gm_…" \
-H "Idempotency-Key: evt_trial_started_123" \
-H "Content-Type: application/json" \
-d '{
"name": "trial.started",
"user_id": "user_123",
"email": "user@example.com",
"data": { "name": "Ada" }
}'Operate
See every run
When a flow misbehaves in production, you can see where and why.
- Run history with per-step status in the dashboard and over the API
- Cancel or retry a run with one call
- Pause an automation without deleting it
- Webhooks for automation.started, step_completed, completed and failed
- The event response tells you how many automations matched
FAQ
Common questions
Is this a marketing automation tool?
No. Automations are for transactional sequences tied to something a user did: onboarding steps, trial and billing notices, verification follow-ups. Groundmail does not send marketing or cold email.
How do conditions work?
A condition step checks the event data. If it is true the run continues; if it is false the run stops there. It is a gate, not an if/else branch.
What happens if my app sends the same event twice?
Send an Idempotency-Key header with the event. A retry with the same key and body returns the original response instead of starting a second run.
Can I test a flow before turning it on?
Yes. From the dashboard you can dry-run a draft automation with a test event. Delays and waits are skipped and sends are stubbed.
Put your transactional email on solid ground.
Start free on our transactional pool. Move to dedicated IPs or a dedicated server when you need the isolation. Same API either way.