What this is for#
Three composite case studies from the AcelleMail operator community. Each is built from patterns we've seen repeatedly across real operator implementations — anonymised + reshaped for clarity. The numbers are realistic for the described scenarios, not specific to any one operator.
Use these as architecture templates when you're designing something similar. Each section ends with what worked + what we'd do differently.
Story 1 — Digital agency replaces Mailchimp for 40 clients#
Context: A 12-person digital marketing agency in Southeast Asia was managing email marketing for 40 SMB clients on individual Mailchimp accounts. Total Mailchimp spend across all client accounts: ~$2,000/month. Each client had its own dashboard login, its own templates, its own sender domain.
Problem: The agency wanted to:
- Consolidate operational tools (one dashboard instead of 40 logins)
- Stop paying Mailchimp's per-contact pricing as client lists grew
- White-label the platform under the agency's brand so clients see "AgencyMail" not "Mailchimp"
Solution: A single AcelleMail install on a 4 vCPU / 8 GB DigitalOcean droplet, configured per the SaaS setup guide:
- Each client = one AcelleMail customer (tenant)
- Each client gets a sub-domain (e.g.
client-acme.agency-mail.com) via white-label custom domain
- All clients share an Amazon SES sending account (free in-region egress)
- Agency staff log into the central admin to manage everyone
- Clients login at their own sub-domain to a fully-branded interface
Architecture:
[agency-mail.com Admin]
↓
[AcelleMail single install]
┌─────────┼─────────┐
↓ ↓ ↓
[client1.acme] [client2.xyz] [...] 40 customer tenants
↓
[Shared Amazon SES]
Numbers:
| Line item |
Before (Mailchimp) |
After (AcelleMail) |
| Software/SaaS |
$2,000/mo |
$0 (one-time $199 Extended License) |
| Hosting |
(included) |
$50/mo (DO 4 vCPU / 8 GB) |
| Sending (~3M total/mo across all clients) |
(included) |
$300/mo (SES at $0.10/1k) |
| Operations overhead |
~5 hrs/wk (managing 40 logins) |
~8 hrs/wk (managing one install + 40 clients) |
| Total monthly cost |
$2,000 |
$350 |
Annual savings: ~$20,000. After 1 year the agency was reselling email marketing as a productised service (charging clients flat $50/mo for it instead of cost-plus), creating a new revenue line.
What worked:
- Single SES account with per-customer config — simpler than per-client SES accounts
- Custom domain per client made the white-labelling feel premium
- Centralised template library — agency built 10 templates once, every client benefited
What we'd do differently:
- Should have set up per-client suppression list isolation earlier — one client's bad list contaminated shared reputation
- Should have implemented per-customer sending throttles from day 1 (added later via plan-level rate limits)
- Should have invested in customer-facing docs earlier — the agency's support load was high in months 1-3
Reference articles: Setting Up as a SaaS Platform · White-Label Customization · Configuring Amazon SES
Story 2 — E-commerce store builds high-converting abandoned-cart automation#
Context: A mid-size WooCommerce store (45,000 newsletter subscribers, ~600 orders/week) needed a better abandoned-cart recovery flow. They were using WooCommerce's default "abandoned cart email" plugin which sent one email at 24 hours. Recovery rate: ~5%.
Problem: The 24-hour single-email sequence was leaving money on the table. Industry research suggested 2-3 emails with smart timing + escalating offer could lift recovery rate to 15-20%.
Solution: Wired AcelleMail to WooCommerce via the WC integration pattern, built a 3-email sequence per the post-purchase emails framework (adapted for pre-purchase).
The sequence:
| Email |
Timing |
Offer |
Goal |
| 1. Reminder |
1 hour after cart abandoned |
None |
"Hey, you left this in your cart — finish whenever" |
| 2. Social proof |
24 hours |
None |
Customer review of the abandoned product + use case |
| 3. Discount |
48 hours |
10% off code |
Last-chance incentive; expires in 48 hours |
Trigger logic (in WooCommerce, custom mu-plugin):
- WooCommerce cart contents persist for logged-in users (1 hour idle = abandonment)
- For guests, cart is captured at checkout-email-entry (
woocommerce_after_checkout_form hook)
- Plugin sends abandonment event to AcelleMail with cart product details, total, and discount code (pre-generated per-customer to enable single-use)
Results after 90 days:
- Cart recovery rate: 18% (vs 5% baseline)
- At 45k subscribers and ~25% cart abandonment rate = ~7,200 abandoned carts/quarter
- 18% × 7,200 carts × ~$30 avg order = ~$39,000 recovered revenue/quarter
- Cost: $50/mo AcelleMail hosting + ~10 hours setup time
- Payback: < 1 week
What worked:
- Real-time webhook trigger (not batch poll) — keeps the 1-hour timing precise
- Single-use discount codes — prevents customers from manually re-applying after expiry
- Plain-text-styled email 1 — felt personal, not promotional; outperformed pretty design
What we'd do differently:
- Should have segmented by cart value earlier — $50 carts and $500 carts deserve different sequences
- Should have A/B tested email 3's offer (10% vs 15% vs free shipping) — the 10% was a guess that worked but might not be optimal
- Built more granular suppression — customers who completed checkout AFTER email 1 still got emails 2+3 occasionally
Reference articles: Creating an Abandoned Cart Sequence · Integrating with WordPress + WooCommerce · WooCommerce Post-Purchase Emails
Story 3 — B2B SaaS builds onboarding sequence triggered by product usage#
Context: A B2B SaaS (project-management tool, ~3,000 active customers, $99/mo average) had ~40% of trial users converting to paid. Once paid, retention at 90 days was ~80% — but at 12 months had dropped to 45%. The team suspected the 90-day → 12-month dropoff was driven by users who never reached "habit-forming" feature use.
Problem: Generic email onboarding (welcome → setup → feature tour) wasn't differentiating between users who needed which next-step. The team wanted to send the right email at the right time based on what each user had actually done in-product.
Solution: Wired the product's event stream (Segment.io was already in place) to AcelleMail via API triggers. Each meaningful in-product event ("first project created", "first task assigned", "first comment", "first integration connected") fired an AcelleMail API call to advance the customer in a personalised onboarding flow.
The 14-email sequence (high-level — emails branch based on what happens or doesn't):
| Stage |
Trigger |
Email content |
| Day 0 |
Signup |
Welcome + setup link |
| Day 0+15min |
(If logged in) |
Dashboard tour |
| Day 1 |
First project created |
"Great start — here's how to invite teammates" |
| Day 1 |
NO first project after 24h |
"Need help getting started?" + Calendly link |
| Day 3 |
First task assigned |
"How to use comments + @mentions" |
| Day 3 |
NO task yet |
"Common first-week patterns" (lower-friction examples) |
| Day 7 |
First integration connected |
"Power-user tip: workflow X" |
| Day 7 |
NO integration yet |
"5 integrations our customers love most" |
| ... |
(10 more conditional steps) |
... |
Architecture: Segment.io → Zapier (Catch Hook on Segment event) → POST to /api/v1/automations/{uid}/api/call per Zapier integration guide.
Results after 6 months:
- Users who completed full sequence: 3.4× higher 12-month retention than control (37% baseline → 51% for sequence completers)
- Total cohort lift: 8 percentage points in 12-month retention across all paid users
- Revenue impact: at $99/mo × 3000 customers × 8% retention lift × 12 months ≈ $285k incremental annual revenue
- Cost: $50/mo AcelleMail + $40/mo Zapier (paid tier needed for multi-step Zaps) + ~30 hours setup
What worked:
- Branching on "did the event happen yet?" was high-leverage — users who hadn't done X got materially different content from users who had
- Plain-text emails outperformed HTML for the highest-friction step (Day 1 "did you get stuck?")
- Sending from the actual founder's email address (
alice@company.com) tripled response rate on emails asking for replies
What we'd do differently:
- Should have invested in BIG-picture customer-journey mapping before writing emails — wrote some emails that turned out to be redundant
- Should have measured "feature adoption" not just "retention" — adoption was the leading indicator
- Should have built the unsubscribe / pause logic into the automation from day 1 — angry trial-ending customers were getting onboarding emails
Reference articles: Using API Triggers for Custom Automation Workflows · Advanced Automation Triggers and Conditions · Zapier Integration Guide · Lead Scoring with Email Automation
Common patterns across all three#
Looking at these three cases, the operational similarities:
- Each replaced an inferior tool (Mailchimp's pricing tier, WC's default abandoned-cart, generic onboarding) rather than building net-new
- Each had clear metric movement in the first 3 months — not "we're learning"
- Each invested 10-30 hours of setup time for a payback measured in months
- None used AI / fancy ML features — the wins came from sending the RIGHT email at the RIGHT moment, not from clever content
If you're considering a similar build: start with the metric you want to move. Pick the automation that pushes that metric directly. Resist the urge to build many at once.
What we'd love to feature next#
Operating an AcelleMail instance and willing to share what you built? Reach out via CodeCanyon support — the team gathers operator stories for future case-study articles. Stories that get featured:
- Specific metric movements (not just "it was nice")
- Architecture decisions that surprised even you
- Failures + lessons learned alongside wins
Anonymity respected on request.
Related articles#