Use three layers: a call tracking number and a tagged QR code on every mailer to catch direct responses, then a matchback that compares your signed jobs against the mailed address list. For larger campaigns, a holdout group can also show how many of those jobs the mail actually added. This post walks through each layer, the leaks that make good campaigns look bad, and when a holdout is worth it.
Why "How did you hear about us?" is not enough
Most offices already ask callers where they heard about the company. It is worth asking, but it depends on a busy homeowner remembering a letter from two weeks ago and on your team writing the answer down every time. A homeowner who saw your yard sign, your truck and your letter may name any one of them, or none.
Treat the answer as a fourth signal, not the record. The three layers below work even when nobody remembers anything.
Layer 1: A tracking number per campaign
A call tracking number is a separate phone number that forwards to your office line and logs every call. Put a number on the mailer that appears nowhere else: not on your trucks, website or Google profile. Every call to it then came from that mail drop.
A few setup rules matter more than the vendor you pick:
- One number per campaign or per area. If you mail two neighborhoods with different letters, give each its own number so you can compare them.
- Accept texts. Some homeowners would rather text than call. Use a number that can receive texts and log them with the calls.
- Route it to a person. Send the number straight to whoever books inspections, not into a long phone menu.
- Check recording rules before you record. Federal law allows recording when one party to the call consents (18 U.S.C. § 2511(2)(d)), but some states, including California, Florida, Illinois and Pennsylvania, require every party's consent, according to the Reporters Committee for Freedom of the Press recording guide. Check with a qualified attorney before you turn recording on.
Layer 2: A QR code that tags the visit
A QR code is only trackable if the link behind it says where the visitor came from. Google Analytics reads campaign tags added to the URL, and Google says you should always use utm_source, utm_medium and utm_campaign; if they are missing, the report shows "(not set)". Those visits then appear in the Traffic acquisition report under the campaign name you chose.
For a fall mailing, the link behind the code might carry these three tags: utm_source=letter, utm_medium=direct_mail and utm_campaign=fall_2026_zip75001.
Send the code to a page that matches the letter if you have one: the same offer, a form and your phone number. Print a short typed URL under the code too, for homeowners who would rather type than scan, and tag that URL the same way with a redirect.
If you mail letter-size pieces with an Intelligent Mail barcode, USPS Informed Delivery adds one more view. Homeowners who use it get a daily email preview of their mail, and an interactive campaign shows your image and a link next to the scan of your letter. USPS says these campaigns come at no additional cost, and its campaign FAQ describes post-campaign reports with email opens and clicks. Ask your print partner whether your mailing qualifies.
Layer 3: Matchback against signed jobs
Tracking numbers and QR codes only count people who used them. Many homeowners will look you up by name, call the number on your website or walk up to a crew on their street. A matchback catches those.
A USPS article for the ANA describes matchback as checking sales records against the mailing list to see which recipients acted after the mail arrived. For a roofer, that means:
- Export the mailed list with addresses and the date each drop was handed off. Letters land days after the handoff; the guide to bulk mail delivery times shows how many.
- Export your signed jobs (and, separately, inspections) for the same period from your CRM.
- Standardize both address columns before matching. USPS Publication 28 sets the standard formats, so "123 Oak Avenue" and "123 OAK AVE" become the same address once suffixes follow its standard abbreviations.
- Count jobs at mailed addresses that were signed inside a window you choose before you look at the results, for example 90 days after delivery.
Pick the window up front and keep it the same for every campaign. If you widen it after seeing the numbers, the mail gets credit for jobs it did not cause.
Divide what the campaign cost by the jobs it produced and you have its cost per job, the number the cost per job breakdown uses to compare mail options.
How the layers compare
| Method | What it catches | What it misses | Effort |
|---|---|---|---|
| "How did you hear about us?" | Callers who remember and are asked | Anyone the office forgets to ask | Low, but needs discipline |
| Tracking number | Calls and texts to the mailer's number | People who call your main line | Low once set up |
| Tagged QR code and URL | Scans and typed visits | People who search your name instead | Low |
| Matchback | Any signed job at a mailed address | Whether the job would have come anyway | A spreadsheet per campaign |
| Holdout group | How many jobs the mail added | Little, but needs volume | Planning before the drop |
Leaks that make mail look worse than it is
A campaign can look weak because responses were lost, not because they never happened. Check these before you judge one:
- Phone menus. A homeowner holding your letter may not wait through options for billing and warranty. In one Scoutbound campaign, the roofer's phone menu dropped two real callers who were responding to a letter, after 5 and 7 seconds. That is one campaign and two calls, not a statistic, but it shows how quietly a response can disappear.
- Missed calls with no callback rule. Decide who returns missed calls from the tracking number, and how fast. Our guide to speed to lead sets callback targets by lead type.
- Leads typed in with no source. Make lead source a required field in your CRM, with "Direct mail" and the campaign name as options.
- Jobs signed under a different name or address. A rental owner or a spouse may sign. Matching on address, not name, catches most of these.
Optional: a holdout group for larger campaigns
Matchback shows which mailed homes became jobs. It cannot show which of those jobs would have happened anyway, from a yard sign, a referral or a neighbor's recommendation. A holdout group answers that: before the drop, set aside a random share of your list, often one home in five, and do not mail or knock those homes. After the window, compare the job rate of mailed and held-out homes. The difference is what the mail added.
It pays off only at volume. With a few thousand homes, the held-out group produces so few jobs that chance alone can swing the result, so treat one campaign as a rough signal and add up several campaigns before you decide anything. Two rules keep it honest: pick the holdout homes at random rather than by hand, and leave them completely alone during the window.
Where Scoutbound fits
Scoutbound builds the first two layers into every letter. Each letter carries its own QR code, which leads to the roofer's website and is tied to that one home, and the campaign's tracking phone number. Calls, texts and QR scans show up in the roofer's online portal, which also shows the date each letter was delivered, and calls and texts trigger an alert to the roofer, so a response does not sit unseen. Matchback against signed jobs and any holdout stay with you, because the signed contracts live in your CRM.
