Automatically create a new page in a Notion database every time a form is submitted — handy for turning form entries into a task list, CRM, or content queue you already manage in Notion. Requires Contactum Pro with the Notion module enabled.
Requirements #
- Contactum Pro, with the Notion module active (Contactum → Modules)
- A Notion workspace with a target database
- A Notion internal integration secret, shared with that database
1. Create a Notion Integration #
- Go to notion.so/my-integrations and create a new internal integration. Copy the generated secret.
- Open the target database in Notion, and share it with your new integration (via the database’s Connections/share menu) so it’s allowed to create pages there.
- Copy the database’s ID — the 32-character string in its URL, right after the workspace name and before any
?v=parameter.
2. Connect Notion in Contactum #
- Go to Contactum → Settings → Integrations → Notion.
- Paste in your Notion Internal Integration Secret and Notion Database ID.
- Click Save Settings.
Contactum verifies both values with a live call to Notion before saving. On success you’ll see “Your Notion connection has been verified and saved” and the status badge turns green.
To disconnect, click Disconnect Notion — this clears the stored secret and database ID, and stops all page creation until reconnected.
3. Enable Notion on a Specific Form #
- Open the form in the builder.
- Go to Form Settings → Integrations.
- Toggle Notion on, then click Configure.
4. Configure Field Mapping #
Every Notion database has exactly one Title property (whatever it’s actually named) — Contactum finds it automatically, so you only need to map its value:
| Field | Required | Description |
|---|---|---|
| Title Value | Yes | A smart tag for Notion’s title property, e.g. {field:your_field_name} |
| Email Property Name + Email Value | No | Type the exact, case-sensitive name of an Email-type property in your database, and a smart tag for its value. Leave the property name blank to skip |
| Phone Property Name + Phone Value | No | Same pattern, for a Phone-type property |
| Message Property Name + Message Value | No | Same pattern, for any text-type property |
Property names must match your Notion database exactly, including capitalization — there’s no dropdown pulling your database’s real property names, so double-check spelling directly against Notion.
Supported Notion property types: title, rich text, email, phone, URL, number, checkbox, select, and date. Any other property type (multi-select, relations, people, files, status, formulas, etc.) can’t currently be written to from Contactum — a property of an unsupported type is simply skipped.
5. How It Works #
When a visitor submits the form:
- Contactum checks the form has Notion enabled and the global connection is configured.
- Contactum fetches your database’s current property list from Notion, so it knows the real type of each property you named.
- Title Value is resolved and set on the database’s title property, whichever property that is.
- For each optional pair (Email/Phone/Message), Contactum only includes it if the property name you typed exists in the live database and its mapped value resolves to something non-empty. The value is then formatted to match that property’s actual type in Notion.
- A new page is created in the database with the resolved properties.
If nothing resolves at all (for example, the Title Value smart tag is empty and no optional field matches), no page is created and nothing is logged — there’s no error shown for a fully empty submission attempt. A failed request otherwise does not block the form submission and is recorded in Contactum’s API Log — though be aware the log currently records the page-creation attempt as a success once it’s sent, even in the rare case the request itself fails on Notion’s side, so treat “Success” in the log as “sent,” not as airtight proof the page exists.
Troubleshooting #
Pages aren’t appearing in Notion #
- Confirm the form has Notion toggled on and was saved, and that Title Value resolves to something non-empty on submission.
- Reconfirm each Property Name you typed matches the real property name in your Notion database exactly, including case.
- Confirm the target database is still shared with your integration in Notion — removing the connection there will silently break new page creation.
- Check the API Log (Contactum → Tools → API Log, if available) for anything unusual, keeping in mind logged “Success” doesn’t fully guarantee the page was created (see note above).
A property I mapped isn’t showing up on the new page #
- Confirm that property’s type in Notion is one of the supported types listed above. Unsupported types (multi-select, relation, files, people, status, formula, etc.) are silently skipped.
“Your Notion connection could not be verified” #
- Reconfirm the integration secret and Database ID, and that the database is shared with your integration in Notion.
Notes #
- Requires Contactum Pro with the Notion module active — not available in the free plugin.
- Auth method: Notion internal integration secret (API token) — not OAuth.
- API version: Notion API version
2022-06-28. - Credentials storage: stored in
wp_optionsunder the keynotion. - A failed submission never blocks the form — the visitor’s experience is unaffected by a Notion outage or misconfiguration.