Zapier Integration Guide for AcelleMail

AcelleMail doesn't ship a native Zapier app, but the REST API + webhook system gives you everything you need to wire AcelleMail to the 7,000+ apps on Zapier. This guide walks both directions — AcelleMail as a Zapier action (POST to API), and AcelleMail as a Zapier trigger (webhook → Zap). Plus 6 production-tested Zap recipes.

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

  1. In Zapier, create a new Zap
  2. Trigger: your external app (Typeform / Stripe / Calendly / etc.)
  3. Action: choose Webhooks by Zapier → POST
  4. 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:
      • AuthorizationBearer YOUR_API_TOKEN
      • Acceptapplication/json
      • Content-Typeapplication/json
  5. Test the action — Zapier sends a test POST; you should see HTTP 200 with the new subscriber JSON in the response
  6. 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

  1. In Zapier, create a new Zap
  2. Trigger: Webhooks by Zapier → Catch Hook
  3. Copy the Webhook URL Zapier generates — looks like https://hooks.zapier.com/hooks/catch/12345/abcde/
  4. 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)
  5. In AcelleMail, save the webhook
  6. Trigger the event (e.g. create a test customer)
  7. In Zapier, click Test trigger — you should see the webhook payload
  8. Add your Zap action steps (notify Slack, write to Google Sheets, etc.)
  9. 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

8 bình luận

4 bình luận

  1. cw.dev.sh
    Set up the Zapier bridge last week. ~30 minutes from start to working flow. Cleaner than I expected.
  2. d.cohen.tlv
    Any plans for a native Shopify app? The webhook approach works but a real app integration would be smoother for non-technical users.
    1. admin
      We tested this with up to 1M subscribers on a $40/mo VPS. Past that you start needing query optimization. Below that, the defaults are fine.
    2. admin (đã chỉnh sửa)
      Right — for RDS specifically, you can change wait_timeout via the parameter group without a reboot if it's set as 'dynamic'. Most defaults are.
  3. m.schmidt78
    WooCommerce integration finally documented properly. Was reverse-engineering the webhook payload before this.
    1. admin
      Appreciate it. If anything in this needs updating, ping us — we revisit articles every few months.
  4. ahmed.hassan.c…
    If your webhook receiver is unreliable, point AcelleMail at an intermediate proxy with retry logic (Cloudflare Worker works well).
    1. admin (đã chỉnh sửa)
      good tip. the cloudflare-outbound-rate-limit case is something we hadn't documented

More in Integrations