For the complete documentation index, see llms.txt. This page is also available as Markdown.

Prefill Create Forms from a URL

Share a link that opens an Add New Item form and fills selected fields automatically — no custom JavaScript.

This guide walks through builder configuration with screenshots from a real Create Form (Submit Service Request), then shows how to share and test the published link.

Scope (current release) Works on Create Form screens only (not Update Form). Supported field types: Text, Long text, Number, Toggle, Single-select (Dropdown), Date, Multi-select (including People), and Relation (Page Selector).


What you get

After you map fields to URL parameter names and publish, a link like this:

https://your-app.notionapps.com/submit-service-request?name=Alvin&impact=Major&priority=High

will:

  1. Open the Create Form whose screen name slugifies to submit-service-request

  2. Prefill Request summary with Alvin, Impact with Major, and Priority with High

Users can still edit any unlocked field after the form loads.


Before you start

You need:

  • A Create Form (Add Item) screen in the builder

  • At least one supported field on that form (text, long text, number, toggle, single-select, date, multi-select/people, or relation)

  • Permission to Publish the app so end users see the mapping


Step 1 — Open the Create Form in the builder

  1. Open your application in the NotionApps builder.

  2. Select the Create Form screen you want to share (for example, Submit Service Request).

  3. Confirm the right panel shows Form (Add Item) / Create Form behaviour settings.

Create Form open in the builder with mobile preview
Create Form overview — fields listed in Logic and Behaviour

Step 2 — Map a field to a URL parameter

For each field you want to fill from the link:

  1. In the Logic list (right panel), select the field (or click it in the preview).

  2. Turn Default Value On.

  3. Set Default value source to From URL parameter.

  4. Enter the URL parameter name (for example, name for ?name=Alvin).

  5. Optionally leave a Static value as a fallback when that query param is missing.

  6. Optionally turn on Disable Changes if the prefilled value should be locked.

Example mappings for this form

Form field
Field type
URL parameter
Example in link

Request summary

Text

name

name=Alvin

Impact

Dropdown

impact

impact=Major

Priority

Dropdown

priority

priority=High

Select the field in the preview or Logic list:

Select Request summary (or the matching Logic row) to edit defaults

Map additional dropdown fields the same way:

Map Impact to a URL parameter such as impact
Map Priority to a URL parameter such as priority

How values are interpreted

Field type
Accepted query values
If the value is invalid

Text / Long text

Any string

Used as-is

Number

A finite number (for example 42, 3.5)

Field keeps static fallback or stays blank

Toggle

true / 1 / yes / on (and false equivalents) — case-insensitive

Field keeps static fallback or stays blank

Single-select

Option label (case-insensitive), or option index

Field keeps static fallback or stays blank

Date

YYYY-MM-DD, or ISO / YYYY-MM-DDTHH:mm (time used when the field shows time)

Field keeps static fallback or stays blank

Multi-select / People

Comma-separated option labels or values (emails for People)

Unmatched tokens skipped

Relation (Page Selector)

Comma-separated related record ids

Invalid ids skipped

Priority If the URL contains the mapped parameter → that value wins on first load. If the parameter is omitted → static default (if any) is used. After load, user edits are not overwritten.


With the Create Form screen selected (not a single field):

  1. Scroll the right panel to the Behaviour section.

  2. Click Copy form link.

  3. Paste the link somewhere temporary (notes, browser address bar).

The copied link uses your published app origin, the screen-name slug, and empty placeholders for every mapped parameter — ready for you to fill in.

Copy form link button on Create Form Behaviour settings

Example shape after copying (parameters empty until you fill them):

Fill in values:


Step 4 — Publish and test in the live app

  1. Click Publish in the builder top bar.

  2. Open the filled link in a private/incognito window (or a different browser).

  3. Sign in if the app is private.

  4. Confirm the Create Form opens with the expected fields filled.

Published app: Create Form opened from the URL with fields prefilled

In this example:

  • Request summary → Alvin

  • Impact → Major

  • Priority → High

  • Other fields stay empty (or use their static defaults) because they were not in the URL


URL reference

Path (open the form)

Style
Example
When to use

Screen-name slug

/submit-service-request?...

Default; friendly shareable links

Explicit form id

/?form=<screenId>&... or /anything?form=<screenId>&...

Two Create Forms would collide on the same slug

Query parameters (prefill)

Only parameters you mapped in the builder are applied. These reserved keys are never used as field values:

  • form

  • screenId

  • recordId

  • title, showTitle, selectionMode

  • Live-demo auth keys (live_demo_email, live_demo_code)

  • Other navigation keys (primary, referenceAutoLinkInfo)

Disambiguate with form=

If slug matching is ambiguous or you prefer IDs:

You can also pass the slug in form when it uniquely matches:


End-to-end example (makers)

Goal: Email a vendor a link that opens “Submit Service Request” with summary and impact already set.

  1. Open the Submit Service Request Create Form.

  2. Map Request summary → URL parameter name.

  3. Map Impact → URL parameter impact.

  4. Click Copy form link, then fill values:

  1. Publish.

  2. Send the link. Recipients land on the Add form with those fields filled; they complete the rest and submit.


Checklist


Troubleshooting

Symptom
Likely cause
What to do

Link opens the app but not the form

Slug does not match any Create Form, or collision

Check screen name slug; use ?form=<screenId>

Form opens but fields are empty

Mapping not published, wrong param names, or reserved key used

Re-check param names; publish again; avoid reserved keys

Select stays blank

Label in URL does not match an option

Use the exact option label (case-insensitive) or a valid index

Private app shows login first

Expected

User signs in, then the same URL should open and prefill

Update Form / list not affected

Out of scope for this release

Use Create Form only


  • Prefill counts like a normal user input for visibility / personalization rules that depend on user input.

  • Works on desktop and mobile published apps.

  • No custom code is required; do not paste query parsing into Custom JavaScript for this use case.


Annotated builder screenshots

Annotated builder screenshot: Create Form builder
Annotated builder screenshot: Logic / fields
Annotated builder screenshot: Behaviour

Complete Builder Options Reference

These options live on Form (Add Item). Full screen inventory: Form (Add Item).

URL Prefill mapping (field Behaviour / field inspector)

Prefill from URL / Parameter name

What it does: Maps a query parameter to this field when the Create Form opens via link. How to use it: Open the field → set a short parameter name (for example priority). Publish, then share ?priority=High. Why / recommended default: Use stable lowercase names. Prefer ?form=<screenId> when two forms share a slug.

Supported field types

What it does: Limits which fields accept URL values (text, long text, number, toggle, single-select, date, multi-select/people, relation). How to use it: Only map supported types; unsupported fields ignore the param. Why / recommended default: Keep mappings to fields users are allowed to edit.

Public access

What it does: Lets guests open the form without signing in. How to use it: Enable when the prefilled link is for public intake. Why / recommended default: Off unless guests must submit.

Success Message / Actions

What it does: Controls post-submit UX. How to use it: Keep success copy short; add redirect Actions only when the next screen is intentional. Why / recommended default: Simple success message; avoid surprising redirects on public forms.

Last updated