Send email, SMS, WhatsApp and push from one API.
Then run everything that happens after: the shared inbox, campaigns, drip automation, social publishing and delivery tracking. Self-host it, or let us.
No credit card needed · Self-host in minutes · Bring your own provider keys
Connect the providers you already pay for.
Ten things you'd otherwise buy separately
Delivery is one endpoint. The rest of Messy is what you need once the message has landed: the follow-ups, the replies, and the numbers that tell you it worked. Most teams assemble all of this from a stack of separate subscriptions. We think that's the bug.
Multi-channel API
Email, SMS, WhatsApp, mobile & web push behind one endpoint.
Learn moreTemplates & layouts
Reusable, Liquid-powered content with shared email layouts.
Learn moreCampaigns
Broadcast to a segment, then track opens, clicks and unsubs.
Learn moreDrip automation
Multi-step sequences triggered the moment someone joins a segment.
Learn moreSocial publishing
Plan a month of Facebook & Instagram posts, then auto-publish on schedule.
Learn moreShared inbox
Chat and email tickets in one queue, with assignment and tags.
Learn moreDelivery rules
Block or allow any recipient before a message ships.
Learn moreContacts & segments
A live contact database you slice with condition-based segments.
Learn moreTracking & analytics
Opens, clicks and a real-time activity stream across every channel.
Learn moreMCP server
Let AI agents like Claude and OpenAI connect and drive Messy, securely.
Learn moreFive channels, one pipeline
You make one API call. Messy renders the content, runs it past your rules, picks the right provider, and tracks what happens next.
API request
One call, any channel
Render
Liquid template + data
Rules
Allow or block
Deliver
Via your provider
Track
Opens, clicks, status
Send your first message in one request
Reference a template, pass your data, pick a channel. Messy resolves the provider, applies your delivery rules, renders the content, and tracks the result.
- Provider-agnostic. Swap SES for SMTP or Twilio without touching your code.
- Liquid templating. Keep copy out of your codebase and editable by your team.
- Idempotent & isolated. Separate API keys and data per environment: test, staging, prod.
curl https://api.messy.sh/messages/trigger \
-H "Authorization: Bearer $MESSY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"trigger": "order_confirmed",
"to": "ada@example.com",
"data": { "order_id": "1024", "total": "€42.00" }
}'
One inbox for every reply
Chat-widget conversations and synced email tickets arrive in one shared inbox. Assign them to an operator, tag them, and answer with a saved response.
Send the campaign, follow up automatically
Build a segment from your contact attributes, broadcast a campaign to it, then let drip automation follow up on a schedule, with conditions and an exit path at every step.

Three ways to run it
The whole platform is source-available under the Elastic License 2.0. Deploy it on your own infrastructure and nothing is held back, or hand the servers to us and keep the same product.
Self-host
Clone the repo and deploy. No seat limits, no usage caps. Free, forever.
€0Cloud · Bring your own keys
We host and maintain Messy; you plug in your own SES, Twilio and push credentials.
€20/moCloud · Managed delivery
Send through our delivery platform. No provider accounts to wire up.
€60/mo Coming soonStart sending.
Make an account, drop in your provider keys, send your first message.