Last updated October 19, 2026
Summary
- Direct mail ROI is attributed revenue minus total campaign cost, divided by total cost, times 100
- A revenue multiple is not ROI: 2.1x in revenue equals a 110% return
- Stack unique URLs, promo codes, and call tracking, then use match-back for buyers who skipped them
- Set the attribution window before the drop and report coded and match-back revenue as separate lines
- JICMAIL measured cold mail at 2.1x the campaign cost in revenue, and 2.7x above 100,000 pieces (UK-measured)
You sent the mail, the pieces landed, and sales went up. The question your CFO will ask is how much of that came from the mailbox, and "probably a lot" isn't an answer that survives a budget review.
Direct mail ROI is trackable with the same rigor as any digital channel, as long as you decide how you'll measure it before the first piece prints. This guide covers the formula, the attribution methods that feed it, how to set an attribution window, how match-back works, and a worked example you can copy. Oppizi has distributed more than 306 million pieces globally since 2014, and every campaign on the platform runs on the same principle: if it can't be measured, it isn't finished.
How do you track direct mail ROI?
You track direct mail ROI by giving every piece a way to be traced, counting the revenue those traces produce inside a fixed attribution window, and dividing the net gain by the full campaign cost. In practice that's four steps:
- Add response paths before you print. A unique URL, a promo code, and a call tracking number, each specific to the campaign or segment.
- Fix your attribution window. Decide how many days after delivery an order still counts, and write it down.
- Count attributed revenue. Coded responses first, then match-back for the buyers who skipped the code.
- Run the formula against full cost. Print, postage, list, creative, and fulfillment, not just postage.
Our guide to tracking and measuring direct mail walks through setting up each tracking element. This article is about the math that happens after the responses come in.
What is the direct mail ROI formula?
The direct mail ROI formula is attributed revenue minus total campaign cost, divided by total campaign cost, multiplied by 100:
ROI = (Attributed revenue - Total campaign cost) / Total campaign cost x 100
There's a second number worth reporting next to it: the revenue multiple, which is attributed revenue divided by total cost. The two are easy to mix up, and the difference matters. A campaign that returns 2.1 times its cost in revenue has a revenue multiple of 2.1x and an ROI of 110%, because $1 of every $2.10 only pays back the spend. Quote a multiple as if it were ROI and you'll overstate your result by a full 100 points.
What belongs in total campaign cost?
Total campaign cost is every dollar the campaign needed to exist. Leave a line out and your ROI looks better than it is:
- Printing and production
- Postage
- Mailing list purchase, rental, or data processing
- Creative and design time
- Offer cost, such as the discount value on redeemed codes
- Fulfillment and any platform or agency fees
For typical per-piece ranges, see our breakdown of direct mail costs in the US.
What counts as attributed revenue?
Attributed revenue is the revenue from orders you can connect to the mailing inside your attribution window. Start with first-order revenue, because it's the cleanest number. If you want a fuller picture, report a second figure that adds expected repeat purchases from the customers you acquired, using your own retention data. Our piece on offline marketing and customer lifetime value covers why that longer view matters.
If your margins are thin, run the formula on gross profit instead of revenue. A campaign can return more revenue than it cost and still lose money once cost of goods comes out.
Which metrics matter for direct mail?
Six metrics matter for direct mail ROI: response rate, conversion rate, cost per acquisition, revenue per piece, revenue multiple, and ROI. Each one diagnoses a different part of the campaign:
| Metric | How to calculate it | What it tells you |
|---|---|---|
| Response rate | Responses / pieces delivered | Whether the offer and audience earned attention |
| Conversion rate | Orders / responses | Whether the landing experience closed the sale |
| Cost per acquisition | Total campaign cost / new customers | What a customer cost compared to other channels |
| Revenue per piece | Attributed revenue / pieces delivered | The average value of each piece you paid for |
| Revenue multiple | Attributed revenue / total campaign cost | Revenue returned per dollar spent |
| ROI | (Attributed revenue - total cost) / total cost x 100 | Net return as a percentage |
Read them together. A strong response rate with weak conversion points at the landing page or offer, not the mail. A healthy ROI with a high customer acquisition cost can still be a good trade if those customers stay. For what typical response looks like, see our direct mail response rate benchmarks.
How do you attribute direct mail to sales?
You attribute direct mail to sales by stacking several response paths on each piece and then matching the mailing list against your orders to catch the buyers who used none of them. No single method sees everything, so the combination is the point:
| Method | What it captures | What it misses | Works for EDDM? |
|---|---|---|---|
| Unique URL | Visits and online orders from people who type the address | Buyers who search your brand name instead | Yes |
| Promo code | Redemptions online, by phone, and in store | Buyers who forget or skip the code | Yes |
| Call tracking number | Phone leads and orders, logged by source | Anyone who calls your main line | Yes |
| Match-back | Mailed households that bought without a code, URL, or call | Little, but it can credit buyers who would have bought anyway | At route or ZIP Code level only |
| Platform tracking | All of the above in one report, by campaign | Signals you never set up | Yes |
Unique URLs
A short, campaign-specific address such as yourbrand.com/fall routes mail traffic to its own landing page, so visits and orders tag themselves. Keep it short enough to type. A long string sends people to a search engine, and the attribution goes with them.
Promo codes
A code ties a redemption to a campaign wherever it happens: checkout, phone, or register. Use one code per campaign or segment for clean reporting, or unique codes per recipient when you need household-level detail.
Call tracking numbers
A dedicated number forwards to your main line and logs the source of every call. If your buyers pick up the phone, this is the only method that sees them.
Match-back
Match-back compares the mailed list against your new customer and order records to find buyers who responded without a code, URL, or call. It recovers revenue the other methods miss, which is why it gets its own section below.
Platform tracking
A direct mail platform pulls these signals into one report so you're not reconciling spreadsheets. Oppizi's campaign tracking reports conversions, acquisition cost, and revenue by campaign across addressed direct mail, EDDM, package inserts, and flyering, in the same dashboard.
How long should a direct mail attribution window be?
A direct mail attribution window should match how long your customers usually take to buy, and it should be set before the drop and kept the same across campaigns. There's no universal number. A time-limited offer on a low-cost product closes fast. A considered purchase, like a home service or a subscription, needs longer.
Three rules keep the window honest:
- Start the clock at delivery, not at the mail date. Pieces arrive over several days, so anchor the window to when they land in homes.
- Match the window to the offer. If the promo code expires on day 30, a 90-day window mostly counts noise.
- Never change it after the results come in. Stretching a window to make a campaign look better is the fastest way to lose your finance team's trust.
How does match-back analysis work?
Match-back analysis works by comparing the names and addresses you mailed against the customers who bought during the attribution window, then crediting the campaign with matched buyers who didn't already respond through a code, URL, or call. The steps:
- Export the final mailed list after suppressions, with name and address.
- Export new customers and orders from the attribution window.
- Standardize both address files so small formatting differences don't block a match.
- Match on name and address, then remove anyone already counted through a tracked response.
- Report matched revenue as its own line, next to coded revenue, never blended into it.
Treat match-back as an upper bound. Some matched buyers would have bought anyway, which is why coded revenue is your floor and match-back revenue sits on top of it as a separate figure.
EDDM works differently because the mail carries no names. You match by carrier route or ZIP Code instead, comparing new customers inside the routes you mailed during the window. Unique URLs and promo codes do most of the work for saturation mail. Our guide to tracking EDDM responses goes deeper.
What does a direct mail ROI calculation look like?
A direct mail ROI calculation looks like the table below, which runs one illustrative campaign through the formula twice: once with coded responses only, once with match-back added. The numbers are hypothetical, chosen to show the math, not a forecast of what any campaign will return.
| Illustrative campaign (hypothetical numbers) | Code, URL, and call only | Plus match-back |
|---|---|---|
| Pieces delivered | 40,000 | 40,000 |
| Total campaign cost | $24,000 | $24,000 |
| Attribution window | 45 days | 45 days |
| Attributed orders | 340 | 450 |
| Average first-order value | $95 | $95 |
| Attributed revenue | $32,300 | $42,750 |
| Revenue multiple | 1.35x | 1.78x |
| ROI | 34.6% | 78.1% |
| Cost per acquisition | $70.59 | $53.33 |
| Revenue per piece | $0.81 | $1.07 |
Two things stand out. First, the same campaign reads as 34.6% or 78.1% ROI depending on whether match-back is counted, so always say which number you're quoting. Second, the revenue multiple and ROI tell the same story in different units: 1.78x in revenue is a 78.1% return, not a 178% one.
What direct mail ROI benchmarks should you compare against?
The most rigorous direct mail ROI benchmark comes from the JICMAIL Response Rate Tracker, which measured 4,939 UK campaigns through matchback and tracking codes rather than by survey. It found cold addressed mail returns 2.1 times the campaign cost in revenue, rising to 2.7 times for cold campaigns above 100,000 pieces. These are UK-measured figures and revenue multiples, so compare them with your revenue multiple, not your ROI percentage.
Use them for context, not as a target. Your own results will vary with offer, list, creative, and order value. The most useful benchmark you'll ever have is your previous campaign, measured the same way.
Which tools track offline marketing campaigns?
Three kinds of tools track offline marketing campaigns, and they work best connected:
- Direct mail platforms. Execution and tracking in one place, so attribution is built in rather than bolted on. Oppizi runs addressed direct mail, EDDM, package inserts, and flyering from one platform and reports each campaign's conversions and revenue in a single view.
- Call tracking software. Assigns numbers by campaign and logs every call with its source.
- Ecommerce, CRM, and analytics systems. Where orders and customer records live, and where match-back data comes from. Oppizi's Shopify integration syncs customer and order data, and its Braze integration triggers mail from real customer behavior.
How do you improve direct mail ROI over time?
You improve direct mail ROI by feeding each campaign's tracked results into the next one. Four habits do most of the work:
- Refine the list. Suppress non-responders and recent buyers, and build from your best customers. Our guide to targeted mailing lists covers how.
- Test one variable at a time. Give each version its own code or URL so you can see which offer or format won. See A/B testing for offline marketing.
- Put a date on the offer. An expiry gives people a reason to act and keeps your attribution window tight.
- Send responders back into digital. Build audiences from responders and retarget offline leads online so each channel lifts the other.
Ready to prove what your mail is worth?
Direct mail earns its budget when the math is on the table. Oppizi tracks every campaign across addressed direct mail, EDDM, inserts, and flyering, with no monthly platform fee. Create your Oppizi account and run your next campaign with ROI reporting built in.
Frequently asked questions
- How long should I wait before measuring direct mail ROI?
Wait until your attribution window closes, and set that window before the drop based on how long your customers usually take to buy. Start the clock when pieces land in homes rather than on the mail date, match it to your offer expiry, and keep the same window across campaigns so results stay comparable over time.
- Can I track direct mail ROI without a promo code or landing page?
Yes. Match-back analysis compares your mailed list against new customers and orders during the attribution window, crediting buyers who never used a code or URL. It's less precise than coded tracking and can overcount, so report it as a separate line next to coded revenue rather than blending the two into one figure.
- What is the difference between direct mail ROI and revenue multiple?
Revenue multiple is attributed revenue divided by total campaign cost. ROI subtracts the cost first, then divides by it. A campaign returning 2.1 times its cost in revenue has a 2.1x revenue multiple and a 110% ROI. Mixing the two up overstates your result by 100 points, so always label which one you're quoting.
- How does direct mail ROI differ from response rate?
Response rate measures how many recipients acted on the mail. ROI measures whether the campaign made more money than it cost. A campaign can earn a strong response and still lose money if conversions or order values are low, so track both and use ROI to decide whether a campaign deserves more budget next time.
- Does EDDM tracking work the same as addressed mail tracking?
Mostly. Unique URLs, promo codes, and call tracking work the same way on EDDM. Match-back is different, because EDDM pieces carry no names. Instead of matching households, you compare new customers inside the carrier routes or ZIP Codes you mailed during the attribution window, which gives a route-level rather than household-level view.



