Skip to content

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.


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

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

will:

  1. Open the Create Form whose screen name slugifies to submit-service-request
  2. Prefill Request summary with Sample, Impact with Major, and Priority with High

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


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

Section titled “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


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=Sample).
  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.
Form field Field type URL parameter Example in link
Request summary Text name name=Sample
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

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

Section titled “Step 3 — Copy the form link from Behaviour”

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):

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

Fill in values:

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

Step 4 — Publish and test in the live app

Section titled “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 → Sample
  • Impact → Major
  • Priority → High
  • Other fields stay empty (or use their static defaults) because they were not in the URL

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

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)

If slug matching is ambiguous or you prefer IDs:

https://your-app.notionapps.com/?form=64f1a2b3c4d5e6f7a8b9c0d1&name=Sample&impact=Major

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

https://your-app.notionapps.com/?form=submit-service-request&name=Sample

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:
https://your-app.notionapps.com/submit-service-request?name=HVAC%20inspection&impact=Major
  1. Publish.
  2. Send the link. Recipients land on the Add form with those fields filled; they complete the rest and submit.

  • Fields use From URL parameter with clear param names
  • Optional static fallbacks set where useful
  • Disable Changes set only when the value must stay locked
  • Create Form screen name is unique (or you use ?form=)
  • App is Published after mapping
  • Tested on desktop and mobile published shells
  • Invalid select/toggle/number values fall back safely (spot-check once)

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 Prefill is Create Form only Use Create Form. To filter a list from ?store=, see Filter lists with groups and dynamic values

  • 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 screenshot: Create Form builder

Annotated builder screenshot: Logic / fields

Annotated builder screenshot: Behaviour

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

URL Prefill mapping (field Behaviour / field inspector)

Section titled “URL Prefill mapping (field Behaviour / field inspector)”

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.

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.

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.

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.