The number we get asked for most often, when we sit down with another operator to look at their marketing, is "what's actually working?" And the second most common follow-up is some version of "I think it's mail, but I'm not sure." We have run this same conversation enough times to recognize the pattern: the operator has been spending money for months or years on three to six channels, they have a vague gut sense of which one is producing, and they have no number — none — that they would defend in a courtroom.
This is a guide to the part of the business that turns gut feel into a defensible number. Attribution — knowing which lead came from which source, which channel, which campaign, with what lag, at what cost-per-deal — is not glamorous, but it is the difference between an operator who confidently kills a $4,000/month campaign and one who keeps it running for a year because they "think it's working." Written from the operator side after enough years of running real estate marketing, and enough years of watching other operators burn cash on channels that produced nothing, that we have opinions about every layer of this.
We will cover, in order: why most REI operators have no real attribution, the two distinct attribution problems (channel attribution and timing attribution), the cohort approach that handles the long-tail close, UTM tagging conventions that scale, call tracking and what the right setup looks like, the multi-touch reality and why first-touch and last-touch are both wrong, attribution by channel with the actual numbers we see, the reporting that informs decisions versus the reporting that just looks productive, the seven mistakes we see operators repeat, and how to build the whole system from scratch in a weekend.
Why most REI operators have no real attribution
The pattern is consistent. The operator spends across mail, SMS, paid ads, and cold call. Leads come in. The closer notes the source in the CRM if they remember to ask. The operator looks at the CRM at the end of the month, eyeballs the "lead source" field, and forms a gut sense. The gut sense is roughly correct for the loudest sources (the ones that produce a lot of inbound leads quickly) and badly wrong for the quiet sources (mail, organic, long-tail nurture) where the lead arrives 30-180 days after the spend.
The four causes of bad attribution, in our experience:
1. The lead-source field is filled out by the closer based on what the seller said on the call. Sellers usually do not remember accurately. They got a letter, a text, saw an ad, then googled the company. They will tell you "I saw your ad" because that is the touchpoint they remember. The actual first touchpoint was the mailer three months earlier.
2. There is no UTM tagging. Paid traffic landing on the site shows up in the CRM as "website" without any source dimension. Three different campaigns funnel to the same form and become indistinguishable.
3. There is no call tracking. Every inbound call rings the same number. The operator has no way to know whether the call came from the mail piece, the Google ad, the Facebook ad, or the BiggerPockets thread.
4. There is no cohort reporting. Monthly P&L groups revenue and spend by calendar month. A deal that closed in March from a January mailer shows up as revenue in March against no spend in March. The math looks like a profit; it is actually a delayed payoff on January's spend.
Fix any one of those four and you improve the data. Fix all four and you have an attribution system. Most operators have fixed none.
The two attribution problems
It is worth being explicit that "attribution" in REI is actually two distinct problems with different solutions.
Channel attribution. Which source did this lead come from? The signal is captured at the moment of inbound — call-tracking number, form URL, UTM parameters, source code on the mailer. This is the cleaner of the two problems. The data exists if you put the tracking in place.
Timing attribution. When does this lead close, relative to when we spent the money that produced it? The signal requires you to follow each lead cohort over 6-12 months and watch the close rate develop. This is the harder problem because it requires patience the average operator does not have.
Both problems have to be solved together. Channel attribution alone tells you "mail produced 100 leads, SMS produced 60." Timing attribution alone tells you "the leads we got 4 months ago closed at 0.6%." You need both to say "this specific $4,200 mail drop produced 47 leads, of which 3 closed within 90 days and 2 more within 180 days, at a blended cost-per-deal of $840."
The operators who get this right run their marketing on the second number, not the first.
The cohort approach
Cohort reporting is the single most important attribution discipline in REI marketing. It is also the one most operators do not do, because it requires more than the default reporting in any CRM.
The principle: instead of grouping revenue and spend by calendar month, group every lead by the source-month it came in, then track that cohort over the next 12 months. Spend is locked to the cohort. Revenue follows the cohort as deals close, regardless of which calendar month they close in.
Example. In March 2026, you spent $4,200 on a direct mail drop. 47 leads came in from that drop, identified by the unique call-tracking number printed on the mailer. The March-2026-Mail cohort:
- Day 30: 1 deal closed → $11,500 spread → cohort to-date $0 - 11,500 + 4,200 spend = +$7,300
- Day 60: 1 more deal → $9,800 spread → cohort +$17,100
- Day 90: 0 deals → cohort still +$17,100
- Day 120: 1 deal → $14,200 spread → cohort +$31,300
- Day 180: 1 deal → $8,400 spread → cohort +$39,700
- Day 365: closes out
Final cohort math: 4 deals over the year, $43,900 in spreads, $4,200 spend, $39,700 in net contribution. Cost per deal: $1,050. Time-weighted IRR on the $4,200 if you really wanted to model it: very high.
That is what attribution looks like when it works. The operator can say with confidence: this campaign cost $4,200, produced $39,700 of net contribution, with a median lag of 95 days. They can compare it directly to the next month's mail cohort, or to the same month's SMS cohort, on the same basis.
Without cohort reporting, all the operator sees in the March P&L is the $4,200 expense. The April P&L shows the first deal close as revenue. The June P&L shows the next one. The connection is invisible. The operator might kill the mail campaign in May based on "I'm not seeing returns," and they would be killing the campaign that worked.
This is the single biggest reason marketing campaigns get killed prematurely in REI. The math is invisible without cohort reporting.
UTM tagging — the naming convention that scales
UTM parameters are how you attribute web traffic — the source, medium, campaign, and content that drove a click. The standard five UTM fields:
utm_source: where the traffic came from (google, facebook, mailer, newsletter)utm_medium: the channel type (cpc, organic, email, mail)utm_campaign: the specific campaign (probate-q2-2026,vacant-list-april)utm_term: the keyword (for paid search)utm_content: the variant or ad creative (yellow-letter-v3,postcard-headline-b)
The mistake most operators make is filling these out inconsistently or not at all. The naming convention is more important than the specific values; without consistency, your reporting collapses.
The convention we use:
utm_sourceis always lowercase, no spaces, dashes only. Specific platforms:google,facebook,mailer,sms,linkedin,reddit,bigger-pockets. Not "Google Ads," not "Direct Mail."utm_mediumis one of a small fixed set:cpc(paid search),social(paid social),mail(direct mail with QR or URL),organic(organic search),referral(any inbound link).utm_campaignfollows pattern{niche}-{month}-{year}:probate-april-2026,vacant-may-2026. Use the same naming for the corresponding cohort.utm_contentidentifies the specific ad/creative/letter variant. Critical for A/B testing.
Every link in every piece of marketing gets UTM'd. Every Facebook ad. Every Google ad. Every mailer QR code. Every email link in your newsletter. Every link in a podcast description. Without exception. The operator who skips UTM tagging on "small" channels is the operator who later has no idea what worked.
There is a UTM builder tool inside Google's marketing platform that produces these strings for you. You can also build them by hand. The tool does not matter; the discipline does.
Call tracking — the basics
For inbound calls, UTMs are useless because the seller does not click a link. Call tracking solves this by giving each lead source a unique phone number that forwards to your main line, tagging every call with the source.
The right setup:
- One unique tracking number per discrete lead source. Mailer batch A gets one number. Mailer batch B gets a different one. Facebook ads get a different number. Google ads get another. The website form-callbacks ring a different number than the Carrot SEO page does.
- Numbers route to the closer's actual phone (or to your dialer) and record the call.
- Every call gets logged with: tracking number called, caller's phone, time, duration, recording URL.
- The CRM lead record is auto-populated with the source from the tracking number on inbound.
- For texts and forms, the equivalent is unique form URLs or UTM-tagged links — see above.
CallRail is the standard in our market for this and is what we use. It produces clean, queryable data and integrates with most CRMs. Setting up a real tracking number per source on day one is a 30-minute task that pays compounding returns; setting it up retroactively after six months of unattributed traffic is a slog.
The minimum number of tracking numbers we recommend for a serious operator: 8-12. Mail (2-3 per major campaign type), SMS, Facebook ads, Google ads, organic site, Carrot site, referral inbound, direct (people who saved your number). Below this you are bucketing things together that should not be bucketed.
Multi-touch reality — first-touch vs last-touch vs blended
A real estate seller's journey to your closing table is rarely a single touchpoint. Typical paths we see:
- Yellow letter received → ignored for 6 weeks → second letter received → text response 4 days later → first call returned → appointment set
- Facebook ad seen → clicked → no form fill → 3 weeks later searched Google for "[your city] sell my house fast" → clicked organic result → filled out form → call
- Friend at REIA meeting mentioned you → seller looked at your website → 3 months later got a mailer from you with the same address that triggered it → called
In all three cases there is no single "source" of the lead. There is a journey. The question of how to attribute the deal becomes:
- First-touch attribution: credit the source that introduced the seller to you. The yellow letter, the Facebook ad, the REIA friend.
- Last-touch attribution: credit the source that triggered the actual contact. The second mailer, the organic search, the third mailer.
- Blended attribution: split the credit across all touches in the journey.
Most CRMs default to one of these and never tell you which. Most operators do not know which their CRM is using.
The honest answer is: none of the three is right alone. First-touch flatters your top-of-funnel channels (you would not have closed without the introduction). Last-touch flatters your bottom-of-funnel channels (you would not have closed without the trigger). Blended is the most defensible but is also the most complicated to model and explain.
The operational compromise we run, which works for most operators below ~25 deals/month:
- Default to last-touch for cohort cost-per-deal math. It is the cleanest, it ties to the dollars actually spent in the closing window, and it does not require complex modeling.
- Track first-touch as a secondary attribution dimension on every lead. This catches the situations where mail introduced the seller 6 months before they came back through Google.
- For the operators truly running a multi-channel attribution audit (rare, but happens), build a blended model that credits each touchpoint by a defensible weighting. This is a quarterly exercise, not a daily one.
The unsexy reality is that for the operator running 5 deals a month, last-touch attribution plus a quarterly first-touch reconciliation is enough to make sound campaign decisions. Above 20 deals a month, blended attribution starts to matter. Below 5 deals a month, just track anything consistently — sophistication is not the bottleneck.
What attribution looks like by channel
A condensed view of what the attribution data tends to show, channel by channel, from our pipeline and the operators we work with.
Direct mail. Cost per lead: $35-90 depending on list and creative. Cost per qualified contact: $90-220. Cost per deal: $750-2,400. Median lag: 35-95 days. Long tail of closes out to 12+ months. Cohort math heavily favors mail when measured at 180 days versus 30 days.
SMS. Cost per lead: $1-4. Cost per qualified contact: $40-140. Cost per deal: $1,200-3,500. Much faster cycle (median lag 10-30 days). Compliance overhead reduces practical throughput.
Cold call. Cost per lead: $4-12 in pure cost, but heavy hidden labor cost. Once the closer is trained, cost per deal at 5-deal-a-month operation: $600-1,800. Higher at the top of the volume range as conversion plateaus. Tight cycle (median lag <14 days).
Paid search (Google). Cost per lead: $80-250 in motivated-seller verticals. Cost per qualified contact: $250-700. Cost per deal: $2,000-5,500. Tight cycle (median lag <21 days). Quality of leads typically higher than cold outbound because the seller intentionally searched.
Paid social (Facebook). Cost per lead: $40-180. Conversion to qualified contact lower than search because Facebook traffic is interruption-driven, not intent-driven. Cost per deal: $2,500-7,000 in our experience. Long-tail less pronounced than mail.
Organic search. Cost per lead: near zero on a marginal basis; the SEO investment is fixed. Cost per qualified contact: hard to attribute cleanly because organic visitors often touch multiple pages. Cost per deal: at scale, organic is the cheapest channel in the long run. Median lag long (organic visitor → form fill is often days to weeks of revisits).
Referral. Cost per lead: zero direct cost. Cost per qualified contact: zero. Cost per deal: zero. Limited supply. Operators who under-invest in the relationships that produce referrals lose access to the highest-margin lead source available.
These numbers vary by market. They also drift quarter to quarter. The point is not "use these numbers as your benchmarks" — the point is "you should know what these numbers are in your own business, broken out by source-cohort, and updated every month."
Reporting that informs decisions
Most CRMs have a "marketing report" feature. Most of those features are useless. The reporting that actually informs decisions has exactly five tables.
Table 1 — Lead cohort by source-month. Rows: source-month. Columns: leads, qualified contacts, appointments held, offers, deals to date, revenue to date, spend, cost per deal to date. Updated weekly.
Table 2 — Cohort maturation. For each source-month cohort, the deal count at Day 30, 60, 90, 180, 365. Lets you compare cohort maturation curves and detect when a channel's lag is shifting.
Table 3 — Channel mix. What percentage of last month's deals came from each channel. Compared to the same month a year ago. This is the trend report — it tells you which channels are growing as a share of business.
Table 4 — First-touch vs last-touch reconciliation. A quarterly view. Take all deals closed in the quarter. List each one with both its first-touch and last-touch source. Where they differ, examine the journey. This is how you catch the situation where mail is doing the heavy lifting but Google is getting the credit.
Table 5 — Channel-level economics. Per channel, the all-in monthly spend, the leads produced, the deals produced (cohort-adjusted), the cost per deal, and the unit-economic margin. Updated monthly.
Five tables. Reviewed weekly (1, 3) or monthly (2, 5) or quarterly (4). Total time required if your data infrastructure is in place: about 90 minutes a week, falling to 45 minutes a week once the reports are templated.
What most operators have instead: a CRM dashboard with 20 widgets, none of them actionable, plus a spreadsheet they update sporadically. The five tables above are more useful than any 20-widget dashboard.
The seven mistakes operators repeat on attribution
In rough order of frequency.
1. No attribution at all, just gut feel. The most common starting state. Easily fixed in a weekend, almost never fixed without a forcing function.
2. Trusting what the seller says about source. Sellers do not remember accurately. The lead-source field that the closer fills in based on the call is wrong roughly 30-50% of the time in our audits. Fix: tracking numbers and UTMs catch the actual source automatically; the closer's note is the secondary data point.
3. Calendar-month reporting only. P&L by calendar month makes mail look unprofitable forever because the lag is invisible. Fix: cohort reports.
4. Killing campaigns at 30 days. Almost no channel has stabilized at Day 30. Mail definitely hasn't. The decision rule needs to be 90 days minimum, with full cohort follow-through at 180 days for major campaigns. Fix: never kill a campaign on under-90-day data.
5. Mixing channels into one tracking number. "Marketing line" — used for mail, SMS, ads. Attribution collapses. Fix: every channel gets its own tracking number, period.
6. No first-touch tracking. Operator only sees the last-touch source and concludes Google is producing all the deals, when actually mail is doing the introducing six months earlier. Fix: ask first-touch at the appointment or in the CRM, secondary to the auto-captured last-touch.
7. Reporting that nobody reviews. Five tables built, three viewed, two ignored. Fix: weekly 30-minute marketing review meeting with one decision per table. If the reports do not produce decisions, they are not reports, they are decoration.
The minimum viable attribution system
If you are reading this and you do not have attribution today, the system you can stand up in a weekend:
- A CallRail (or equivalent) account with 8-12 tracking numbers, one per discrete lead source
- A UTM convention written down and applied to every link in every campaign going forward
- A CRM field on every lead capturing both first-touch (asked) and last-touch (auto-captured)
- A spreadsheet (or BI tool, if you're at scale) for the five tables above
- A weekly marketing review meeting where the five tables get reviewed and one decision per table gets made
That is the system. It does not require expensive tooling. It does require the operational discipline to set it up cleanly the first time and to maintain the discipline once it is running.
For the lead-stack pillar, this attribution work is the layer that tells you which parts of your lead stack to invest more in and which to kill. For the CRM + dispo pillar, it is the reporting layer that sits on top of the pipeline structure. For the lead-conversion pillar, it is the upstream measurement that tells you whether your top-of-funnel changes actually moved the closing number.
For neutral, operator-written reviews of call-tracking and attribution tools, see the market-convert category. For the broader topic of operator software, see the State of REI Software 2026.
The math on attribution is unforgiving. The marketing dollars you spend without attribution are partially wasted — not because the channels do not work, but because you cannot tell which ones do, which means you cannot rebalance, double down, or kill the bad ones with confidence. The operators who get this right consistently produce 1.5-3x more deals from the same marketing budget than operators who do not, because they kill bad channels fast and pour the saved money into channels that work. The math is not complicated. The discipline of doing it every week, on every source, is what separates an operator with a real marketing function from one who is spraying money and hoping.