Form Builder

URL prefill & hiding fields

URL prefill lets you pass field values and visibility overrides through query parameters on the form URL. It works on both direct links (/f/) and embedded forms (/embed/).

Prefilling field values

Append query parameters to the form URL using each field's Attio attribute slug as the parameter name:

https://www.dialedforms.com/f/<workspace-slug>/<form-slug>?email=user@example.com&name=John

When the form loads, the matching fields are pre-populated with the provided values. Respondents can edit prefilled values unless the field is also marked as hidden.

Finding the field slug

The slug for each field is the Attio attribute slug, visible in the field settings panel in the form builder, or in your Attio workspace under the attribute definition.

Multi-value fields

For multi-select fields, pass a comma-separated list of option values:

?tags=option1,option2

Each value must match an existing option slug exactly (case-sensitive).

Hidden prefill for tracking

Combine URL prefill with hidden fields to pass tracking data through form submissions without exposing it to respondents:

  1. In the form builder, add a field (e.g. utm_source) and mark it as hidden.
  2. When sharing the form link, append the value: ?utm_source=google.

The prefilled value overrides the hidden default configured in the builder, so you can have a fallback default but override it per link.

Update an existing record by ID

By default, a submission creates a new record (or matches on a unique field, if one is configured). To update one specific record instead, append its Attio record ID to the form link:

?_record_id=<record-id>

On submit, the form updates that exact record rather than creating a new one. This is the record-ID equivalent of email/domain prefill, and is especially useful for forms built on custom objects that have no unique field to match on.

Three parameter forms are accepted, all equivalent:

  • ?_record_id= — canonical, works on any object
  • ?record_id= — bare alias
  • ?.record_id= — namespaced (e.g. ?activities_1.record_id=), mirroring how field prefills are namespaced

    The object prefix in the namespaced form is cosmetic — the ID is always resolved against the form's own source object, so a link can never target a record on a different object.

    When the ID doesn't match

    In the form builder's Settings tab, under Update an existing record, choose what happens if the record ID doesn't match an existing record:

    • Show an error (default): the submission is rejected.
    • Create new record: the form falls back to creating a new record.

    Hiding fields via URL

    Use the _hide parameter to hide specific fields by slug when the form loads:

    ?_hide=internal_field,another_field

    Multiple slugs are separated by commas. Hidden fields are still submitted with their configured default values, they are just not shown to the respondent.

    This is useful for:

    • Sharing the same form with different audiences who should not see certain fields
    • Embedding the form in a context where some fields are already known
    • A/B testing different field sets without duplicating the form

    Combining parameters

    Prefill and hide parameters can be combined freely:

    ?email=user@example.com&_hide=referral_code&utm_source=newsletter

    Compatibility

    URL prefill works on:

    • Direct form links: https://www.dialedforms.com/f//
    • Embedded forms: https://www.dialedforms.com/embed//

    When using embedded forms, pass the query parameters on the embed URL inside the data-attio-form attribute:

    <div data-attio-form="<workspace-slug>/<form-slug>?email=user@example.com"></div>
    

    <script src="https://www.dialedforms.com/embed/widget.js" async></script>