# Email Campaign ROI: Math + AcelleMail Data Points

> Email ROI = (Revenue − Cost) / Cost. This guide shows the math, which AcelleMail data points feed each variable, the costs people forget to count, and a working revenue-attribution pattern using UTMs + your store.

- Canonical URL: https://acellesend.com/kb/articles/email-roi-calculation-measuring-campaign-profitability
- Author: Ryan Walsh, Audience & Analytics Editor
- Category: Analytics & Reporting — Open rates, click maps, campaign performance, device reports, exports
- Content type: guide · Difficulty: intermediate
- Tags: Acellemail
- Published: 2026-06-06 · Last updated: 2026-08-15
- Reading time: 6 min
- Publisher: AcelleMail Knowledge Base, https://acellesend.com/kb

---

## What this is for

Email ROI is the metric that justifies the channel. *"Open rates are up"* is interesting; *"every dollar spent on email returns $42"* is the conversation you have with your finance team. This guide shows the actual math, the AcelleMail data that feeds it, and the costs people forget to count.

## The formula

```
ROI = (Revenue from email − Cost of email) / Cost of email × 100
```

Multiply by 100 to express as a percentage. **300% ROI** means every $1 spent returned $3 in profit. **−50% ROI** means every $1 spent lost 50¢.

## Revenue — pull from your store, not from AcelleMail

AcelleMail tells you how many clicks happened. **Your e-commerce store / CRM tells you how many of those clicks converted into purchases.** The reliable path:

