Skip to content

Hidden Fields: Silent Data Passing for IntakeBots

Hidden fields let you attach data to an IntakeBot submission without the respondent seeing or answering anything. The field exists in the schema, its value gets saved, and it can drive conditional logic, routing rules, and contact mapping. It just never shows up in the conversation.

This is useful when your system already knows something about the person (a CRM ID, a campaign source, an account tier) and you want that data to travel with the submission automatically.

Hidden fields require a Pro or Business plan.

Any field in your IntakeBot can be marked as hidden. When you do, three things change:

  1. The field disappears from the respondent’s view
  2. A violet badge appears in the editor so you can tell it’s hidden
  3. The publish panel and embed code update to show hidden field parameters

The field still functions like any other field. It validates, maps to contacts, triggers conditional logic, and shows up in submission data. The only difference is that nobody fills it in manually.

Hidden fields get their values from one of three places. If multiple sources provide a value for the same field, embed attributes take priority over URL parameters, which take priority over static defaults.

Set values directly in your embed code using the data-fields attribute. This works with inline, popup, and widget embed modes.

<div
data-iozen-bot="your-bot-id"
data-fields='{"campaign":"spring2026","source":"landing-page"}'
></div>

If you’re embedding from a dynamic app (React, Next.js, etc.), you can build the data-fields object from your application state.

Append ?f.key=value to any IntakeBot direct link. This works well for email campaigns, ad links, and anywhere you control the URL.

https://app.iozen.ai/b/your-bot-id?f.source=google&f.ref=abc123&f.campaign=summer

Multiple parameters stack with &. Values are URL-decoded automatically.

Set a default value in the field editor that applies to every submission. Good for values that don’t change between respondents, like a department name or a region code.

Static defaults act as fallbacks. If an embed attribute or URL parameter provides a value, the default is ignored.

Pass a record ID from your app into the IntakeBot so each submission links back to the right record. No manual lookup, no copy-paste errors.

<div
data-iozen-bot="your-bot-id"
data-fields='{"crm_record_id":"rec_8xK2mP"}'
></div>

Carry UTM parameters from your landing page into the submission. Combined with attribution tracking, this gives you end-to-end visibility from ad click to submission.

https://app.iozen.ai/b/your-bot-id?f.utm_source=google&f.utm_medium=cpc&f.utm_campaign=brand

Set a variant identifier as a hidden field and branch your IntakeBot’s conditional logic based on it. Different variants see different questions, content blocks, or CTAs.

<!-- Variant A -->
<div data-iozen-bot="your-bot-id" data-fields='{"variant":"A"}'></div>
<!-- Variant B -->
<div data-iozen-bot="your-bot-id" data-fields='{"variant":"B"}'></div>

Then add conditional logic: show field X when variant equals A, show field Y when variant equals B.

Record where a respondent came from without asking them. Useful for partner programs, internal routing, or multi-channel intake.

https://app.iozen.ai/b/your-bot-id?f.referrer=partner-acme&f.channel=slack

When you already know things about the user (their account tier, their region, their assigned rep), pass those as hidden fields. The submission arrives complete without the respondent having to re-enter information your system already has.

  1. Open your IntakeBot in the editor
  2. Select the field you want to hide (or create a new one)
  3. Click the visibility toggle in the field settings panel
  4. The field switches to hidden and shows a violet badge
  5. Optionally set a static default value in the field settings
  6. Publish the IntakeBot and grab the updated embed code or direct link

The publish panel shows all hidden fields and their parameter names so you can build your embed code or URL correctly.

Hidden fields work with conditional logic the same way visible fields do. You can:

  • Show or hide other fields based on a hidden field’s value
  • Show different content blocks depending on a variant or source
  • Route submissions through different workflow stages based on hidden data

This is particularly useful for A/B testing and multi-channel intake where the same IntakeBot serves different audiences.

Hidden fields are gated at both the client and server level:

  • Client side: The visibility toggle, publish panel, and embed code generation require Pro or Business. Free plan users see the option but can’t activate it.
  • Server side: Submissions from free plans have hidden field values stripped before saving. Upgrading to Pro or Business restores full hidden field functionality.