ARKONE
Twelve upright marks on a dark ground, one for each stage of the engine, with mark 5 lit in amber and the book title beneath.

How do you actually capture a reader into a system, not an inbox, so that the CRM fills itself?

September 8, 2026 · 6 min read

S
Sobin George Thomas

The click knew where it came from. A form that emails you throws that away, and no later repair exists, because the browser that knew has closed.

A form that emails you, and then you type. The reader fills it in, the answers arrive as a message, and someone copies them into the CRM later. At a forty-person firm the record says the lead came from the website, which is not a source.


By hand today

“Manage lead operations, including lead routing, assignment updates, enrichment, and distribution”

Freshworks, Marketing Operations Specialist advert, 7 July 2026

Above a certain size, the copying becomes a job with a title. Below it, the copying is the founder on a Sunday. Either way the same thing is lost on the way in, and it is not the name or the email address. It is where the person came from.

The click knew. It arrived carrying the campaign it came from, and often the identifier the advertising network attached to it. The form did not read those, so the record cannot say which post, advert or page produced this person. That is how a company ends up with a channel table where most of the rows say direct, and a channel decision that cannot be made.

The inbox makes it worse, because a message is not a record. It can be read, replied to, and never counted.


What it costs you each week

Twenty-eight dollars a month, the published starting price of one popular form tool, on the plan below the one carrying hidden fields. Hidden fields are the feature that carries the source of a click into the record.

Source: Typeform pricing, September 2026

The free tools are genuinely good. Tally gives unlimited submissions and will send every answer to an address you choose. What none of the free tiers does is carry the campaign parameters through, because that is the feature the paid tier sells.

There is a subtler trap in the paid version. In one widely used customer platform, hidden fields are filled from the address bar, and parameters that were stored earlier in the visit do not reach them. So a reader who clicks an advert, reads two pages and then fills the form arrives as direct. The cost is not the subscription. It is a channel report that quietly disagrees with your bank statement.


The build

Open Claude Code and keep the click with the lead. The page reads the campaign parameters on arrival, holds them through the visit, and posts them with the form. The event that says a lead was captured fires only after the record is written.

Work in the folder holding your site. This build has three small parts, and the third is the one most people skip.

On the landing page, read these from the address bar on mount:
utm_source, utm_medium, utm_campaign, utm_content, utm_term, li_fat_id
and gclid. Store them as one object in session storage so they survive a
refresh and an anchor jump, and let a later URL carrying a parameter
overwrite what is stored. Send them with the form as an attribution
object. On the server, accept only those seven keys, trim every value to
a sane length, and store them on the lead record. Fire the lead event
only after the write succeeds. Where every parameter is empty, store the
words direct with no campaign parameters rather than a blank.

What comes back is a form that arrives at the record with its source attached. ArkOne runs exactly this: seven attribution keys read on mount, held in session storage, whitelisted on the server in src/app/api/clinic/request/route.js, and stored on the lead. Values are clipped so a crafted link cannot pad the record. The analytics side is written up in docs/analytics.md, including the rule that every lead event fires only after the interface confirms the write, across eight different kinds of lead. You build your own, and the paths are the pattern to copy.

The rule underneath came from paying for it. The campaign ledger records the lesson in one line: the form captures the campaign parameters and the network click identifier, or the lead is unattributable in the CRM. There is no later repair for a missing source, because the browser that knew has closed.


What it feeds

A CRM that fills itself. A lead that arrives with its source and its answers can be routed, scored and staged without anyone typing, which is what the next chapter builds. That join is only worth building on records that arrived complete.

Two numbers prove this stage worked. The first is leads carrying a real source, set against leads in total, where the honest words direct with no campaign parameters count as a source and a blank does not. The second is the count of forms that fired a lead event without writing a record, which should be zero, because the event fires after the write.


What stays with a person

The reply to the first message. A system can capture, route and stage. The first human sentence back is still written by a human.

Capture is mechanical. The reply is not. Somebody reads what this person actually wrote and answers it, and no amount of routing improves that moment.

The other ruling is the form itself. Every field you add is a field somebody abandons. Whether to ask for a phone number, a budget or a company size is a trade between what sales wants and how many people finish, and only a person who carries both can settle it. Write the ruling down beside the form, with the date, so it is not argued again every quarter.


The tools you already pay for

Nothing new to buy.

Form does not need replacing. It needs to post somewhere you control, so the seven parameters can travel with it.

CRM gains a few string fields on the lead. That is the whole schema change.

Analytics stops being a separate story about traffic and starts agreeing with the CRM, because both are counting the same confirmed write.


Every lead arrives carrying the click that made it, and the event fires only when the record exists. Then the CRM can fill itself.

Ask: What share of the leads in your CRM this month can name the post or advert that produced them?

This is chapter 5 of twelve, after the calendar that publishes without you; chapter 6 turns the captured record into a pipeline row. The book, Building a real GTM engine with Claude Code and Codex, end to end, runs the whole engine in order, one chapter per stage. A free starter edition for firms under fifty people is coming through the 100k programme.

対話を始めませんか?

ArkOneが構築するガバナンスとプログラムアーキテクチャが、どのように測定可能なAIリターンを実現するかをご覧ください。

ディスカバリーコールを予約