1. **Tag every email link with UTMs** ([UTM Parameters article](https://acellesend.com/kb/articles/setting-up-utm-parameters-for-email-campaign-tracking))
2. **Your store records `utm_campaign` on every order** (Shopify, WooCommerce, Stripe, etc. all support this natively or via plugin)
3. **Filter orders by the campaign's UTM** to get revenue attributable to that campaign

Without UTMs, you cannot reliably attribute revenue to specific campaigns — *"email referrals"* in Google Analytics is too coarse. Set up UTMs first.

### Attribution windows — pick one and stick

Same campaign drives revenue over time. You need a rule for when to "stop" counting.

| Window | What it captures | Best for |
|---|---|---|
| **Click → 1 hour** | Direct, immediate purchases | Flash sales |
| **Click → 24 hours** | Same-day conversions including comparison shopping | Most consumer campaigns |
| **Click → 7 days** | Considered purchases, multi-touch | B2B / high-ticket |
| **Click → 30 days** | Full LTV influence | Long-cycle products |

For most consumer emails, **24-hour attribution** is the right default. For B2B / SaaS, **7-day**. Pick a window per industry and apply it consistently — comparing 24-hour ROI on one campaign to 30-day ROI on another is misleading.

## Cost — the components people forget

Email feels "free" because there's no per-email cost (unlike paid ads). But there's a real cost stack:

| Cost component | Typical range | Why people miss it |
|---|---|---|
| **AcelleMail subscription / hosting** | $20-200/month | Fixed cost, but real |
| **Sending server fees** (SES, SendGrid, etc.) | $0.10-1.00 per 1,000 emails | Variable, ignored if low |
| **Design time** (template + email creation) | 2-8 hours per campaign × hourly rate | "Internal" so feels free |
| **Copy / strategy time** | 1-4 hours per campaign | Same |
| **List management** (segmentation, cleaning) | 2-5 hours/month | Spread across all campaigns |
| **Image / asset purchase** | $0-100 per campaign | Often ignored if reusing stock |
| **Tooling** (verification service, deliverability monitoring) | $0-500/month | Subscription that "just runs" |

A campaign's *fully-loaded cost* — not just the send fee — is what you divide revenue by.

### A worked example

| Item | Cost |
|---|---|
| Pro-rated AcelleMail subscription (1 campaign out of 4 monthly) | $25 |
| Sending fees: 10,000 emails × $0.30/1k | $3 |
| Designer's time: 4 hours × $50 | $200 |
| Copywriter's time: 2 hours × $60 | $120 |
| **Total cost** | **$348** |

Campaign drove **$2,800 revenue** (40 orders × $70 avg, attributed via UTM `utm_campaign=spring_sale_2026` filter in store).

```
ROI = ($2,800 − $348) / $348 × 100
    = $2,452 / $348 × 100
    = 705%
```

Each $1 returned $7.05. Strong campaign.

## Reading AcelleMail's numbers in context

AcelleMail's campaign report doesn't show revenue — that's intentional (it doesn't know what each subscriber did at your store). But it gives you the **clicks** that feed the calculation:

![Campaign Overview report stat cards showing RECIPIENTS 14,794, DELIVERED 3,838, OPENED 931, CLICKED 146](https://acellesend.com/plugins/acelle/landing/images/help/kb/analytics/01-campaign-overview.png)

(Screenshot from [Read the Campaign Report](https://acellesend.com/kb/articles/understanding-email-analytics-and-key-metrics).)

The flow:

1. **AcelleMail** says: 146 unique clicks across X UTM-tagged URLs
2. **Your store** says: 12 orders had `utm_campaign=spring_sale_2026` in the last 24 hours, totalling $840
3. **You compute**: ROI = ($840 − $52 cost) / $52 × 100 = **1,515%**

Cross-checking: 146 clicks → 12 orders = **8.2% click-to-order conversion rate**. That's healthy (typical 3-15% for warmed audiences). If you see <1%, something's off — bad landing page, mismatch between subject promise and offer, etc.

## Per-campaign vs per-subscriber-per-year

Two ways to look at email ROI:

| View | When to use | Calculation |
|---|---|---|
| **Per-campaign ROI** | Evaluate a single send | Revenue from this campaign / Cost of this campaign |
| **Per-subscriber-per-year (RPY)** | Evaluate the whole program | Total annual revenue / Subscribers on list |

A subscriber whose lifetime value (LTV) is $500/year contributes — across all the campaigns they receive — that $500. If your list is 10,000 subscribers and your annual email revenue is $1,200,000, your **RPY = $120/subscriber/year**.

| RPY | Diagnosis |
|---|---|
| **$50-100** | Solid B2C program |
| **$100-300** | Strong; doing many things right |
| **$300-1,000+** | Best-in-class (high-LTV products, well-targeted lists) |
| **<$25** | Either low-LTV product OR list is mostly inactive — run [re-engagement](https://acellesend.com/kb/articles/re-engagement-campaigns-win-back-inactive-subscribers) |

Per-campaign ROI tells you which campaigns to repeat. RPY tells you whether the entire email program is worth investing in.

## Hidden non-revenue value

ROI is one number, but email drives outcomes that don't show up as direct revenue:

| Hidden value | How to estimate |
|---|---|
| **Brand recall / re-purchases** | RPY captures some of this |
| **Customer support deflection** ("How do I…?" emails answered preemptively) | Survey CSAT post-campaign |
| **Referrals** generated by satisfied subscribers | Track refer-a-friend codes |
| **Reduced churn** (subscribers who stayed because the email reminded them you exist) | A/B test sending vs not sending for a quarter |

Include these qualitatively when defending the email budget — *"ROI is 700% direct, plus reduced churn by 12%"*.

## Improving ROI

Three buckets of improvement, ranked by leverage:

| Bucket | Impact | Effort |
|---|---|---|
| **Reduce send cost** | Low — already cheap | Switch to cheaper sending server only if usage is heavy |
| **Increase conversion rate** | High — better targeting, copy, offer | Focused A/B testing |
| **Increase list quality** | Highest — better subscribers → higher RPY | List hygiene + reduced churn |

**Don't optimise cost first.** Email is one of the cheapest marketing channels by far. The leverage is in conversion + list quality.

## Common issues

| What you see | What to do |
|---|---|
| Reported revenue doesn't match what store thinks | Attribution window mismatch. Confirm both sides use the same window. |
| ROI looks great but business isn't growing | You're cannibalising organic / direct traffic (same customers would have bought without email). Run a holdout test: don't email 10% of the audience, compare conversion rates. |
| AcelleMail says 200 clicks, store says only 50 referrals | Most likely UTMs got stripped somewhere (browser tab restore, social-share rewrites). Audit step-by-step using [UTM Parameters article](https://acellesend.com/kb/articles/setting-up-utm-parameters-for-email-campaign-tracking) §5. |
| ROI calculation says 4,000% (suspiciously high) | You probably under-counted costs. Add design + copy hours; recompute. |
| ROI looks negative — should we stop emailing? | NO — at least not based on one campaign. Look at trailing 3-month avg + RPY before pulling the plug. |

## A weekly / monthly review template

For a sustainable email program, run this review on a Friday afternoon:

| Question | Where to look |
|---|---|
| What was last week's per-campaign ROI? | Store's UTM-filtered revenue / cost |
| What's our 3-month average ROI? | Same, rolling |
| What's our current RPY? | Annual revenue / subscriber count |
| Which campaign type drove the highest ROI? | Cross-reference with category tags |
| Which subscribers have we never converted? | [Re-engagement article](https://acellesend.com/kb/articles/re-engagement-campaigns-win-back-inactive-subscribers) candidates |

## Related articles

- [Read the Campaign Report: AcelleMail Analytics Tour](https://acellesend.com/kb/articles/understanding-email-analytics-and-key-metrics)
- [Setting Up UTM Parameters for Campaign Tracking](https://acellesend.com/kb/articles/setting-up-utm-parameters-for-email-campaign-tracking)
- [Open Rates in the Age of Apple MPP](https://acellesend.com/kb/articles/understanding-email-open-rates-in-the-age-of-apple-mpp)
- [Re-engagement Campaigns: Win Back Inactive Subscribers](https://acellesend.com/kb/articles/re-engagement-campaigns-win-back-inactive-subscribers)

---

## Related articles

- [Open Rates + Apple MPP: What AcelleMail's Numbers Actually Mean](https://acellesend.com/kb/articles/understanding-email-open-rates-in-the-age-of-apple-mpp): Apple Mail Privacy Protection inflates 30-45% of your "opens" by pre-fetching pixels. This guide shows how to spot MPP inflation in AcelleMail (open-log IPs), what to measure instead, and how to adjust your A/B tests + reporting.
- [UTM Parameters in AcelleMail — Tracking Clicks to Your Analytics Tool](https://acellesend.com/kb/articles/setting-up-utm-parameters-for-email-campaign-tracking): Configure UTM tags once in your campaign settings — AcelleMail appends them to every link in the email automatically. This guide walks the campaign-level + global UTM settings, the post-send click report, and how the UTMs land in Google Analytics or Plausible.
- [Read the Campaign Report: AcelleMail Analytics Tour](https://acellesend.com/kb/articles/understanding-email-analytics-and-key-metrics): AcelleMail's campaign report has 6 tabs (Overview / Insights / Links / Map / Sending logs / Email review) and 5 headline metrics. This walkthrough shows where each metric lives, what 'good' looks like, and what to do when a number's bad.
- [A/B Report Deep Dive: Reading AcelleMail Test Results](https://acellesend.com/kb/articles/comparative-campaign-analysis-ab-test-results-deep-dive): After your A/B test finishes, the A/B Report tab tells you the winner — but the real value is in the variant-level numbers. This guide walks through the report, the statistical-significance rules, and what to do for winner / inconclusive / loss verdicts.
- [Click Analysis in AcelleMail: Links Tab + Geographic Click Map](https://acellesend.com/kb/articles/click-map-analysis-optimize-your-email-layout): AcelleMail has two views for click analysis: the Links tab (per-link breakdown — which CTA worked) and the Map tab (geographic distribution). This walkthrough shows both and tells you which to read for what question.
