What this is for#
AcelleMail doesn't ship a native Zapier app (as of 2026), but the REST API + webhook system give you everything you need to wire AcelleMail to the 7,000+ apps on Zapier — without writing any code. This guide walks both directions:
- AcelleMail as a Zapier action — Zap fires → POST to AcelleMail API → subscriber added / campaign sent / etc.
- AcelleMail as a Zapier trigger — AcelleMail event fires → webhook to Zapier → Zap runs
Plus six production-tested Zap recipes that cover most use cases.
Prerequisites#
- A Zapier account (free tier works for 2-step Zaps; paid for multi-step)
- An AcelleMail API token
- An AcelleMail list UID (for the subscriber-add action)
- Comfortable with Zapier's "Webhooks by Zapier" built-in app — it's the bridge
Direction 1 — AcelleMail as a Zapier action (Zap → AcelleMail)#
Use this when: an external event (form submission, Stripe payment, calendar booking, CRM record creation) should add or update a subscriber in AcelleMail.
Setup#
- In Zapier, create a new Zap
- Trigger: your external app (Typeform / Stripe / Calendly / etc.)
- Action: choose Webhooks by Zapier → POST
- Configure:
- URL:
https://mail.example.com/api/v1/subscribers
- Payload Type:
JSON
- Data:
MAIL_LIST_UID → your list UID (a static value, type it in)
EMAIL → map from the trigger output (e.g. {{1.email}} from Typeform)
FIRST_NAME → map from the trigger
LAST_NAME → map from the trigger
- any custom fields → map similarly
- Headers:
Authorization → Bearer YOUR_API_TOKEN
Accept → application/json
Content-Type → application/json
- Test the action — Zapier sends a test POST; you should see HTTP 200 with the new subscriber JSON in the response
- Turn the Zap on
Field names are UPPERCASE. EMAIL, FIRST_NAME, LAST_NAME, MAIL_LIST_UID — not lowercase. Older guides get this wrong; AcelleMail's API rejects lowercase field names.
Tag a subscriber from a Zap#
For tagging (instead of subscribing), use the tag-add endpoint:
POST https://mail.example.com/api/v1/subscribers/{{subscriber_id}}/add-tag
Headers: Authorization: Bearer YOUR_TOKEN
Body: { "tag": "stripe-customer" }
You'll typically use a "Find Subscriber by Email" GET first (/api/v1/subscribers/email/{{email}}) to get the id, then POST the tag-add.
Direction 2 — AcelleMail as a Zapier trigger (AcelleMail → Zap)#
Use this when: an AcelleMail event (new customer signup on your SaaS, plan change, subscription cancellation, automation step reached) should fire a Zap.
Setup#
- In Zapier, create a new Zap
- Trigger: Webhooks by Zapier → Catch Hook
- Copy the Webhook URL Zapier generates — looks like
https://hooks.zapier.com/hooks/catch/12345/abcde/
- In AcelleMail Admin → Webhooks → New:
- Event: pick one (see below)
- Request URL: paste the Zapier URL
- Method: POST
- Body type: JSON
- Auth: None (Zapier's webhook URL is the auth — it's secret)
- In AcelleMail, save the webhook
- Trigger the event (e.g. create a test customer)
- In Zapier, click Test trigger — you should see the webhook payload
- Add your Zap action steps (notify Slack, write to Google Sheets, etc.)
- Turn the Zap on
Available events#
Per webhook events reference, the events are SaaS-lifecycle (not subscriber-lifecycle):
| Event |
Params posted |
Good Zap use case |
new_customer |
customer_id |
Notify Slack #signups; create CRM contact |
new_subscription |
customer_id, plan_id |
Track in revenue dashboard; thank-you SMS |
change_plan |
customer_id, old_plan_id, new_plan_id |
Update CRM deal size; trigger upgrade-email |
cancel_subscription |
customer_id, plan_id |
Schedule a win-back outreach; flag for retention call |
terminate_subscription |
customer_id, plan_id |
Tag CRM contact as "churned" |
automation_webhook |
automation_id |
Fire arbitrary external action from within an Acelle automation |
subscriber.created / campaign.opened / campaign.clicked are NOT in the customer-lifecycle webhook system. For subscriber events, use per-campaign webhooks (Campaign → Webhooks tab) instead. For real-time subscriber sync, the most reliable pattern is the webhook hitting Zapier's Catch Hook.
6 Production-tested Zap recipes#
1. Typeform → AcelleMail subscribe#
When a customer fills out your "Get the lead magnet" Typeform, add them to your AcelleMail "Lead Magnet" list with the form answers as custom fields.
- Trigger: Typeform → New Entry
- Action: Webhooks → POST to
/api/v1/subscribers
- Map Typeform answers to
EMAIL, FIRST_NAME, LEAD_MAGNET_TOPIC, etc.
2. Stripe → tag AcelleMail subscriber as customer#
When a Stripe Checkout completes, find the customer in AcelleMail by email and add a customer-paid tag.
- Trigger: Stripe → New Successful Checkout
- Step 1 Action: Webhooks → GET
/api/v1/subscribers/email/{{customer_email}} → extract id
- Step 2 Action: Webhooks → POST
/api/v1/subscribers/{{id}}/add-tag with {"tag": "customer-paid"}
This works great as a budget alternative to the direct WP+WC integration for non-WP stores.
3. Calendly → AcelleMail pre-event sequence#
When someone books a call via Calendly, add them to a list that triggers a pre-event reminder + post-event follow-up.
- Trigger: Calendly → New Invitee
- Action: Webhooks → POST
/api/v1/subscribers
MEETING_TIME custom field captures the booked slot for personalised reminders
4. AcelleMail new_customer → Slack notification#
Every time a new SaaS customer signs up on your AcelleMail-powered platform, post to a Slack channel.
- Trigger: Webhooks → Catch Hook (your AcelleMail webhook on
new_customer)
- Action: Slack → Send Channel Message —
New AcelleMail customer: customer_id={{customer_id}} — investigate in Admin → Customers
5. AcelleMail change_plan → update HubSpot deal#
When a customer upgrades or downgrades, sync to HubSpot.
- Trigger: Webhooks → Catch Hook (
change_plan event)
- Step 1: Webhooks → GET
/api/v1/customers/{{customer_id}} to enrich payload (Acelle webhooks only send IDs, not full customer data)
- Step 2: HubSpot → Update Deal — set deal value to new plan's monthly value
6. AcelleMail cancel_subscription → schedule win-back#
When a customer cancels, automatically add them to a "win-back" list 30 days later (don't email immediately — they're irritated).
- Trigger: Webhooks → Catch Hook (
cancel_subscription)
- Step 1: Delay (Zapier built-in) → 30 days
- Step 2: Webhooks → POST
/api/v1/subscribers with MAIL_LIST_UID=WIN_BACK_LIST_UID
Multi-step Zaps (paid tier)#
Many recipes above use multi-step Zaps — the free Zapier tier limits you to 2-step (Trigger → 1 Action). Paid plans unlock 3+ steps, which you need for:
- Find subscriber by email → add tag (2 actions, so 3 steps total)
- Enrich data from a third API → format → POST to AcelleMail (3+ actions)
- Conditional logic (only run for paid customers, only run on weekdays, etc.)
For Acelle-heavy automation, paid Zapier is worth it. Alternative: write a Laravel webhook listener in extending source code for the heaviest workflows; use Zapier for the long tail.
Common issues#
| What you see |
Likely cause |
Fix |
| Zapier POST returns 422 with "EMAIL required" |
Field name lowercase |
Switch to UPPERCASE — EMAIL not email |
| Zapier POST returns 401 |
Authorization header missing or wrong format |
Must be exactly Bearer YOUR_TOKEN (note the space) |
| Acelle webhook configured but Zapier "Test trigger" finds nothing |
Webhook fires async — Zapier may not see the test event |
Trigger the actual event (create a real customer); Zapier will pick it up |
| Webhook payload missing customer email |
Acelle webhooks only carry IDs by default |
Add a Webhooks GET step (/api/v1/customers/{{customer_id}}) to enrich before next action |
| Zap fires twice for same event |
Acelle retried the webhook (your endpoint timed out on first attempt) |
Zapier's Catch Hook returns fast — should be safe; check Acelle webhook retry settings |
| Free tier's Catch Hook URL stops working |
Free tier of Zapier has limits on monthly Zap runs |
Upgrade to paid; or move heavy-volume integrations to direct API |
Cannot use the Webhooks app trigger because it requires a paid plan |
Some Zapier webhook actions are paid-only |
Catch Hook trigger is on free tier; "Custom Request" action may be paid |
| Action runs out of order |
Multi-step Zaps run sequentially but async; ordering not guaranteed for parallel events |
Don't depend on strict event ordering; design for idempotency |
FAQ#
Is there a native Acelle Zapier app coming? Not announced as of 2026. The Webhooks-bridge pattern works fine; a native app would just save 1-2 setup steps.
Make (formerly Integromat) / n8n alternatives? Both work identically — they have HTTP/Webhook connectors that you wire to AcelleMail's REST API. n8n is self-hosted (open source) and often a better fit for an AcelleMail self-hosted user.
Rate limits? AcelleMail doesn't impose API rate limits by default. Zapier rate-limits its own API calls per its plan tier (free = ~100 task runs/month). Watch your Zapier Task usage.
Can I trigger a campaign send from Zapier? Yes — POST to /api/v1/campaigns/{uid}/run. But this is risky (a misfire blasts your list). Most operators trigger campaigns from inside Acelle's UI and use Zapier for subscriber-level events.
Async webhook delivery + Zapier timeout interplay? AcelleMail's webhook firing happens via the queue worker — usually within seconds. Zapier's Catch Hook then triggers within ~1 minute on free tier (faster on paid). Total worst-case latency: 1-2 minutes from Acelle event to Zap action fired.
Can I pass binary data (uploaded files)? Zapier's Webhooks support multipart/form-data POSTs for file uploads. Use Acelle's /api/v1/file/upload endpoint with the file as a form field.
Webhook security — anyone can hit Zapier's Catch Hook URL? True. The security comes from URL obscurity (the URL is long random). For added security, send a custom header from Acelle (e.g. X-Acelle-Source: secret-token) and add a Filter step in Zapier that only proceeds if the header matches.
Related articles#