Back to blog

You sent 5,000 letters. Who responded?

Matthew Cook 8 Sep 2026 7 min read

You sent 5,000 letters. Who responded?

You sent five thousand letters. Over the following six weeks, orders were up a bit. Somebody in a meeting asks whether those two facts are related, and the honest answer is that nobody knows.

That conversation is why print budgets get cut first. Not because direct mail stopped working, but because it is the only part of the marketing spend that cannot defend itself when the budget is being argued over. Email has been measurable for twenty years. Paid advertising reports on itself hourly. Print turns up once a quarter with an invoice and a feeling.

It does not have to be like that, and closing the gap is a much smaller job than most people assume.

One code per recipient, not one per campaign

Most printed QR codes are the same code on every copy. That tells you how many people scanned, which is better than nothing and is roughly where most businesses stop.

The version worth building gives every single letter its own code. Same artwork, same design, different code on each one, generated as the letters are produced.

That one change moves you from a number to a list of names. You are no longer measuring a campaign, you are recognising individuals. When somebody scans, you know which letter it was, which means you know who they are, what you sent them and when.

The difference in what you can do with that is not subtle. A campaign report saying "four hundred scans" gets read once and filed. A list of the specific companies that responded this week goes to whoever does your selling, and it is a warm list, because everybody on it has just put their hand up.

Be honest about what it can and cannot tell you

This is where a lot of tracking gets oversold, so it is worth being precise.

A scan is a scan. It is not an open, and it is not a read. Nothing observes an envelope. You will never know how many people opened the letter, glanced at it and put it in the recycling, and any system that claims to tell you that is inventing the number.

This matters more than it sounds, because if you mix postal and email campaigns into one set of figures and quietly treat a scan as equivalent to an email open, every average you report afterwards is wrong. A scan is a much stronger signal than an open. Somebody took out their phone. Keep them as separate things and both stay meaningful.

The number most people report wrongly

Report people who scanned and total scans as two separate figures. Never just the second one.

On paper those two numbers come apart in a way they never do online. A letter sits on a desk for a fortnight and gets scanned again when somebody finally acts on it. It gets passed around an office and three people scan the same code. It goes up on a noticeboard.

If you report only the total, you overstate the reach of precisely the campaign that worked, and you will make your next decision on an inflated figure. Reported separately, the gap between them is itself interesting: a big difference means your letter is being kept and shared, which is the thing print does that email cannot.

Making a code that survives the post

A code on a screen has an easy life. A code on a letter gets printed on an office laser printer, folded twice, posted, opened, flattened out and photographed at an angle by somebody holding a phone in one hand under a strip light.

That is a different engineering problem, and it is where most home-made attempts quietly fail. The things that actually matter:

  • Print it at print resolution. A code generated at screen resolution and scaled up on a page produces soft edges that scanners struggle with.
  • Use a higher error-correction level than the default. Error correction is the redundancy that lets a code still read when part of it is damaged. Most tools default to the lowest setting, which is fine on a screen and optimistic on paper. Toner streaks and a fold running across the code are real, and the extra redundancy is what absorbs them.
  • Leave the quiet zone alone. That is the plain margin around the code. It is not decorative whitespace, it is how a scanner finds the edges of the symbol, and it is the first thing a designer removes to fit the layout.
  • Never stretch it. One dimension must drive both. A QR code squashed to fit a space is not a QR code any more.
  • Size it in millimetres, not pixels. On a page the only thing that matters is how big it physically is, and the more information you put in a code the denser it gets, which means it needs to be bigger to stay readable.

None of that is exotic. It is just a set of decisions nobody makes if they have only ever put a QR code on a web page.

It has to fail quietly

Here is an operational point that matters more than it should.

If anything in the tracking goes wrong for a particular letter, that letter should still go out. A letter without its code is still a letter, and it will still be read. Losing a five thousand piece run because one code could not be generated is a far worse outcome than a handful of untracked letters.

The one thing that should shout is the opposite case: a campaign set up to be tracked where the code never made it onto the template. The letters generate perfectly, they post perfectly, and the absence is invisible unless somebody opens the finished document and looks. That is the failure worth an alarm, because you only discover it when the results never arrive.

The part people forget: this is personal data now

A generic campaign code is anonymous. A code unique to one recipient is not, and that is the whole point of it.

So before a live send, your privacy notice needs to say that you do this, and if you are relying on legitimate interests you need the assessment behind it written down rather than assumed. This is not onerous and it is not a reason to avoid the technique, but it is genuinely part of the job, and it is much easier to do before the first campaign than to retrofit after somebody asks.

What it will not do

  • It will not make a bad mailshot work. Measurement tells you the truth faster. Sometimes the truth is that the list was wrong or the offer was weak.
  • Not everyone who responds will scan. Some will type your address in, some will ring, some will remember you three months later. Treat the scan data as a floor on your response, never a ceiling.
  • It does not replace a phone number on the letter. The easiest response route should still be the one your customer prefers, not the one that is easiest to measure.
  • It will not tell you who read it. Worth repeating, because it is the claim people expect to hear.

Where to start

You do not need to redesign anything. The letter you already send, on your own letterhead or in your own template, is the starting point. A unique code is added as the letters are generated, and the destination can be an ordinary page on your website, so there is nothing new for the recipient to understand.

The reporting is the part that changes the conversation. Instead of a spend and a shrug, you get the number of people who responded, how many times the codes were scanned, and a list of exactly who they were.

This is built into blu::campaign, the campaign side of our platform, so postal and email campaigns are measured through the same reporting rather than living in separate worlds. If you run print campaigns and have never been able to prove they work, we would be glad to show you what that looks like.