Zoho CRM UTM tracking for web forms embedded as source code
Add a few single-line fields to your Leads layout, put them in a Zoho web form as hidden fields, and TraceLead fills them with where the visitor first came from. The channel, source and campaign land on the lead in Zoho CRM, beside what the visitor typed.
No card needed. No lead caps on any plan.
- Zoho CRM web forms: Documented pattern, not covered by an automated test
- How we test
Added by TraceLead's hidden fields. The name and email stay in your form.
- Channel
- Paid search
- Source / medium
- google / cpc
- Campaign
- brand-uk
- Click ID
- gclid
Zoho web form UTM tracking: why the fields arrive empty
Zoho offers three ways to publish a web form: a link, an iframe and source code. Only the source code option puts the inputs in your own page. With the other two, the form shows on a Zoho page or inside Zoho's frame, and nothing on your site can fill it.
Even with source code, a hidden field holds only what something writes into it. A script that copies UTM parameters from the URL misses every visitor who browses first and enquires from /contact, and visits from search or social never had tags at all.
-
Monday
Clicks a Google ad, lands on
/pricing?utm_source=google&utm_medium=cpc&utm_campaign=brand-uk&gclid=…, leaves. -
Thursday
Types your address, opens
/contact, sends the Zoho web form.
| Hidden field | Read from the URL | Filled by TraceLead |
|---|---|---|
| tl_channel | empty | paid_search |
| tl_source | empty | |
| tl_utm_campaign | empty | brand-uk |
| tl_gclid | empty | Cj0KCQjw… |
| tl_landing_page | /contact | /pricing?utm_source=google&utm_medium=cpc |
TraceLead keeps the first visit in a first-party cookie on your own domain once your banner allows it, and fills the web form on whichever page it is sent from. The table uses tl_ names for clarity; in Zoho each input is named by its API name.
How to add UTM tracking to Zoho CRM web forms
Three steps in Zoho CRM and one in TraceLead.
The full Zoho CRM guide-
Create the fields on Leads
Open Setup → Customization → Modules and Fields → Leads, drag single-line fields onto the layout and name them TraceLead channel, TraceLead source, TraceLead campaign and so on.
-
Build the web form and embed it as source code
Open Setup → Channels → Webforms, create a form for Leads, add the new fields and mark them hidden. When you publish, choose the source code option and paste it into your page next to the TraceLead tag.
-
Find each input's API name
In the generated source, each field is an input whose
nameis its API name. Custom fields usually readLEADCFand a number:<input type="hidden" name="LEADCF12"> <input type="hidden" name="LEADCF13"> -
Paste the names into the Zoho preset
On your site's page in TraceLead, choose Start from a preset → Zoho CRM web form and paste each input name next to its field. TraceLead writes a mapping such as
input[name="LEADCF12"], which you can still edit. -
Connect your cookie banner and test
Nothing is stored or filled until the visitor agrees. Pick your consent manager in TraceLead or call
tracelead('consent', true)from your banner, then visit with?utm_source=test&utm_medium=cpc, accept, send a test lead and open it in Zoho CRM.
Zoho CRM lead source fields: what arrives
The Zoho preset covers these eight fields. Each is a plain text value you can filter and report on in Zoho CRM.
Want the gclid, utm_term or the referring site as well? Add the field the same way and a mapping row for it by hand in the site's attribution settings.
| Single-line field on Leads | Holds | Example |
|---|---|---|
| TraceLead channel | The channel the first visit came from | paid_search |
| TraceLead source | Where it came from | |
| TraceLead medium | How it came | cpc |
| TraceLead utm source | The utm_source on the first visit | |
| TraceLead utm medium | The utm_medium on the first visit | cpc |
| TraceLead utm campaign | The campaign name from your UTM tags | brand-uk |
| TraceLead landing page | The first page seen, sensitive parameters removed | /pricing? |
| TraceLead first touch at | When the first visit happened | 2026-10-05T09:14:02Z |
Attribution without personal data. No names, emails, form values, IP addresses or user agents. Ever.
No privacy workarounds. Nothing before consent, no fingerprinting, no ad-blocker bypass, no cross-site identity.
Made in the UK. GBP pricing, UK consent rules in mind, and a person who answers email.
Questions, answered
Anything else? Email us and a person replies.
Can a Zoho web form capture UTM parameters?
Yes, when it is embedded with the source code option. Add single-line fields for the values to the Leads layout, put them in the web form as hidden fields, and TraceLead fills them with the first visit's channel, source and campaign when the visitor sends the form.
Why must the web form be embedded as source code?
The iframe and link options show the form on a Zoho page or inside Zoho's frame, where a script on your site cannot reach the inputs. The source code option puts the form's HTML in your page, so the hidden inputs are there to fill.
What is the input name of a custom field in a Zoho web form?
In the generated source each field is an input whose name is the field's API name. Custom fields are usually LEADCF followed by a number, such as LEADCF12. Paste that name next to its field in the Zoho CRM web form preset.
How do I see the lead source in Zoho CRM?
The values land in the TraceLead fields you added to the Leads layout, one plain text value each, so you can add them to list views, filters and reports like any other single-line field.
Does TraceLead connect to Zoho CRM?
No. TraceLead keeps no Zoho credentials and never writes to Zoho. The snippet fills the hidden inputs in your page, and the web form sends them to Zoho with the rest of the enquiry.
Does a later direct visit overwrite the source?
No. The first touch is kept for the lifetime you set, 90 days by default. A return visit from a bookmark never replaces a recorded campaign.
Your next Zoho CRM lead, with where it came from.
Add the fields, embed the web form as source code, paste the input names. Then send a test lead.
No card needed. Cancel any time.
<!-- In the web form's source code -->
<input type="hidden" name="LEADCF12">
<input type="hidden" name="LEADCF13">
TraceLead → Start from a preset → Zoho CRM web form
channel: LEADCF12
source: LEADCF13