Writing · essay

Attribution when the sale happens off the website

When leads close by phone, in intake, or through a signed agreement, the source has to survive every hop. How to carry it through and send real outcomes back to ads.

For a lot of businesses, the website isn't where the sale happens. It's where the conversation starts. Then there's a phone call, an intake interview, a qualification step, maybe a signed agreement, and eventually a client. None of that is visible to GA4 or the ad platforms by default.

That's the normal situation in legal lead generation, where I've spent years. A form fill or a call is only the first step. What matters is whether it became a real case. If your measurement stops at the form, you end up optimizing ad spend for the cheapest leads to generate, which are rarely the ones that turn into business.

The good news is that this is solvable. It takes discipline more than technology.

Map the path the lead actually takes

Start by drawing the real path, including every system and every human handoff. A typical one:

  1. Visitor clicks an ad and lands on the site.
  2. They submit a form or call.
  3. The lead lands in a CRM or a legal intake system.
  4. An intake person qualifies it by phone.
  5. A qualified lead gets an e-signature agreement.
  6. The signed matter moves into a case-management system.

Each arrow is a place where the original source can be lost. The website half of this, getting UTMs and click IDs into the form, is covered in following one click from ad to CRM and your form is a conversion system. This post is about what happens after.

Carry the source through every hop

The rule is simple: every record created downstream should carry the original source values forward, or hold a reliable link back to the record that has them.

In practice that means:

  • The CRM or intake record has real fields for source, medium, campaign, landing page, and click ID. Not a notes field.
  • Automations copy those fields forward. When a lead converts to a matter, or a record moves to another system through Zapier or Pipedream, the source fields travel with it.
  • E-signature forms are pre-filled or linked with a record ID, so the signed document can be matched to the lead that started it.
  • Manual records have a source process. When intake creates a record from a phone call, they select how the caller found you from a controlled list, not free text.
  • Duplicates get merged. If the same person filled out a form and then called, you want one record with the web source attached, not two half-records.

Phone calls are the weakest link. If a meaningful share of your leads call, consider call tracking with dynamic numbers that can associate a call with a session or campaign. At minimum, know which calls have reliable attribution and which rely on the caller's memory.

Define the stages that matter

Before you can send outcomes anywhere, the business has to agree on what the outcomes are. I push for a short list of stages with clear definitions:

Stage Meaning
Lead Form submitted or call received
Contacted Intake reached the person
Qualified Meets the criteria for the service
Signed Agreement executed

The definitions matter more than the names. If "qualified" means something different to each intake person, the data will be noisy no matter how good the plumbing is. Each stage change should be recorded with a timestamp on the record.

Send outcomes back to the ad platform

Once outcomes are recorded against records that still carry their source, you can send them back to the ad platforms. That's what lets automated bidding learn which clicks produce qualified and signed leads, instead of treating every form fill as equal.

For Google Ads, there are two related approaches:

  • Offline conversion imports using the click ID. You record the gclid (or gbraid / wbraid) at the time of the lead, and later upload a conversion with that ID, a conversion action name, a time, and optionally a value. Google ties it back to the original click. Uploads need to happen within the conversion action's click-through window, so don't let them pile up for months.
  • Enhanced conversions for leads. Instead of relying only on the click ID, you capture first-party data such as email or phone on the form, and later upload the conversion with that data normalized and hashed (SHA-256). Google matches it against signed-in user data. This helps when click IDs were lost along the way.

Meta has a similar idea through its Conversions API, where you can send lead-stage events from your server with hashed customer information.

Check the current official documentation before implementing; the exact requirements and field names change over time.

The upload itself can be manual at first. A weekly export of qualified and signed records with their click IDs is a legitimate starting point. Once the process is stable, automate it on a schedule through the platform's API or a tool like Zapier or Pipedream. Automate only what's stable enough to deserve it.

Matching keys and data hygiene

Matching is where offline attribution succeeds or fails. The keys you can use:

  • Click ID (gclid and similar): the most precise for Google Ads, if captured and preserved.
  • Email and phone, normalized consistently: lowercase and trimmed emails, phone numbers in a consistent international format, then hashed.
  • Your own record ID, to connect the website entry, the CRM record, the e-signature document, and the case record internally.

Common mistakes I look for:

  • Click IDs truncated by a field length limit.
  • Phone numbers stored in five different formats.
  • Timestamps in the wrong time zone, making conversions appear before the click.
  • Uploading the same conversion twice from two different automations.
  • Sending sensitive details that the ad platform doesn't need. Send the minimum: the identifier, the stage, the time, and a value if you use one.

Privacy is part of the design, especially where leads share sensitive information. Make sure your privacy policy covers this use, that consent is respected, and that no details beyond what's needed ever leave your systems.

Qualified leads, not raw leads

The point of all this is to stop measuring success by lead count. Raw leads are easy to inflate: loosen the form, run broader keywords, and the number goes up. Qualified and signed leads are harder to fake and much closer to what the business cares about.

Once you have this in place, report cost per qualified lead and cost per signed client by source. Those numbers often rank campaigns differently from cost per lead. That's the moment attribution starts paying for itself. The website isn't the product. The whole system is, and the system ends where the client signs, not where the form submits.