Skip to main content
touchdrop

How to Measure Direct Mail ROI: QR Codes, Unique Codes and Holdouts

The hard part of direct mail is not sending it, it is knowing what it earned. This guide covers the three pieces that make a postcard measurable, a unique code, a QR code and a holdout, and why only the last one tells you the truth.

By Hylke Reitsma, co-founder, TouchDrop

Last updated: 27 July 2026

Measuring direct mail ROI: a postcard with a QR code and a unique discount code, and a split test comparing a mailed group against a held-out control

Short answer: to measure direct mail ROI, give every recipient a unique discount code and a QR code so purchases link back to the individual, set an attribution window (60 days is sensible for physical mail), and hold out a random control group you do not mail. Your real ROI is the extra revenue from the mailed group over the held-out group, divided by campaign cost. Attributed revenue without a holdout always overstates the result.

Key takeaways

Attribution is not the same as incrementality

This is the distinction most direct-mail reporting skips. If you mail 5,000 lapsed customers and 200 of them buy using the card's code, attribution says the campaign drove 200 orders. But some of those customers were going to come back anyway, card or no card. Attributed revenue counts all 200; incremental revenue counts only the orders that would not have happened otherwise. The gap between the two is exactly the number a holdout measures, and it is usually large enough to change whether a campaign looks profitable.

The three things that make a postcard measurable

The attribution window

Physical mail takes days to arrive and physical offers linger, on a fridge, a desk, a pinboard, far longer than an email. So the window in which a sale should still count is longer than the same-session logic used for paid ads. TouchDrop uses a 60-day default, and the important discipline is to read the result only once the window has fully elapsed, not while cards are still landing. Judging a campaign at day 10 makes a slow, healthy result look like a failure.

The holdout: the only honest ROI

A holdout is a random slice of your eligible audience that you do not mail. Because it is randomly chosen from the same segment, it behaves like the mailed group in every way except the card, so the difference in revenue between the two over the window is the lift the mail caused. Keep the split consistent between campaigns and you build a reliable baseline. The tradeoff is small: you give up mailing a few percent of the audience in exchange for knowing, campaign after campaign, what the channel is actually worth.

For context on what a well-run campaign can return, independent benchmarks show direct mail to an existing customer list roughly doubles the response of cold prospect mail (the ANA/DMA Response Rate Report, 2018, put house-list response at 9% against 4.9%), and a win-back campaign on the founders' own DTC brand returned 6.2x ROI measured this way. Your own holdout is what tells you where you land.

How to run a measured campaign

  1. Tag every recipient. Mint a unique discount code tied to each customer and a QR code on every card, so any resulting order links back to the individual, not just the campaign.
  2. Set the attribution window. Decide how long after delivery a sale still counts. Sixty days is a sensible default for physical mail, and you judge the campaign only after it elapses.
  3. Hold out a random control. Randomly withhold a slice of the eligible audience, large enough to read a difference, and keep the split consistent across campaigns.
  4. Mail the rest and wait. Send to everyone outside the holdout and let the attribution window run before drawing any conclusion.
  5. Compare and divide. Take the revenue-per-customer difference between the mailed and held-out groups, multiply by the mailed count, and divide by campaign cost. That ratio is your incremental ROI.

Frequently asked questions

How do you measure ROI on a direct mail campaign?

Give every recipient a way to be identified when they buy (a unique discount code and a QR code), decide how long after the mailing a sale still counts (the attribution window), and hold out a random slice of the audience as a control. Your ROI is the extra revenue from the mailed group over the held-out group, divided by what the campaign cost. Everything else is association, not proof.

What is the difference between attribution and incrementality?

Attribution tells you which orders are associated with a mailing, for example an order that used the card's discount code. Incrementality tells you which of those orders would not have happened without the card. Attribution alone always overstates the result, because some of those customers were going to buy anyway. A holdout is what turns attribution into incrementality.

What is a holdout and why does it matter?

A holdout is a random slice of your eligible audience that you deliberately do not mail, so it behaves like the mailed group in every way except the card. Comparing revenue between the two over the attribution window gives you the incremental lift the mail actually caused. Without a holdout you cannot separate the sales the card drove from the sales that were already coming.

How does a unique discount code attribute a sale?

Each card carries a discount code minted for one recipient and tied to their customer record, so when it is redeemed the order links back to the exact person who received the card, not just to the campaign. That per-recipient link is what lets you attribute at the individual level and reconcile against a holdout.

What does a QR code add over a discount code?

A QR code captures the customers who scan and visit but do not redeem the code, and those who buy a different product than the offer. It widens the signal beyond code redemptions, and paired with the unique code it gives you both a scan measure and a purchase measure for the same recipient.

What is a direct mail attribution window?

It is the period after a card is delivered during which a sale still counts toward the campaign. Mail takes days to arrive and physical offers sit on fridges and desks, so a sensible window is longer than for email. TouchDrop uses 60 days by default, and you should judge the campaign only once the window has fully elapsed.

Can you measure direct mail ROI without a holdout?

You can measure attributed revenue without one, but you cannot measure incremental ROI, and attributed revenue will always be the more flattering number. If you only ever mail everyone, you will never know how much of the result the mail actually caused. Even a small random holdout, held out consistently, is enough to keep the number honest.

Related reading

Measure the channel, not a guess.

Run a postcard campaign with per-recipient codes, a QR, and a holdout, and read the real number.

Get started free