WS Form Notion - WordPress Plugin
WS Form Notion is a plugin for WordPress that seamlessly integrates WS Form with Notions sophisticated database capabilities. With this plugin, website owners can effortlessly transfer data from WS Form to their Notion database. This innovative integration streamlines data management and enhances collaboration, making it perfect for businesses, organizations, and individuals who rely on both WS Form and Notion for their workflow.

Plugin Features
This plugin enables users to connect their WS Form submissions directly to their Notion workspace, eliminating the need for manual data entry. By automating the transfer process, WS Form Notion saves users time and minimizes the risk of human error. Whether its capturing customer information, managing leads, or collecting survey responses, this plugin ensures that all data is seamlessly synchronized between WS Form and Notion.
The integration between WS Form and Notion extends beyond simple data transfer. With this plugin, users can also customize the mapping of form fields to Notion properties, allowing for a tailored and precise arrangement of data within their Notion database. Additionally, this plugin provides users with the flexibility to include conditional logic, validation rules, and dynamic content in their forms, ensuring that data is accurately captured and organized according to their desired structure.
WS Form Notion offers a user-friendly interface that simplifies the setup process. With just a few clicks, users can effortlessly establish a connection between their WS Form and Notion accounts, and configure the desired settings for data transfer and mapping. The plugin also includes comprehensive documentation and support, providing users with the resources they need to successfully integrate WS Form with Notion.
This plugin is an invaluable asset for businesses and individuals who rely on the seamless flow of data between WS Form and Notion. By eliminating manual data entry and automating the transfer process, WS Form Notion enhances productivity, efficiency, and accuracy. Whether youre collecting customer information, managing surveys, or tracking leads, this plugin ensures that your data is seamlessly synchronized and organized within Notions powerful database capabilities. Take advantage of the integration between WS Form and Notion today and streamline your data management workflow like never before.
How to Set Up WS Form Notion to Send WordPress Form Submissions to Notion
WS Form Notion is useful when a form on your WordPress site needs to do more than send an email to the administrator and instead turn every submission into a clear, structured record inside a Notion database. This guide does not repeat the plugin's product-page summary. Instead, it walks through the practical setup: what to prepare in WS Form PRO and Notion, how to connect the database, when to choose automatic vs. manual form creation, how to configure mapping, and how to verify that the data actually reached the right place.
This article is intended for site owners, WordPress administrators, and specialists who already know why their team uses Notion but want to eliminate manual copying of submissions. We will not cover purchasing, license workarounds, or connection secrets. What matters more is this: the form, the Notion database, and the WS Form action must match in terms of data structure. Otherwise, the integration may look connected while the actual output is incomplete or never appears in the database.
You will find dedicated sections on preparing the Notion database, connecting the add-on, the two ways to create a form, configuring Add to Notion, using variables for custom values, checking the final output, common issues, and similar solutions. Where an exact detail depends on the Notion interface or the product version, the wording stays cautious. It is better to describe a verifiable action than to promise behavior that may change after an update.
What Problem a WordPress-to-Notion Form Integration Solves
A standard contact form usually ends with an email in someone's inbox. For a small site, that may be enough, but teams quickly run into disorder: one email gets lost, another lands in spam, a third is forwarded to a manager without attachments, and a fourth never gets moved into the team's working board. WS Form Notion changes where the data goes. Instead of staying in email, each submission becomes a record in a Notion database, where it can be filtered, assigned to an owner, grouped by status, and linked to projects.
This setup is especially useful for submissions that need follow-up after they are sent: a service brief, a support request, a lead from a landing page, an event registration, a partnership inquiry, an internal staff request, or product feedback collection. In each case, the beauty of the form matters less than whether the form structure matches the database structure. The Email field should go into an email property, the inquiry topic into a title or text property, the selected category into a select or multi-select property, and the technical submission identifier into a separate internal field.
The main difference from a generic webhook approach is that the administrator works inside the familiar WS Form builder. The official documentation describes two modes: you can create a form from a Notion database in one click, or add an Add to Notion action to an existing form. The first path is convenient when the database has already been designed and the form is being built around it. The second is the right choice when the form is already live on the site, complete with styling, fields, conditions, and notifications, and now needs to send data to Notion.
It is also important to understand the boundary of responsibility. WS Form Notion sends a submission to Notion, but it does not turn Notion into a full CRM, guarantee a submission-processing workflow, or fix a poorly structured database. If your Notion setup does not include clear statuses, an owner, a processing date, and a lead source, the integration will simply move that disorder from the form into a table in a cleaner way. That is why the setup should begin not with the Connect button, but with the data model.
Who WS Form Notion Is For and When Another Approach Makes More Sense
This plugin is a good fit for sites where WS Form is already the main form tool. If the team uses WS Form PRO for complex submissions, conditional logic, multi-step forms, repeatable sections, or integrations, the dedicated Notion add-on keeps everything in one place. The administrator does not have to stitch together a chain of services and can manage the data transfer directly from the sidebar actions of a specific form.
WS Form Notion works well for agencies and product teams that use Notion as a working board, lead database, or internal request log. For example, a landing-page inquiry can go straight into a "Leads" database, a support form into a "Tickets" database, and a website brief into a "Projects intake" database. The key point is that the Notion database remains a practical team workspace rather than just a storage area for raw emails.
The plugin may be unnecessary if the site does not use WS Form PRO or if the team has already built automation through Make, Zapier, n8n, a Webhook action, or another form builder with a native Notion integration. It is also not the best choice for use cases that require advanced two-way sync, updating existing records by key, large-scale data enrichment, or complex routing across several systems. The official product page describes pushing submissions to Notion databases. If you need two-way behavior, that should be designed separately rather than attributed to features the add-on does not document.
Practical rule of thumb: choose WS Form Notion if your main goal is to reliably create a new Notion record from a WS Form submission. If you need a chain like "form -> validation -> multiple services -> CRM update -> Slack -> Notion," it makes more sense to compare the add-on with Make, Zapier, or a webhook-based architecture.
There is also an organizational consideration. Notion is comfortable for people, but its database properties require discipline. If every manager starts adding new select options directly in Notion without coordinating with the form, the mapping will need regular maintenance. If the database contains many calculated, relation, or rollup fields, not all of them should be filled by the form. Some properties are better left for internal processing after the record is created.
What to Check Before Installation and Connection
Before installing WS Form Notion, it is worth going through a short but meaningful preparation step. Most problems with integrations like this do not come from the installation button itself, but from mismatched permissions, licensing, database structure, and field types. This stage is easy to skip because the official setup looks simple, but it is exactly what saves time later during troubleshooting.
WS Form Edition and the Role of the Add-On
The official documentation states that add-ons require WS Form PRO and are not compatible with WS Form LITE. That means having the free WS Form LITE plugin from the WordPress directory does not make the Notion action available on its own. The site must have WS Form PRO installed and active, and the Notion add-on must be activated separately. According to the official product pages, Notion is included in the Agency edition and may be purchased separately for other PRO editions. This article does not list pricing, since it may change.
Check that the administrator has access to WS Form in the WordPress menu, the plugin settings, and plugin management. If the site is maintained by an agency, clarify in advance who stores the license key, who has access to the WS Form account, and who can update the add-on. This is not just a convenience issue. If the wrong key is used, the official documentation explicitly warns not to confuse the Notion add-on key with the WS Form PRO key.
Permissions in Notion and the Selected Database
Notion works through a connection that the user grants access to selected pages and databases. WS Form will not see a database unless it has been shared with the WS Form integration. In the Notion interface, this is handled through the connection/access selected pages area. It is not enough to simply connect a Notion account. You must grant access specifically to the databases where the form should send data.
Before you begin, create or clean up the Notion database. A minimal setup for submissions usually includes a title or name field, email, message, source, status, created date, or another internal field. If submissions should flow into a task board, prepare the status/select options in advance. If you need to assign a person, keep in mind the limitation documented for WS Form Notion: people values must be sent as a user ID, including dashes. On a regular website, that is not always practical, so the "Owner" field is often better filled in within Notion after the submission arrives.
Form Data, Privacy, and Anti-Spam
Check what data the form collects and whether users are given clear consent for sending that data into the team's working system. WS Form Notion includes an Opt-In Field setting, and the documentation recommends an unchecked single checkbox. This does not replace your legal policy, but it does provide a technical way to tie sending data to Notion to explicit user consent.
If the form is public, enable basic protection against junk submissions before connecting it to Notion. Otherwise, the Notion database will quickly fill with spam and managers will stop trusting it. WS Form form settings include sections related to spam, limits, and tracking. Use only the ones the project genuinely needs, and separately inform visitors if you enable tracking data.
How to Design a Notion Database So the Mapping Stays Stable
A Notion database for submissions should be designed as a working log rather than a one-to-one copy of the form. The form collects incoming data from visitors, while the database helps the team process that data. In practice, that usually means two groups of properties in Notion: the ones filled by WS Form and the ones completed by the team after the record is created.
The first group includes fields that come from the website: name, email, phone, inquiry topic, message, selected service, consent, and an internal source field. The second group covers internal workflow: status, owner, priority, next action, due date, project link, and manager comments. If you mix these two groups together, the form administrator will start trying to fill everything from WordPress, including fields that should be assigned by a person or by a Notion view or automation.
A Minimal Working Schema for a Submission Database
For the first setup, do not overcomplicate the database. A schema like "Name, Email, Message, Source, Submission ID, Status" covers most testing needs. Name helps Notion create a readable record. Email is needed for follow-up. Message stores the substance of the inquiry. Source shows which form or page created the record. Submission ID links Notion to WS Form Submissions. Status lets the team see that the inquiry is new and needs attention.
It is best to add Submission ID from the start, even if the team does not currently plan to return to WordPress. It is a cross-system identifier that lets you connect a Notion row to the original submission, action logs, and the full form data. When a questionable record appears in Notion, the manager is not looking at an abstract line item but at a specific ID the site administrator can use to trace the source.
If the database is used for support requests, add fields like Category, Severity, Status, and Responsible. But do not rush to send Responsible from the form into a Notion people property. WS Form Notion documentation warns that the people value must use the person's ID with dashes. For most public forms, it is easier to send category or severity and assign the responsible person inside Notion after the submission arrives.
How to Choose Property Types
The property type in Notion should match the nature of the data. Store email in an email property, not plain text. Use phone number for phone only if the team actually calls from Notion. Use select for Category if the submission belongs to one category. Use multi-select for tags or interests if the user can choose several values. Store long messages in rich text, but without HTML. Store consent in a checkbox or in a separate text note if the exact consent wording matters in addition to the yes/no state.
Do not try to use formula, relation, or rollup properties as direct mapping targets unless there is a clear reason. Those properties are usually intended to calculate or connect data inside Notion. The form should fill the core input values, and Notion can then display related views, relations, and rollups inside the workspace. That keeps the database manageable and prevents it from breaking after a small form change.
Property Names and Change Resilience
Name your properties so that they make sense not only to a developer. "Lead Source" is clearer than "src." "Submission ID" is clearer than "sid." "Website Message" may be more useful than just "Message" if the same database also contains internal manager notes. The clearer the property name, the lower the chance that another team member will delete or rename it as something "unnecessary."
Before connecting a live form, agree on which properties are considered system fields. They should not be deleted, renamed, or have their type changed without checking the WS Form action. If the Notion database is actively evolving, add a short internal note directly in the database: which fields come from WordPress, which form fills them, where to find the mapping, and who is responsible for changes. That is not bureaucracy. It is how you avoid breaking the integration a month after launch.
Rule for stable mapping: first change the database in a test copy, then update the action in WS Form, then send a test submission, and only after that repeat the same change in the live database.
When One Database Is Not Enough
Sometimes it is tempting to send every form on the site into one large Notion database. That works well for a single queue, but it becomes awkward when the forms collect very different data. A consultation request, a support ticket, a partnership application, and an internal employee request each have different fields, statuses, and owners. If all of them land in one table, half the columns will stay empty and the views will become difficult to manage.
Use one database if the processing workflow is the same: all records move through "New, In progress, Done," have one queue owner, and use similar fields. Use separate databases if the submissions follow different workflows. In WS Form Notion, that is perfectly normal: each form can have its own action and its own Notion Database. If you still need a unified database, make Source a required custom mapping value and set up views by source in advance.
Installing the Add-On and Connecting to Notion for the First Time
Technically, installing the Notion add-on follows the same pattern as installing other WS Form PRO add-ons. In WordPress Admin, you typically upload the ZIP file through Plugins -> Add New -> Upload Plugin -> select the archive -> Install Now -> Activate. If the project uses manual installation, the extracted folder can be uploaded to /wp-content/plugins/, but that should be done only by someone responsible for site files who understands the update process.
After activation, go to WS Form -> Settings and open the Notion tab. At this stage, do not paste a random key or reuse the WS Form PRO key. The add-on requires its own license key if it was purchased separately. After entering the key, click Activate. If activation fails, first check whether you are using the correct key, whether there are extra spaces from copying, and whether the main WS Form PRO plugin is active.
Connecting to Notion starts in the same Notion tab: click Connect and complete the standard authorization flow. Notion should show a permissions request and let the user choose which pages or databases to make available. If the user does not have full access to the required database, it may not appear in the page picker. This behavior is consistent with the Notion authorization documentation: the connection only receives the pages or databases the user can select and explicitly allow.
After connecting, go back to Notion and verify the connection's access. The official WS Form instructions describe the path through Settings & members -> My connections, then the three-dot menu on the WS Form connection, then Access selected pages, followed by choosing the required databases. After clicking Update access, the database should become available to WS Form. If you add a new database later, the WS Form Notion interface uses a refresh icon to update the list.
At this stage, it is useful to create a small test database in Notion instead of immediately connecting your production leads table. Create 4-5 simple properties: Name, Email, Message, Source, Status. That lets you test authorization and mapping separately without risking the structure of the real workspace. Once the test works, you can repeat the setup on the production database or reuse the schema.
Two Ways to Create the Form: Automatically from the Database or Manually with an Action
WS Form Notion offers two fundamentally different approaches. The automatic path builds a form from a Notion database. The manual path adds a Notion action to a form that already exists. Both approaches are officially supported, but they solve different problems. A common beginner mistake is choosing the automatic path only because it is faster, even though the site already has a finished form with styles, conditions, and notifications.
Automatically Creating a Form from a Notion Database
The automatic approach starts in WS Form -> Add New, where you select the Notion tab and click the database you want. WS Form creates the form and configures it to work with that database. This path is convenient when the Notion database defines the structure: the team decides what data is needed first, and the form then mirrors those fields.
The main advantage of the automatic approach is that it reduces manual mapping at the beginning. It works especially well for simple contact or intake forms when the property names in Notion are already clear and do not need complex logic. Still, once the form is created, you should review it: field labels for visitors, field order, required states, help text, validation, consent checkbox, confirmation message, and the visual appearance on the page.
If the database does not appear in the Notion tab, do not create the form from some other similar database "for now." First refresh the list using the refresh icon, then check the connection access in Notion. Swapping in the wrong database leads to poor mapping and unnecessary troubleshooting: the form may work, but the data will go to the wrong place.
Manually Adding an Action to an Existing Form
The manual approach is for cases where the form already exists in WS Form. Open the layout editor, click the Actions icon, add a new action with the Add icon, and choose Add to Notion from the action pulldown. You will then see the action settings: when it should run, which Notion database to send data to, which opt-in field to use, and how to map form fields to database properties.
This is where you should not rush to click Save. Give the action a name that will still make sense a month later. For example, "Send lead to Notion" or "Add support ticket to Notion." If the form already has actions like Save Submission, Send Email, and Show Message, a clear action name will make log reviews in Submissions much easier.
The manual path gives you more control. You can keep the administrator email, the user-facing message, and the internal submission save inside WS Form, while using Notion as the team's working log. At the same time, the order and conditions for running actions still need testing. The Notion add-on readme notes the change "Allow multiple actions to run," but that does not remove the need to test the specific form: which actions are enabled, which are disabled, which depend on conditional logic, and what happens if the submission fails.
Mapping Form Fields to Notion Properties: Where Mistakes Happen Most Often
Mapping is the central setup step. It determines which part of the submission ends up in which Notion property. If the database is well designed, mapping looks like a calm, obvious table of matches. If the database grew chaotically, it may contain extra properties, unclear select options, similarly named fields, and relation or rollup fields that the form should never try to populate directly.
The Minimum Required Mapping
The WS Form Notion documentation states that at minimum you need to map a Name field. In Notion, that aligns with the primary title-like behavior of a database record: the page inside the database needs a title. If the name or subject of the inquiry is missing, the record may fail to be created or may be difficult to read. For that reason, the title is best mapped from a field that is always filled in: a name, company + topic, or a short inquiry subject.
For a contact form, a basic mapping usually looks like this:
| WS Form Field | Notion Property | Practical Check |
|---|---|---|
| Name | Title or Name | The Notion record has a clear, readable title. |
| The address is clickable and did not end up in plain text. | ||
| Message | Rich text | The text is readable without HTML markup or truncation. |
| Service or Topic | Select | The database uses an existing option name. |
| Consent checkbox | Checkbox or internal marker | The consent state is visible in Notion if the team needs it. |
Field Considerations and Their Limitations
The official Notion add-on page separately lists field considerations. They are worth turning into a working checklist because they explain most of the "strange" errors administrators run into. Select and Multi-Select must send option names, not option IDs. Checkbox fields must contain only one checkbox. People fields require a person's ID, including dashes. HTML is not supported for Notion Rich text fields.
The last point matters especially for forms where the message comes from an HTML field, formatted text, or rich content. Notion rich text through the API has its own structure and limits, and WS Form Notion explicitly says that HTML is not supported for text or rich text. That means you should not try to send nicely formatted HTML email content into Notion. For a submission-processing database, it is better to send plain text, a link to the submission in WordPress, or an internal identifier.
Custom Mapping and Variables
Custom Mapping lets you populate a Notion property not only from a form field value but from any value, including WS Form variables. The official example is a lead source or submission ID using #submit_id. The variables reference confirms useful values such as #submit_id, #submit_status, #submit_admin_url, #request_url, #form_label, #field(field_id), and others. Use them carefully: an internal value should help the team process the submission, not clutter the database with technical noise.
Good custom mapping options for Notion include:
- Lead source: a text value such as
Website contact formor a variable tied to the current page. - Submission ID:
#submit_id, so the record can be found quickly in WS Form Submissions. - Admin URL:
#submit_admin_url, if the WordPress team may need to open the original submission from Notion. - Form label:
#form_label, if several forms send data to one database. - Request URL:
#request_url, if it matters which page the submission came from.
Do not send everything into Notion just because you can. Tracking data may be useful for analytics, but it is sensitive from a privacy perspective. If you are not actually using that data in your workflow, leave it out of the mapping. The cleaner the database, the faster the team will start working with it effectively.
Configuring the Action After Installation: Event, Database, Opt-In, and Save
After choosing the Notion database and setting the mapping, a few settings remain that determine how the action behaves. It is easy to click through them mechanically, but this is where important decisions are hiding: when to send the record, under what user consent, how to avoid creating junk rows, and how to preserve a clean troubleshooting path.
When Should This Action Run
In the When Should This Action Run? setting, you can choose whether the action runs on save, submit, or both events. For a standard inquiry, submit is almost always the right choice: the record appears in Notion only after the form is fully submitted. Save is useful for workflows involving drafts, long briefs, or abandoned submissions, but then the Notion database needs to support draft/in progress statuses. Otherwise, managers will see incomplete entries as if they were real submissions.
If the form includes Save & Continue, partial saving, or conditional save behavior, plan a separate Status field in Notion. For example, submitted records can get the status "New" while saved drafts get "Draft." The WS Form Submissions documentation shows that WS Form distinguishes statuses such as submitted, draft, and trashed, and variables can expose the submission status. But the exact status scheme has to be configured in your own database and tested with real sample submissions.
Notion Database and Refreshing the List
The Notion Database field selects the target database. If you created a new database after opening the action screen, use the refresh icon. If the database still does not appear, the cause is almost always the connection access, not the form itself. Go back to Notion, open the connection settings, and add the required database through selected pages.
Do not choose a similar-looking database just because it appears in the list. For example, "Leads Archive" instead of "Leads Intake" may accept the record, but the team will look for it in the wrong place. On a live site, that looks like "the integration is not working," even though it is technically working in the wrong way.
Opt-In Field
Opt-In Field selects the checkbox that controls whether data is sent to Notion. The documentation recommends a single checkbox, unchecked by default, to preserve a proper consent flow. In the form interface, the label should be clear to a person: not just "GDPR," but a concrete explanation that the form data will be sent to the team for processing the request. The legal wording depends on the project, but the technical meaning is simple: if the checkbox is not selected, the action should not send a record to Notion.
For internal forms, opt-in may not be necessary if staff are already working inside a corporate system. But for public forms, it is better not to skip consent and transparency around data handling. If you are unsure, start by configuring opt-in and testing both cases: with the checkbox unchecked and with it checked. In the first case, no record should appear in Notion. In the second, it should.
Saving and Publishing the Form
After setting the mapping and action options, click Save in the sidebar. Then check that the form itself is published and placed on the correct page. If you edited the form but did not save the action, the public site will still use the old configuration. If the form is embedded through a page builder, the block editor, or a shortcode, open the page as a regular visitor and run a real test rather than relying only on the admin preview.
Quick post-setup check: send one test submission with a clearly recognizable message such as "Integration test," then open the Notion database and WS Form Submissions and review the action logs/errors. That way you verify not just the presence of a row, but the full processing path.
Practical Example: A Consultation Request Lands in a Notion Database
Let us look at a common example from service websites. The goal is to collect a consultation request through WordPress, save it in WS Form Submissions, send an email to the administrator, and create a record in a Notion database called "Consultation Requests." The team then processes those records in Notion: assigns an owner, updates the status, adds comments, and links the request to a project.
Goal and Preparation
In Notion, create a database with these properties: Name, Email, Phone, Service, Message, Source, Submission ID, Status. In WS Form, create a form called "Consultation request" with fields for Name, Email, Phone, a Service select field, a Message textarea, and a consent checkbox. For Service, use option names that match the select options in Notion, such as Audit, Development, and Support. Do not use internal option IDs for Notion mapping, because the WS Form Notion documentation requires sending option names for select and multi-select fields.
Keep the Save Submission action in the form, add Send Email if an administrator email is needed, and add Add to Notion. The order of actions may depend on the specific form, but from a troubleshooting standpoint it is useful to keep the submission stored in WS Form. That way, if Notion fails, you do not lose the original request and can open the details, action logs, and errors.
Configuring the Notion Action
- Open the form in the layout editor and click the Actions icon.
- Add the
Add to Notionaction and name it "Create consultation request in Notion". - In
When Should This Action Run?, choose submit if you do not plan to send drafts. - In
Notion Database, choose "Consultation Requests". If the database is not in the list, refresh the list and check the connection access in Notion. - In
Opt-In Field, choose the consent checkbox if sending to Notion should depend on consent. - In
Field Mapping, map Name -> Name, Email -> Email, Phone -> Phone, Service -> Service, Message -> Message. - In
Custom Mapping, add Source ->Website consultation form, Submission ID ->#submit_id, and Status ->Newif that property and option already exist in Notion. - Save the action and the form.
If Status in Notion is a select property, the value New should match an existing option or be supported by the behavior of Notion/API in your setup. To avoid ambiguity, create the required options in Notion ahead of time and test them with one sample submission. If Notion does not accept the value, start with text properties for Source and Submission ID, and assign the status inside Notion manually or through built-in Notion automations if the team uses them.
Checking the Output
Open the page with the form as a regular visitor. Fill in the fields with test data: name, email, phone, service, and message. Submit the form. Then check three places: the message shown on the site, the record in WS Form Submissions, and the new row in Notion. In Notion, verify that Name became the record title, the email landed in the email property, the service was selected as an option, and Source and Submission ID were filled with internal values.
If the record appears but one field is empty, do not immediately rework the whole integration. Open the mapping and check only that one relationship. Often the problem is local: the form field is not required, the wrong property type was selected, the select option has a different name, the checkbox contains multiple options, or rich text is trying to receive HTML. Fix one cause, save the action, submit a new test request, and compare the outcome.
A Detail That Matters When Multiple Forms Share One Database
If multiple forms send submissions into one Notion database, make sure to add a custom Source or Form label mapping. Otherwise, consultation requests, support requests, and partnership inquiries will be mixed together in the same database. WS Form variables let you send #form_label, and a static source value can be entered manually. For the Notion team, this is often more important than another visually nice column: source lets them filter submissions and build separate views.
Checking the Output and Reviewing Error Logs: Where to Find the Truth
Integration testing should always work both ways. Seeing a "Thank you" message on the site is not enough, because that message may come from a separate action even if the Notion action failed. Looking only at Notion is not enough either, because the record may be missing due to access, mapping, or a temporary API issue. A reliable test always follows the full chain: public form -> WS Form submission -> action logs/errors -> Notion database.
WS Form Submissions as the Control Point
In WS Form Submissions, you can see saved submissions, form field data, basic information, status, and the actions that fired on save or submit. The official documentation notes that actions include icons for configuration, information, errors, and sometimes re-run. That makes Submissions the primary place for troubleshooting. If the request exists in Submissions, the original data was not lost, and you can determine what happened during delivery.
For testing, open the latest submission, see which actions ran, and review any action errors. If the Notion action did not run, the cause may be the save/submit event, conditional logic, the opt-in field, or a disabled action. If the action did run but Notion rejected the data, look for a mapping issue, property type mismatch, connection access problem, or Notion API limit.
The Notion Database as the Business Outcome Check
In Notion, do not check only whether a row appeared. Check whether the row is usable for actual work. The title should be clear, the status should help the manager move forward, the email and phone should be stored in the correct property types, and the message should be readable without HTML. If records are being created but the team still copies data manually, the mapping is not useful enough yet.
Create a separate view for test submissions if you do not want to clutter the main board. For example, you can filter by Source = Website consultation form and Status = New. After testing, delete the records or mark them as Test. Do not use real personal data in tests. Fictional data and your own email are enough.
When to Retest
You should retest after changing the Notion database structure, adding new select options, modifying the consent checkbox, updating WS Form, updating the Notion add-on, changing anti-spam settings, installing a caching or optimization plugin, or moving the site. You do not need to send manual tests every day, but after any mapping change, one test submission is mandatory.
Useful Settings for Better Data Quality and Safer Maintenance
The Notion integration becomes much stronger when the data in the database is immediately usable. This does not require complex code. A few built-in WS Form capabilities and a carefully designed set of Notion properties are enough.
Conditional Action Execution
WS Form lets you control actions with conditional logic: run, do not run, or run immediately when a condition is met. For Notion, this is useful if not every submission should be sent to the same database. For example, a contact form may include an "Inquiry Type" field with values like Sales, Support, and Partnership. You can send only support tickets to Notion while routing sales leads to a CRM or a different integration.
A conditional logic approach requires clear troubleshooting. If a submission did not reach Notion, first check whether a "do not run" condition was triggered. The condition name should explain its purpose rather than being called something vague like "Condition 1." A month later, that name is what will help you distinguish a technical issue from expected form behavior.
Internal Fields in Notion
Add several internal properties to the Notion database that visitors never see: Source, Form label, Submission ID, WordPress admin URL, and Initial status. These make it easier to find the original submission, understand the source, and regain control when something goes wrong. Variables can fill some of these values automatically.
Do not turn Notion into a dump of every technical variable. Four useful internal fields are better than twenty columns nobody opens. Be especially careful with tracking data in public submission workflows. If the team does not actually use IP, geolocation, or user agent data in real work, do not add them just because they are available.
Author-Created CSS Adjustment for the Visible Form
The integration itself does not require code. But sometimes it helps to visually separate the consent checkbox so users do not overlook the fact that their data will be sent to Notion. Below is a small author-created CSS adjustment based on a standard safe WordPress practice: adding a custom class in the field settings and placing external CSS in the theme or Customizer. It does not rely on hidden WS Form Notion hooks and does not modify the plugin code.
Where to apply it: give the consent checkbox a clear custom CSS class such as notion-consent-row, then place the style in a safe project location such as a child theme, the Customizer's additional CSS, or a trusted CSS snippets tool.
.notion-consent-row {
padding: 14px 16px;
border: 1px solid #d7dde8;
border-radius: 6px;
background: #f7f9fc;
}
.notion-consent-row label {
font-weight: 600;
}
The check is simple: open the page with the form, confirm that the checkbox stands out visually, submit one request with consent selected and one without it, and review how the Notion action behaves. Rollback is just as simple: remove the field's custom class or remove the CSS. If the theme aggressively overrides form styles, do not fight it with !important unless necessary. It is better to refine the CSS selector in browser tools and keep the change minimal.
If WS Form Notion Is Not Sending Data: Symptoms, Causes, and Fixes
The best way to troubleshoot is by following the symptoms. Do not start by reinstalling the plugin. First determine where the chain broke: the form did not submit, the submission was not saved, the action did not run, Notion rejected the data, or the record appeared but in the wrong place.
The Notion Database Does Not Appear in the List
Symptom: the required database is missing in the action settings or when creating a form from the Notion tab. The form and add-on may still be active.
The likely cause is that the connection does not have access to the database, or the list was not refreshed after the new database was created. The official WS Form instructions describe sharing databases with the WS Form integration through Settings & members, My connections, Access selected pages, and Update access. The Notion authorization docs also confirm that a connection sees only the pages and databases explicitly selected for it.
What to check: open Notion under a user with full access to the database, review the selected pages for the WS Form connection, add the database, save access, and return to WS Form. Then click the refresh icon in the Notion tab or the database field. If the database still does not appear, check whether you are dealing with a nested database on a page the connection did not actually receive access to.
No Record Is Created After the Form Is Submitted
Symptom: the user sees a post-submit message, but no new record appears in Notion. First open WS Form Submissions. If the submission was not saved, the issue may have nothing to do with the Notion action and instead come from the form itself, validation, anti-spam, or a disabled Save Submission action. If the submission is there, review the action details, information, and errors.
Possible causes include the Add to Notion action being disabled, the action running on save instead of submit, the opt-in checkbox being unchecked, conditional logic preventing the action from running, the wrong Notion database being selected, or the mapping containing an unsupported value. The fix depends on what you find: enable the action, change the event, verify opt-in, temporarily disable the condition for testing, or simplify the mapping to Name + Email + Message.
Fields Are Empty or Ended Up in the Wrong Columns
Symptom: a record appears in Notion, but some data is empty, uses the wrong type, or is awkward to process. This is almost always a mapping issue. Check whether the correct form field is selected on the left and the correct Notion property on the right. If the form field is optional, send a test with that field filled in.
For select and multi-select, use option names. For a checkbox, keep only one checkbox if that field participates in Notion mapping. For rich text, send plain text instead of HTML. For a people property, do not send a person's name as plain text if the documentation requires an ID with dashes. If the team is not ready to work with people IDs, temporarily use a select or text property such as "Owner request" and assign the owner inside Notion.
Notion Rejects Long Text or a Complex Value
Symptom: the action errors indicate validation trouble or an unacceptable parameter, especially with long messages, URLs, email or phone values, multi-select values, or people values. The Notion API docs define limits for rich text, URL, email, phone, multi-select, and people arrays. WS Form Notion should not force you to memorize all of those limits, but when an error appears, it helps to understand what type of limitation you are hitting.
Fix: simplify the mapping for the problem field, add length limits in the form itself, send a link to the submission instead of a full HTML report, and avoid sending arrays into a field where Notion expects a single value. If the user message can become long, it is better to store it in Notion rich text only as plain text and keep the full submission inside WS Form.
Duplicate Submissions
Symptom: two similar records appear in Notion for a single form submission. Possible causes include the user clicking submit twice, the action running on both save and submit, the form containing multiple Notion actions, conditional logic triggering the action again, or repeated testing without filtering the results.
WS Form form settings include a lock save & submit buttons option that helps prevent double clicks. Check whether it is enabled for the public form. Then review the action list: make sure there are not two Add to Notion actions, that both save and submit are not selected unnecessarily, and that conditional logic is not causing the action to fire twice. For diagnosis, add Submission ID to Notion so you can quickly see which records belong to the same submission.
Everything Stopped Working After Changes in the Notion Database
Symptom: the integration worked, then someone renamed a property, changed its type, removed a select option, or moved the database, and new submissions stopped arriving correctly. This is a typical operational issue, not necessarily a plugin bug.
Fix: restore the property or update the mapping in WS Form. After any structural change to the database, always send a test submission. If the team changes Notion frequently, assign a database owner and agree on which properties are system fields for the form. Those properties should not be removed without checking the integration first.
When WS Form Notion Works Alongside Other Tools
Notion rarely exists in isolation. A site may also use email notifications, a CRM, Slack, Google Sheets, PDF exports, spam protection, caching plugins, and analytics. WS Form PRO supports actions and add-ons, so Notion can be inserted into a broader workflow, but it is important not to blur the boundaries of responsibility.
A common combined workflow looks like this: the user submits a brief, WS Form saves the submission, sends an email to the responsible person, creates a Notion record, and shows a message to the user. Email is there for urgent notification, Notion for processing and status management, and WS Form Submissions for the source log and troubleshooting. If Notion is temporarily unavailable or the mapping is wrong, the submission still remains in WordPress and the administrator can recover the data.
If the site uses caching, test that the form page does not break nonce handling, validation, or dynamic form rendering. There is no need to exclude the entire site from cache preemptively. It is enough to test the specific form page after enabling caching: submission, validation, opt-in, stored submission, action logs, and the Notion row. If the issue appears only when the optimizer is on, configure an exclusion for the form page or for WS Form scripts according to your cache plugin documentation.
If a CRM is also involved, decide which system is the primary one. Notion is convenient for teams, but the CRM may still be the system of record for sales and follow-up. Do not send the same submission into five systems without a reason. It is better to define the roles clearly: Notion holds the internal task board, the CRM manages deals, email alerts the responsible person, and WS Form stores the source data and logs.
Publishing the Form on the Site and Compatibility with the Theme, Editor, and Cache
Once the action is configured, the form still has to work properly on the public page. In WS Form, that is a separate stage: you can configure the mapping perfectly in the admin area and still have the live page fail because of caching, a conflicting optimizer, an incorrectly inserted shortcode, a hidden tab, or a page builder that changes the markup. That is why publishing should be treated as part of the setup, not as the final click.
Where to Place the Form
You can display the form anywhere your site structure allows: on a contact page, a landing page, a request block below a service description, an internal portal, or a dedicated support request page. What matters is that the user understands the context. If the form sends data into Notion as a working request, there should be a clear note nearby about the purpose of data processing. You do not have to expose the internal architecture, but people should understand that their message will go to the team for follow-up.
If the form is embedded via shortcode or an editor block, clear the page cache after updating the form and open the page as a regular visitor. Do not rely only on the preview inside WS Form. The preview is useful for checking the layout, but the public page shows the real theme, the actual scripts, the cache layer, and the external styles.
Compatibility with the Theme and Visual Builder
WS Form builds forms inside WordPress and can coexist with many themes and editors, but the form's appearance still depends on the surrounding CSS environment. The theme may apply styles to inputs, labels, buttons, fieldsets, and messages. A page builder may add containers, lazy loading, or its own spacing rules. None of that interferes directly with the Notion action, but it can affect the visibility of required fields, the consent checkbox, and the submit button.
Do not test the form only on desktop. At mobile widths, the consent checkbox, select options, and error messages should remain readable. If users cannot see a validation error or do not understand that the checkbox is required, they will not submit the form, and nothing will ever appear in Notion. That kind of issue looks like an integration failure even though the real cause is in the form interface.
Cache and Script Optimization
Caching and optimization plugins may move scripts, merge files, defer loading, or cache the page HTML. Forms are especially sensitive to that. There is no need to disable all optimization in advance, but after enabling cache, send a test submission and verify the entire path: validation, submit, success message, WS Form Submissions, and the Notion row. If the issue appears only after optimization, configure a targeted exclusion.
Start with the smallest exclusion possible: the form page, a specific script, defer/delay behavior for form scripts, or cache bypass for a page with a critical lead form. Do not jump to the blunt solution of "disable cache across the whole site" until you have verified the local cause. If the form sits on an ad-driven landing page, preserving page speed is especially important, but not at the cost of broken submissions.
Checks After Updates
Updates to WordPress, the theme, WS Form, the add-on, and the Notion API can all change implementation details. The Notion add-on readme shows that the add-on has evolved over time: support for the Notion API was added, select and multi-select handling changed, external files support was introduced, and support for untitled databases and multiple actions was improved. These changes are valuable, but any site with a production integration should have a simple post-update test.
Create a standard checklist: send a test submission, confirm the submission was stored, open the action logs, check the Notion row, and delete the test record. That takes far less time than discovering missing leads several days later and then trying to determine what went wrong.
Operating the Integration After Launch: How Not to Turn Notion Into a Submission Dump
An integration is not successful the moment the first test record appears. It becomes successful when the team can process requests for a week or a month without manual copying or confusion. To reach that point, you need a few operational rules: who monitors the database, who changes the structure, how test records are marked, what to do when an error appears, and which fields are required for processing.
Views for Different Roles
In Notion, it makes sense to create several views of the same database. For a manager, use a New requests view that shows only new submissions. For a team lead, use In progress and overdue views. For a site administrator, create a Technical view with Source, Submission ID, Form label, and Created time. That way, everyone sees the fields they need without getting in each other's way. WS Form Notion continues sending one structured record, while Notion handles the internal organization.
If one database receives data from several forms, views by Source are essential. Otherwise, a support request may get buried among consultation requests, and a partnership application may be treated like a standard lead. Source can be filled by custom mapping using static text or the #form_label variable. The important thing is that the value stays consistent for the same form and does not vary from submission to submission without a reason.
Rules for Test Records
Testing is necessary, but it should not distort your analytics. Use a consistent naming pattern such as "Integration Test," a separate Test status, or a dedicated Source value such as "WS Form Notion test." After verification, delete those records or move them into an archive view. If the database triggers automated notifications or internal workflows, warn the team that test submissions do not require any follow-up.
For test email addresses, use addresses owned by your own team rather than real customer contacts. Do not use other people's personal data for testing. If you need to test a long message, use neutral text without secrets. Notion is convenient as a working database, but that is not a reason to move unnecessary sensitive information into it.
What to Do When Notion Fails Temporarily
Any external system can respond slowly or return an error from time to time. The Notion API docs describe rate limits and validation errors. For a typical administrator, that means this: if a record does not appear in Notion, first check WS Form Submissions. If the original submission was saved, the data is not lost. Then review the action error and decide whether the action can be re-run or whether one submission needs to be transferred manually.
For important forms, keep a backup notification channel such as an email action. That way, the team still hears about the submission even if Notion is failing. But the backup channel should not become the main manual process. If the Notion action fails regularly, fix the real cause: mapping, permissions, limits, overlong values, conditional logic, or a conflict on the form page.
Access Security
Do not grant access to the Notion database more broadly than necessary. The WS Form connection should see the required databases, and employees should see only the views and pages they need for their work. If the database contains personal data, limit permissions, establish internal retention and deletion rules, and plan how data will be exported or deleted on request. WS Form includes separate actions for data export and erasure in the PRO ecosystem, but the exact workflow depends on the site and the team's policy.
Questions About WS Form Notion Setup and Limitations
Can WS Form Notion be used with the free WS Form LITE?
No. The official Notion add-on documentation states that add-ons require WS Form PRO and are not compatible with WS Form LITE. The free plugin on WordPress.org is useful for getting familiar with WS Form, but the Notion add-on belongs to the PRO ecosystem.
Why is the Notion database not visible in WS Form?
Most often, the connection has not been granted access to the required database. In Notion, go to Settings & members -> My connections, open the WS Form connection, choose Access selected pages, select the database you need, and click Update access. Then return to WS Form and use the refresh icon.
Which should I choose: automatic form creation or a manual action?
If the Notion database is already designed and the form does not exist yet, automatic creation saves time. If the form is already in use on the site, it is better to add a manual Add to Notion action so you can keep the existing fields, styles, notifications, conditional logic, and placement on the page.
Can I send HTML into Notion rich text?
The official WS Form Notion page explicitly states that HTML is not supported for Notion text or rich text fields. For a submissions database, use plain text, and for a full formatted report, keep a link to the submission or another safe source instead.
How can I tell whether the Notion action actually ran?
Check three points: whether the submission appears in WS Form, whether the Notion action shows information or errors in Submissions, and whether the record appears in the correct Notion database. If you look only at the post-submit message, you can miss a failure in one specific action.
Can I send different forms into one Notion database?
Yes, if the database structure fits all of those forms. Add Source, Form label, or Submission ID through custom mapping so the team understands where the record came from. If the forms collect different kinds of data, separate databases or separate views are usually a better fit.
Is WS Form Notion suitable for two-way synchronization?
The documentation describes pushing WS Form submissions to Notion databases. For two-way sync, updating existing rows, or more complex status exchange, you need a separate automation design and should evaluate tools such as Make, Zapier, a webhook/API approach, or a specialized integration.
Do I need to disable cache on the form page?
Not automatically. First test the form with cache enabled: validation, submit, opt-in, saved submission, action logs, and the record in Notion. If the issue appears only during caching or script optimization, configure a targeted exclusion for the form page or the necessary WS Form resources.
When WS Form Notion Is the Right Choice
WS Form Notion is worth using when the site already has, or plans to use, WS Form PRO and the team genuinely processes submissions in Notion. The add-on's strengths are the direct path from form to database, automatic form creation from the database, a manual action for existing forms, field mapping, custom mapping through variables, and verifiable troubleshooting through WS Form Submissions.
Before launching on a live site, spend more time on the database structure than on the installation itself. Create clear properties, verify the connection access, configure mapping by data type, add internal Submission ID and Source fields, test the opt-in behavior, send a test submission, and check the action logs. After that, the integration will not just be "connected" but actually ready for daily team use.
If your use case matches this approach, you can move on to the download section and download the ZIP archive, then repeat the setup first with a test Notion database. That order is safer than connecting your live leads board right away: you will see the mapping, field limits, and action behavior before the form starts collecting real submissions.


