Notion CRM Lead Intake from Microsoft Forms
When a lead submits a Microsoft Form, the flow creates a new page in a Notion CRM database with the form data mapped to properties, sends the submitter a branded acknowledgement via Outlook, and notifies the sales channel in Teams. A simple entry point that turns web/form leads into structured Notion CRM records.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow turns Microsoft Forms submissions into structured Notion CRM records. When a lead submits the configured Microsoft Form, the flow reads the answers, creates a page in a Notion CRM database with the fields mapped to Notion properties (Name, Email, Company, Interest), sends the submitter a branded Outlook acknowledgement, and posts a new-lead alert into a sales Teams channel with a deep link to the Notion record.
Why it matters: Teams that run their CRM in Notion still capture leads through Microsoft Forms. Auto-creating the Notion record removes manual copy-paste, gives sales an instant heads-up, and acknowledges the lead immediately — all connector-first and fully portable via environment variables.
Status: Built and verified — Flow Checker 0 errors / 0 warnings. Ships Off (demo). Going live requires only authorizing the four connections and setting the environment variable values.
Use Case
A sales/marketing team collects inbound leads via a Microsoft Form (web embed, event booth, or campaign landing page) and wants each one landed in their Notion CRM with an immediate acknowledgement to the lead and a real-time heads-up to sales. This is a simple, high-value entry point that converts web/form leads into governed Notion CRM records without anyone copy-pasting.
Flow Architecture
When a new response is submitted
Microsoft Forms CreateFormWebhookFires when a lead submits the form identified by flowlibs_LeadCaptureFormId.
Get Response Details
Microsoft Forms GetFormResponseByIdReads the submitted answers by response id.
Initialize configuration variables
InitializeVariableSets the Notion CRM database id, Teams group/channel ids, the lead name/email/company/interest from the form answers (read via dynamic question-id keys), and the acknowledgement subject.
Create Notion CRM Page
Notion CreateaPageCreates the Notion CRM page, mapping answers to Name (title), Email (email), Company (rich_text), Interest (select).
Acknowledge Lead
Office 365 Outlook SendEmailV2Sends a branded thank-you email to the lead.
Notify Sales Teams
Microsoft Teams PostMessageToConversationPosts a new-lead alert to the sales channel with a deep link to the Notion page.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_LeadCaptureFormId | String | <configure> | Source Microsoft Form id. |
| flowlibs_NotionCrmDatabaseId | String | <configure> | Target Notion CRM database id. |
| flowlibs_TeamsGroupId | String | <your-team-id> | AAD group id of the Team hosting the sales channel. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Sales channel id for new-lead alerts. |
| flowlibs_FormQuestionLeadName | String | <configure> | Form question id whose answer is the lead name. |
| flowlibs_FormQuestionLeadEmail | String | <configure> | Form question id whose answer is the lead email. |
| flowlibs_FormQuestionCompany | String | <configure> | Form question id whose answer is the company name. |
| flowlibs_FormQuestionInterest | String | <configure> | Form question id whose answer is the area of interest. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Forms | shared_microsoftforms | CreateFormWebhook GetFormResponseById |
| Notion (Independent Publisher) | shared_notionip | CreateaPage |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Deduplicate
- Add a Notion Query_a_database before create and filter by email to skip leads already in the CRM (the connector returns all rows; filter in-flow).
- Lead routing
- Set a Notion Owner property via round-robin and @mention the assigned rep in the Teams message.
- Lead scoring
- Derive a score property from the form answers (e.g., company size or interest) and include it on the Notion page and the Teams alert.
- More fields
- Extend the body/properties object in Create_Notion_CRM_Page and add matching flowlibs_FormQuestion... variables for any additional questions.
- Empty-value safety
- Notion rejects empty email/select values; wrap the variable reads in coalesce(...) with a sensible default if your form has optional questions.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Map a form answer to a property (portable)
Reads a form answer with a dynamic question-id key so the flow ports to any Form by changing only the env vars.
EXPR.02Form response id from the trigger
The submitted response id used to read details.
EXPR.03Notion page link for the Teams alert
Deep link to the new Notion record.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.