Zoho Forms
Zoho Forms is a powerful online form builder that is part of the Zoho suite of business applications. It supports features like multi-page forms, payment integration, file uploads, and deep integration with Zoho CRM and other Zoho products.
AttributionHub supports two integration methods for Zoho Forms:
- Iframe embeds — Zoho forms embedded via iframes are populated by appending attribution data as URL parameters on the iframe
src. This is the most common integration method. - Native form elements — If you embed a Zoho form using the HTML source code option (which renders standard
<form>elements on the page), the standard forms handler populates it automatically.
Prerequisites
Before you begin, make sure:
- The AttributionHub tracking script is installed on your site (see Installation)
- You have a Zoho Forms account with access to create or edit forms
- You have access to your website’s code or CMS to add the embed code
Step 1: Add Hidden Fields in Zoho Forms
- Open your form in the Zoho Forms editor
- From the field palette on the left, drag a Single Line field onto your form
- Click on the field to open its properties
- Set the Field Name (Label) to something descriptive (e.g., “Attribution Channel”)
- Click on Field Properties > Advanced and check the Hidden checkbox to make it a hidden field
- In the Field Unique Name (or API Name), set it to match the AttributionHub field name (e.g.,
ah_lt_channel) - Repeat for each attribution field you want to capture
See the Recommended Hidden Fields section for a list of the most useful fields to add.
Step 2: Enable URL Parameter Pre-fill
For iframe embeds, Zoho Forms needs to be configured to accept URL parameter pre-fill:
- In the form editor, go to Settings (gear icon)
- Navigate to General Settings or Data Collection Settings
- Enable Pre-fill fields from URL parameters (the exact wording may vary by Zoho Forms version)
- Map each URL parameter to the corresponding hidden field:
- Parameter name:
ah_lt_channel—> Field: “Attribution Channel” - Parameter name:
ah_lt_source—> Field: “Attribution Source” - (repeat for each field)
- Parameter name:
- Save the settings
This step ensures that when AttributionHub appends parameters to the iframe URL, Zoho Forms reads them and fills the corresponding fields.
Step 3: Embed the Form on Your Page
Iframe embed (most common):
Use Zoho’s standard iframe embed code and add the data-attrhub-iframe attribute:
<iframe
data-attrhub-iframe
src="https://forms.zoho.com/yourorg/form/YourFormName"
width="100%"
height="600"
frameborder="0"
style="border: 0"
></iframe>The data-attrhub-iframe attribute tells AttributionHub to treat this as a Zoho iframe and inject attribution parameters into the URL.
HTML source code embed (native form):
If you choose the “Source Code” embed option in Zoho Forms, it renders a standard HTML form on the page. This is handled automatically by the standard forms handler — no special attributes are needed:
<!-- Zoho Forms source code embed -->
<form action="https://forms.zoho.com/..." method="POST" accept-charset="UTF-8">
<!-- Visible fields -->
<input type="text" name="Name" placeholder="Your Name" />
<input type="email" name="Email" placeholder="Email" />
<!-- Hidden attribution fields -->
<input type="hidden" name="ah_lt_channel" />
<input type="hidden" name="ah_lt_source" />
<input type="hidden" name="ah_lt_medium" />
<button type="submit">Submit</button>
</form>Step 4: Test the Integration
- Visit a page on your site that contains the Zoho form
- Open your browser’s DevTools (F12)
- For iframe embeds: find the iframe in the Elements panel and check that its
srcURL now includes attribution parameters (e.g.,?ah_lt_channel=Organic+Search&ah_lt_source=Google) - For native forms: inspect the hidden
<input>elements and check that they have attribution values - Submit a test entry
- In Zoho Forms, go to All Entries and check the test submission. The hidden field values should contain attribution data
For a full testing walkthrough, see Verify It Works.
How It Works
Iframe Embeds
When AttributionHub finds an iframe with the data-attrhub-iframe attribute:
- It reads the current iframe
srcURL - It builds URL search parameters from your field mapping
- It updates the iframe
srcwith the attribution parameters - The iframe reloads, and Zoho Forms reads the URL parameters to pre-fill the hidden fields
Native Form Elements
For forms rendered as standard HTML on the page, AttributionHub’s standard forms handler finds matching hidden fields and sets their values directly. No iframe manipulation is needed.
Recommended Hidden Fields
The table below lists the most commonly used fields. For the complete field catalog, see Field Reference.
Core Attribution Fields (Latest Touch)
| Field Unique Name | Description | Example Values |
|---|---|---|
ah_lt_channel | Channel group (latest touch) | Paid Search, Organic Social, Direct |
ah_lt_source | Traffic source name | Google, Facebook, Direct |
ah_lt_medium | Traffic medium | paid, organic, social, email |
ah_lt_campaign | Campaign name | spring_sale, Organic Search |
ah_lt_content | Content classification | Paid Search Ad, Social Post |
ah_lt_term | Search keyword (if available) | running shoes |
ah_lt_landing_url | Landing page URL (no query string) | https://yoursite.com/pricing |
Core Attribution Fields (First Touch)
| Field Unique Name | Description | Example Values |
|---|---|---|
ah_ft_channel | Channel group (first touch) | Paid Search, Organic Social |
ah_ft_source | Traffic source name | Google, Facebook |
ah_ft_medium | Traffic medium | paid, organic, social |
ah_ft_campaign | Campaign name | launch_campaign |
ah_ft_landing_url | Original landing page URL | https://yoursite.com/blog/post |
Global Fields
| Field Unique Name | Description | Example Values |
|---|---|---|
ah_visitor_id | Unique visitor ID, persistent across visits | a1b2c3d4-e5f6-7890-abcd-ef1234567890 |
ah_touch_count | Total number of recorded visits | 5 |
For additional fields including latest-non-direct touch (
ah_lnd_*), drill-down fields, raw UTM parameters, and ad click IDs, see the full Field Reference.
Custom Field Mapping
If your Zoho form fields use different names, override the defaults:
<script>
window.attrhub = {
settings: {
fieldMapping: {
"latest.attribution.channelGroup": "zoho_channel",
"latest.attribution.source": "zoho_source",
"latest.attribution.campaign": "zoho_campaign",
},
},
};
</script>See Configuration for the full mapping reference.
Tips
- Zoho CRM integration — If you connect Zoho Forms to Zoho CRM, your attribution fields will flow through to CRM lead records. Map the form fields to CRM custom fields in the Zoho Forms-CRM integration settings.
- Zoho Analytics — Export form submissions to Zoho Analytics for advanced attribution reporting. You can build dashboards showing which channels generate the most leads.
- Multi-page forms — Add hidden fields to the first page of your multi-page form so they are populated immediately when the form loads.
- Conditional logic — You can use Zoho Forms’ conditional logic to show or hide form sections based on attribution values if needed (e.g., show a different question for visitors from paid campaigns).
- Approval workflows — Attribution data is included in form entries and can be referenced in Zoho Forms approval workflows and email notifications.
Troubleshooting
Fields are empty in form entries
- For iframe embeds, verify that the
data-attrhub-iframeattribute is present on the iframe element. - Make sure URL parameter pre-fill is enabled in Zoho Forms settings and each parameter is mapped to the correct field.
- For native forms, verify the hidden field
nameattributes exactly match the AttributionHub field names. Names are case-sensitive. - Enable logging (
enableLogging: truein settings) and check the browser Console.
Iframe URL not updated
Check the iframe src in DevTools. If no parameters are being appended, make sure the data-attrhub-iframe attribute is present on the iframe element. Without this attribute, AttributionHub may not detect the Zoho iframe.
Pre-fill not working despite correct URL parameters
Some Zoho Forms configurations require explicit per-field pre-fill mapping. Go to the form settings and verify that each URL parameter is explicitly mapped to the corresponding form field. Also check that the field allows pre-fill (some field types may restrict it).