QR codes on direct mail, one code per mailing batch or segment

QR codes on direct mail, one code per mailing batch or segment

A mailing to lapsed customers and a mailing to your best customers can carry the same offer and the same envelope, and if they share one QR code you will never know which list actually responded, only that the combined mailing got some number of scans. Because direct mail goes to a known list, splitting by segment is the one piece of this you already have for free: you know who each piece went to before it's even printed. Give each segment its own dynamic code and the scan data becomes attributable to a list, a batch date or a mail merge run, not just to the campaign's name.

This is a scan-attribution layer, not a mail merge tool

OpenQR doesn't personalise the letter, manage the mailing list, or handle postage. What it does is give each list, batch or segment its own trackable code, generated in bulk from that list's own labels, to drop into whatever mail merge or fulfilment process is already running.

Segment first, then generate

Split the destination and its UTM tag along however the list was actually cut, lapsed versus active, high value versus standard, region, a specific data pull date, rather than inventing a split after the mailing has gone out. Decide the segments before the merge so each code and its segment stay locked together for the life of that mailing.

  • By customer segment: lapsed, active, VIP, prospect
  • By list source: a purchased list versus your own CRM export
  • By mailing batch, when a large send goes out in tranches over several weeks
  • By region, when postage timing or offer terms vary by area
  • By data pull date, so a re-send to an updated list doesn't blend into the original send's numbers

Segment codes and personalised codes are different decisions

A code per segment, this page's scope, tells you which list responded. A code per individual recipient tells you which person responded, and that's a mail merge and print-personalisation problem this page doesn't solve: it needs a unique code placed on the correct letter at merge time. The bulk generator can technically produce hundreds of distinct codes from a CSV, one row per recipient, but getting the right code image onto the right letter is print-shop and mail-merge tooling, not something generating the codes alone guarantees. For most direct mail, segment-level attribution answers the real question, which list worked, without that added complexity.

Segmentutm_contentLabelTypical volume
Lapsed customers (12mo+)segment-lapsedMail - LapsedThousands
Active customerssegment-activeMail - ActiveThousands
VIP or high valuesegment-vipMail - VIPLow hundreds
Purchased prospect listsegment-prospectMail - ProspectThousands

What the code should point at

A landing page matched to the segment is stronger where you can manage it, a lapsed-customer offer reads differently to a VIP one, but even a single shared landing page still benefits from the UTM split, because the value is in knowing which segment scanned, not necessarily giving each one a bespoke page. Keep utm_campaign identical across segments and vary only utm_content.

Direct mail has the slowest, longest tail of anything on this site

A leaflet gets read the day it lands; direct mail sits on a kitchen counter for weeks. Don't compare segments after three days. Give a send at least two to three weeks before drawing conclusions, and look at the daily series (or the full history, on Pro) for a long, low tail of scans rather than expecting a spike.

Running a segmented direct mail send

  1. 1

    Cut the list into segments before the merge

    Based on a real difference, recency, value, region, not an arbitrary split.

  2. 2

    Tag one destination URL per segment

    A shared utm_campaign, a segment-specific utm_content.

  3. 3

    Generate one dynamic code per segment

    In the bulk generator, labelled with the segment's name.

  4. 4

    Hand the code image to whoever runs the merge

    One image per segment's print run.

  5. 5

    Group the segment codes in one folder

    So the send stays together in the dashboard.

  6. 6

    Wait two to three weeks, then compare per thousand mailed

    Segment sizes rarely match, so normalise before comparing.

What a scan tells you, and the response channels it can't see

Many direct mail recipients respond by phone, by visiting in person, or by typing a web address rather than scanning, especially older or less mobile-first segments, so a segment with few scans is not automatically a segment that didn't respond, it may simply have responded a different way. If a segment matters enough to judge properly, ask about response channel in your call-handling or in-store process too, rather than relying on scan data alone for that audience.

Yes. Give each segment or list its own dynamic code and UTM tag before the mail merge, and compare scans per segment once the mailing has had a few weeks to land.
Part of Campaign & print attribution