Skip to main content

Pre-fill a form and capture events

Consider pre-filling information for your recipients and capturing events from your form to automate your workflow even more.

Availability: Business and Enterprise plans

If you're ready to automate your workflow further, pre-fill information for your recipients and capture events from your form.

Skip to:

Note: We can't provide support for pre-filling information or capturing events from forms.

Learn more about embedding your form on a website on our developers portal.

How to pre-populate information in your form

When you pre-fill information on your form, your recipients only need to sign the document. Here's what you can pre-populate:

Type

What it does

Identified by

Visible to recipient?

Recipients

Fills in the answers about each document recipient - name, email, and any predefined role variables (e.g. Client.FirstName)

The role name (e.g. Client)

Yes - shown as recipient questions

Metadata

Attaches internal tracking data to the resulting document (e.g. a CRM lead ID)

Any key you choose

No - internal only

Variables

Fills in custom document variables that aren't tied to any form field

The variable name, exactly as named in the template

Yes - wherever that variable appears in the doc

Fields

Fills in a form field the recipient would otherwise fill in - text, checkbox, date, or dropdown. Filling a field linked to a variable updates that variable too

The field ID

Yes - the field, and anywhere its linked variable appears

The one people mix up most: fields vs. variables.

  • A field is an interactive question on the form (text box, checkbox, date picker, dropdown) - use its field ID.

  • A variable is a merge-tag placeholder in the document body, like [Client.FirstName] or [custom_var]. Predefined role variables fill through recipients, not variables - reserve variables for custom document variables with no matching form field.

If you're not sure which one you're looking at, check the template or form builder.

Find your identifiers

Before you build a pre-fill link, get three things: the role name, the field ID(s), and the variable name(s) if you use any.

Recipients

Go to the template's Roles panel. Role names are listed exactly as they'll appear for recipients (e.g. Client).

Field

  1. Open the template editor.

  2. Select the field you want to pre-fill.

  3. Select the gear icon to open the field settings and find the Field ID.

Use this ID to pre-fill the field. You can rename it, but keep it unique within the document.

Note: The field ID isn't the question text the recipient sees - a field labeled "What is your name?" might have a field ID of var1. Always confirm it in the settings panel.

  • For dropdowns, use the option label exactly as it appears on the form.

  • For date fields, check the field's configured date format in the template.

  • For checkboxes, use boolean values: true or false.

Variable name

Find it in either place:

  • Template editor → Variables panel, or

  • Form builder → open the form question linked to the variable. The linked variable name appears in the top-left corner of that question's box.

Use the name exactly as shown - this is what goes in variables.

Learn more about pre-filling information in a form.

pasted_image_0__34_.png

Pre-fill values using a direct link

Pre-fill recipient data, metadata, variables, and fields - without embedding your form - by adding the data as a URL parameter.

Example

Say your template has one role (Client) and four fields: cust_text (text), check (checkbox), date_field (date), drop_down (dropdown). Here's the data as JSON:

{
  "recipients": {
    "Client": {
      "Email": "jane.doe@example.com",
      "FirstName": "Jane",
      "LastName": "Doe"
    }
  },
  "fields": {
    "cust_text": "Hello World",
    "check": true,
    "date_field": "2026-07-01",
    "drop_down": "Option 3"
  }
}

Each top-level key (recipients, fields) becomes its own URL-encoded query parameter:

https://form.pandadoc.com/form/YOUR_FORM_ID?recipients=%7B%22Client%22%3A%7B%22Email%22%3A%22jane.doe%40example.com%22%2C%22FirstName%22%3A%22Jane%22%2C%22LastName%22%3A%22Doe%22%7D%7D&fields=%7B%22cust_text%22%3A%22Hello%20World%22%2C%22check%22%3Atrue%2C%22date_field%22%3A%222026-07-01%22%2C%22drop_down%22%3A%22Option%203%22%7D

Open that link, and the recipient lands on the form with their name and email already filled in, and all four fields pre-populated.

Learn more about pre-filling values using a direct link.

How to capture events from your form

Capturing events from your form gives you more control over how your embedded form behaves.

pasted_image_0__36_.png

You can subscribe to the following types of events:

  • Loaded: Fires when the form loads and asks the recipient for contact details (name and email address).

  • Started: Fires when a recipient enters contact details for recipients and selects Review document.

  • Completed: Fires when a recipient fills out the assigned fields and completes the document by selecting Finish. Use this event to redirect a recipient to a specific page once the document is signed.

  • Exception: Fires when an error occurs while a recipient is attempting to complete a document.

  • Redirect requested: Fires when a recipient needs to be redirected to the URL provided in the event payload.

Common mistakes

  1. Using the visible label instead of the field ID. Confirm the ID in the field's settings panel in the template editor.

  2. Putting a predefined role variable (like Client.FirstName) under variables. Those fill through recipients - variables is only for custom document variables not tied to a form field.

  3. Forgetting to URL-encode the JSON when building a direct link. An un-encoded {, ", or space breaks the URL.

  4. Passing checkbox values as strings. Use the boolean true/false, not "true"/"false".

  5. Mismatching the date format. If the value doesn't match the template's date field configuration, the field won't populate.

Learn more about events.

Did this answer your question?