Marketing attribution: know which channel sent the customer.
On a site built with three-bucket capture, your site writes the source on the lead row the moment the form is submitted: Paid, AI Search or Organic, with the raw click ids, campaign tags and referrer kept beside the label. A credit you doubt gets checked against what the browser sent, not taken on trust.
What is marketing attribution?
Marketing attribution assigns credit for a lead or a sale to the marketing channel that produced it. When a customer pays, it answers one question: which channel sent that person. For a local service business the channels are few and concrete: paid search, organic search, a referral from another site, a social profile, or direct, meaning the person typed your address or used a bookmark.
The word covers a family of methods. First-touch credits the channel that brought the person to your site the first time. Last-touch credits the channel that brought them back on the visit when they converted. Multi-touch splits the credit across every visit it can see. Each method is only as honest as the record underneath it.
How do you know where a lead came from?
Most attribution rests on tags. An analytics or ad platform's script sets a cookie when the visitor lands, and a second script fires when the form is sent. Block the cookie, let it expire, switch devices, or lose the second script, and the credit is lost or misfiled. The platform still reports a number as if nothing went wrong.
A site built with three-bucket capture records the source at the moment the form is submitted. The site's own script notes the page that sent the visitor and any click ids or campaign tags on the link they clicked, and keeps them for the whole visit. When the form goes in, the form handler reads those signals, names the channel and writes it to the lead row in the same server-side append as the name, phone and message. A click carrying a Google, Meta or Bing click id, or a paid medium tag, is named Paid, with the network and the campaign or creative that earned it. A visit referred by an answer engine is named AI Search, with the engine. Everything else is Organic. Ordinary referrals and direct visits fold in there on purpose: they are earned rather than bought, and a large share of direct is organic with the referrer stripped. The raw click ids, campaign tags and referrer are written in the next column, so a label that looks wrong can be audited back to what the browser sent. The Leads view reads that sheet newest first, and on a site built this way the row carries the named channel, so the credit sits on the record your own site writes before any tag has a chance to fail.
Can you see revenue by channel?
Not today: the Command Center reads payments and lead sources separately. A lead's source says which channel produced the inquiry. Revenue by channel needs one more thing, the source on the deal. The Revenue view shows the payment record from Stripe, live. Your CRM carries a source on each opportunity. The Command Center does not join a payment to a lead or deal source, and where the Revenue view splits revenue by line, that split comes from the payment description, not from a marketing channel. How the source lands on the lead row is where that source starts.
Today the CRM we connect is GoHighLevel.

Why do GA4, Google Ads and your lead count disagree?
Each one records a different event. Google Analytics 4 counts sessions by source and the key events its tag saw, hours behind. Google Ads counts the conversions its own tag reported, also hours behind. The lead ledger counts forms actually submitted, live. What GA4 counts and what Ads counts has a page of its own. On the instance whose forms feed the sheet today, a lead watch runs daily at 7:20am ET and compares the three. It raises five conditions: the tag no longer loads, leads landing with zero GA4 form events, paid leads landing with zero Ads conversions, a campaign that reliably spent going to zero, and traffic continuing with no leads at all.
The watch exists because of one account we manage. A tag change silently stopped every conversion for six weeks. Twenty-one real leads landed while Ads reported zero. The owner paused the campaign that carried every counted lead and cut its budget by ninety percent. Attribution built on tags alone said the opposite of the truth.
What will attribution never tell you?
A phone call. There is no call-tracking system here, so a lead that arrives by phone counts only when your CRM records it, and its source is whatever your staff wrote down. A recommendation: a neighbor's word shows up as Organic, because the person typed your address and nothing in the visit says who sent them. A journey across devices: someone who clicks an ad on a phone at lunch and fills in the form from a laptop that evening looks like two visitors, and the second one carries no campaign tag.
Nothing from your inbox or your calendar, because neither is connected. And nothing after the lead unless you set it. Where the Leads view offers it, each lead carries an outcome you set from the screen: contacted, quoted, won or lost. A lead with no outcome stays a lead. On a site built with three-bucket capture, the row keeps the raw click ids, campaign tags and referrer beside its label, so a credit you doubt gets checked rather than taken on trust.

What does a wrong number cost a local service business?
One customer. In this kind of business one new customer is worth three thousand dollars or more, and there is no marketing department to catch a bad number before it becomes a bad decision. A channel cut because a report said it produced nothing is a quiet loss: nothing breaks, the phone simply rings less. Attribution that starts from your own forms and your own CRM, and admits what it cannot see, is the difference between reading a report and knowing what happened. The owner's version of that question has its own page.

Attribution, signal by signal.
| Signal | Where it is recorded | What it can say |
|---|---|---|
| Lead source | The form handler on a site we build, on the lead row, at submission | Which channel sent the form, live |
| Submitted page and referrer | The same lead row | The page the form was sent from and the page that sent them |
| Campaign tags | The same lead row, when present on the link | Which campaign the click carried |
| Revenue | Stripe, on the Revenue view | Paid revenue, live, not joined to a lead source |
| GA4 traffic by source | Google Analytics 4, hours behind | Sessions by source, not customers |
| Ads conversions | Google Ads, hours behind | What Google's tag counted |
| Phone leads | Your CRM, only when recorded | Nothing, unless your staff record it |
On a site built with three-bucket capture, every lead is labeled Paid, AI Search or Organic, with the raw click ids, campaign tags and referrer written beside the label, so a credit you doubt is checked against what the browser sent.
Questions, answered.
What is marketing attribution in one sentence?
Assigning credit for a lead or a sale to the marketing channel that produced it, so you know which channel sent the customer.
Do you use cookies for attribution?
Not for the lead row. On a site we build with attribution capture, the site's own script notes the referrer and any click ids or campaign tags during the visit, and the form handler writes the named channel to the lead row at submission. GA4 and Google Ads still use their own tags, and their counts appear for comparison.
Is first-touch or last-touch better?
Neither is true on its own. The lead row carries the page the form was sent from, the referrer and the campaign tags of the visit in which the form was submitted. On the instance that runs it, a daily lead watch compares lead counts against what GA4 and Ads counted.
How is revenue attributed to a channel?
It is not, today. Payments are read live from Stripe on the Revenue view, and your CRM's opportunity source is read separately. The Command Center does not join the two, and any revenue split you see is by product line from the payment record, never by a guessed channel.
Can it attribute phone calls?
No. There is no call-tracking system. A phone lead counts only when your CRM records it, with whatever source your staff entered.
What happens when nothing in the visit names a source?
The lead is labeled Organic on a site built with three-bucket capture, and the raw click ids, campaign tags and referrer are written beside the label. Referrals and direct visits fold into Organic on purpose: a separate direct bucket invents a distinction the record does not support. On a site that keeps a Direct label, a visit with nothing captured reads Unknown (not captured), and the lead is still counted.
See it running
before you decide.
The demo is the real product on a fictional company, with no form in front of it. Pricing is three published tiers. Setup on your own accounts takes two to four weeks.
Open the live demo See pricing
New here? See what the Command Center is. Prefer to write? Send us the one thing you want to know.
- Refreshed when you open itLive data on page load, never a monthly PDF
- Counted from your own formsLeads recorded server-side, compared daily with Ads and GA4
- Four answer engines, measuredChatGPT, Gemini, Claude and Grok, with a published denominator
- A review-first queue on every sendEvery draft waits in a review-first queue and every send is logged.