Microsoft Dynamics CRM

Connect Microsoft Dynamics CRM with Webflow to turn form submissions into Dynamics 365 leads within seconds of the click.

→
↗
►
↓
←
↑
Install app
→
↗
►
↓
←
↑
View website
→
↗
►
↓
←
↑
View lesson
→
↗
►
↓
←
↑
A record settings
→
↗
►
↓
←
↑
CNAME record settings
Microsoft Dynamics CRM

A Webflow form stores each submission in the site's form data and sends an email notification. Nothing assigns the inquiry to a sales rep or checks it against existing accounts. Pipeline stages, lead scoring, and consent records live in Microsoft Dynamics CRM. The website stores only the initial submission. Without a connection, someone exports submissions by hand and re-keys them into the CRM.

Connecting the two lets a Webflow form submission become a Dynamics 365 lead. In the other direction, Dataverse record changes can update items in the Webflow CMS. The site becomes a live front end for CRM data.

Marketing operations teams that run the website in Webflow and the pipeline in Dynamics 365 Sales get the most from this setup. Customer Insights - Journeys marketers who own form design and consent settings can embed forms without developer help. Developers and Dynamics 365 administrators handle the webhook, Microsoft Entra ID, and Dataverse pieces when a team needs two-way sync.

How to integrate Microsoft Dynamics CRM with Webflow

What is Microsoft Dynamics CRM? Microsoft Dynamics CRM is Microsoft's customer relationship management software, now part of the Dynamics 365 suite. Dynamics 365 Sales manages leads, contacts, accounts, and opportunities; Dynamics 365 Customer Insights - Journeys runs marketing forms and customer journeys. Both store data in Microsoft Dataverse, which exposes an OData v4.0 Web API and outbound webhooks.

Teams pair these tools when the sales organization has standardized on Dynamics 365, and marketing wants to ship pages in Webflow without a developer queue. Microsoft documents Customer Insights - Journeys forms for hosting on external sites and calls the JavaScript snippet "the most common way to integrate the form into your own web page." Routes use Microsoft's own embed code or an automation platform; custom integrations use server code.

The Microsoft Dynamics CRM-Webflow integration supports three approaches:

  • Code Embed elements load Customer Insights - Journeys forms, or Microsoft's form capture script, on Webflow pages with no middleware.
  • Zapier, viaSocket, n8n, Make, and Power Automate route Webflow form submissions and CMS events into Dynamics 365 records without code.
  • The Webflow Data API and Microsoft Dynamics CRM APIs give you full control over two-way sync between Dataverse tables and CMS collections, but require server-side development.

Most implementations combine two or more of these methods depending on the complexity of the setup.

Embed Customer Insights - Journeys forms with Code Embed elements

Customer Insights - Journeys generates a JavaScript snippet for every published form. Paste it into a Code Embed element. The form renders on your Webflow page and sends submissions straight to Dataverse. No middleware, no API keys, and no server are involved. After the required Dynamics 365 configuration is complete, a marketer who owns the form editor can finish the setup alone. For forms you already built in Webflow, Microsoft's form capture script is a second path, and it needs a developer.

You need a Core, Growth, Agency, or Freelancer Workspace plan, or an active Site plan. The Code Embed element accepts up to 50,000 characters of client-side HTML, CSS, and JavaScript.

Embed a Customer Insights - Journeys marketing form

Use this path when you are building a new form and want Dynamics 365 to own the fields, validation, and consent capture. Marketing forms in the form editor create leads or contacts. The editor also provides event registration forms and preference centers for attendee registration and consent management.

To embed the form:

  1. In Customer Insights - Journeys, go to Settings > Email marketing > Domain authentication > New. Add your Webflow site's domain and enable external form hosting. DNS ownership verification is only needed if you also select email sending, per Microsoft's domain authentication guide.
  2. Go to Channels > Forms > New. Build the form, choose the audience (Contact, Lead, or Lead & Contact), and publish it. The form creation doc covers hidden fields and audience settings.
  3. Open the published form and select Publish > Embed to external page using JavaScript > Publishing options. Copy the snippet, which contains a placeholder <div> and a FormLoader.bundle.js script.
  4. In Webflow, add a Code Embed element to the target page and paste the snippet. Do not use an iframe; Microsoft's client-side extensibility doc states the form API "does not support iFrame hosting."
  5. Publish the Webflow site and submit a test entry on the live page.

The audience setting decides what Dataverse does with each submission:

  • Contact audience: an existing record with the same email is updated, so no duplicates are created.
  • Lead audience: every submission creates a new lead record.
  • Lead & Contact audience: the existing contact is updated and a new lead is always created.

Whichever audience you choose, every submission fires the Marketing Form Submitted trigger, which can start a real-time journey.

Your site's global CSS can restyle the embedded form. Microsoft's troubleshooting guide notes that a generic table style on the host page changes the form's appearance. It recommends the table-less layout, the default for new forms. Setting the form font to inherit makes it pick up the page's typography, per the manage forms doc.

Capture an existing Webflow form with the form capture script

Form capture sends submissions from a form you built in Webflow into Dynamics 365 while the original form keeps working. Microsoft recommends it only when "your existing form also sends submissions to systems other than Dynamics 365 or if the existing form contains complex logic that can't be easily recreated in the Customer Insights - Journeys form editor." It requires developer assistance. It also requires the DynamicsMKT_Forms solution version 1.1.35355 or higher. If the form can be rebuilt in the editor, use the embed method above instead.

To capture a Webflow form:

  1. In Customer Insights - Journeys, turn on form capture at Settings > Feature switches > Forms. The feature is off by default.
  2. Create and publish a companion form under Channels > Forms > New with fields matching your Webflow form. Your Webflow domain must already be enabled for external form hosting.
  3. Open the companion form's Publish page and copy the form-capture snippet. It loads FormCapture.bundle.js.
  4. In Webflow, paste the snippet into a Code Embed element on the same page as the form, or add it in page settings using Custom code in head and body tags under Before tag. Site-wide placement works too, through custom code in head and body tags at Site settings > Custom code.
  5. In the snippet, map each Webflow input to a Dynamics 365 field using the IFormFieldMapping interface. Then call d365mktformcapture.submitForm(captureConfig, payload) from the form's submit handler. captureConfig holds the FormId and FormApiUrl.
  6. Call event.preventDefault() in the submit handler and redirect only after the submitForm() promise resolves. An immediate page redirect cancels the capture call.

Consent settings come from the companion form in the editor; any consent changes made inside the capture snippet are ignored. The form capture doc also covers CORS errors.

Connect with Zapier, viaSocket, n8n, Make, or Power Automate

A native Webflow form can stay in place while Zapier, viaSocket, or n8n pairs its trigger with a Dynamics 365 action. Make pairs Webflow actions with Dynamics 365 modules, and Power Automate connects the systems through a Webflow webhook. Use this route when you want submissions stored in Webflow as well as in the CRM. It also fits multi-step flows, such as posting to Slack or deduplicating before the record is created. At least one real form submission must exist before connecting to a Zap, per Does Webflow integrate with Zapier?

Available triggers and actions by platform:

  • Zapier: Webflow New Form Submission → Dynamics 365 CRM Create Lead through the pre-built template. Create Contact, Create Account, Create Opportunity, Create Order, and Update variants are also listed on the Dynamics 365 CRM app.
  • viaSocket: Webflow New Form Submission → Dynamics 365 CRM Create Lead or Create Contact; Webflow New Order → Dynamics 365 CRM Create Order; Webflow Collection Item Created → Dynamics 365 CRM Create Account; New Lead in Dynamics CRM → Create Item in Webflow CMS. The combined page covers Dynamics 9 and Dynamics 365.
  • n8n: the Webflow Trigger node fires on Form Submission and Collection Item Created, Updated, or Deleted. The Microsoft Dynamics CRM node documents Account operations only (Create, Delete, Get, Get All, Update); Contact and Lead are not documented. See the combined page.
  • Make: the Webflow Create an Item action pairs with Dynamics 365 CRM Create a Record, Watch Records, and Search Records. The Dynamics 365 CRM module needs client credentials and a tenant ID from the Azure portal.

Make's Webflow connection is documented in Connect Webflow to third-party apps with Make; neither that article nor the Zapier one names Dynamics 365, so you configure the Dynamics side inside the automation platform.

Route Webflow form webhooks to Power Automate

Power Automate has no native Webflow trigger, so the flow starts from the generic "When an HTTP request is received" trigger and a Webflow webhook posts to it. The flow then writes to the Lead table through the Microsoft Dataverse connector. Microsoft's lead management instructions document this exact pattern for Partner Center. Use the Microsoft Dataverse connector. Microsoft marks the legacy Dynamics 365 connector as deprecated.

To build the flow:

  1. Create a new flow with the trigger When an HTTP request is received.
  2. Define the JSON schema for the Webflow form_submission payload. Its top-level fields are name, siteId, data, submittedAt, formId, and id, where data is a map of submitted field values.
  3. Add the Microsoft Dataverse action Add a new row and set Table Name to lead. Map dynamic content from the HTTP body into lead columns.
  4. Save the flow and copy the generated HTTP POST URL.
  5. In Webflow, go to Site settings > Apps & integrations > Webhooks > Add webhook. Choose the form submission trigger and paste the URL.

The Dataverse connector is a Premium connector, so check your Power Platform entitlements before building the flow (licensing FAQ).

Build with the Webflow and Microsoft Dynamics CRM APIs

A server handles direct API work for two-way sync and custom validation. The Code Embed element runs only client-side code, and Webflow Cloud hosts Next.js or Astro apps on Cloudflare Workers if you want the server layer inside your Webflow project.

Available APIs:

  • The Dataverse Web API handles leads, contacts, accounts, and opportunities through OData v4.0 endpoints under https://{org}.crm.dynamics.com/api/data/v9.2/.
  • Webflow's Data API handles CMS collections and form submissions from the base URL https://api.webflow.com/v2.
  • Webflow webhooks trigger real-time events between systems for form_submission, collection_item_created, collection_item_changed, collection_item_published, and site_publish.
  • Dataverse webhooks push Create, Update, Delete, Associate, Disassociate, Merge, and SetState events out of Dynamics 365.

UX GmbH built a custom Node.js middleware for its European Speed Club project. It bridges Webflow and Microsoft Dynamics 365 and calls the endpoints above.

Every Dataverse request carries OData-Version: 4.0, OData-MaxVersion: 4.0, Content-Type: application/json, Accept: application/json, and an Authorization: Bearer {access_token} header from Microsoft Entra ID, per the request composition doc.

Create Dataverse leads from form_submission webhooks

An HTTPS handler, typically an Azure Function, can replace Power Automate. The handler verifies the Webflow signature, acquires an Entra ID token, and posts a lead. It suits teams that need field transformation or deduplication, along with logging beyond what a low-code flow can express. Server-to-server authentication follows Microsoft's S2S guide.

To implement it:

  1. Register an app at Entra ID > App registrations > New registration and create a client secret or certificate. You need at least the Application Developer or Cloud Application Administrator role.
  2. Create a Dataverse application user at Manage > Environments > [environment] > Settings > Users + permissions > Application users > + New app user, bound to that registration. Assign it a security role. You can create only one application user per registration per environment, per the application users doc.
  3. Deploy an HTTPS handler on port 443. On each request, compute the SHA-256 HMAC of x-webflow-timestamp + : + the raw body using the webhook secret. Compare it with x-webflow-signature and reject requests older than five minutes. Webhooks created after April 14, 2025 have individual secret keys.
  4. Acquire a token with the /.default scope, then call POST https://{org}.crm.dynamics.com/api/data/v9.2/leads with the OData headers above. Map the payload's data values to lead columns such as firstname and emailaddress1.
  5. Register the webhook with a token that has the sites:write scope:```json POST https://api.webflow.com/v2/sites/{siteid}/webhooks { "triggerType": "formsubmission", "url": "" }
Before creating a lead, query for an existing record with `GET https://{org}.crm.dynamics.com/api/data/v9.2/leads?$select=leadid,emailaddress1&$filter=emailaddress1 eq '{email}'`. Dataverse's own [duplicate detection rules](https://learn.microsoft.com/en-us/dynamics365/sales/enable-duplicate-lead-detection) cover the cases that slip through. A failed webhook delivery is retried, and repeated failures deactivate the webhook.

#### **Sync Dynamics 365 record changes into Webflow CMS items**

After a Dataverse record is saved, a webhook sends account, contact, or custom table changes to your handler. The handler transforms the payload, and the Data API writes the CMS collection item. Use it for partner directories and dealer locators. It also supports any page whose content the sales team maintains in Dynamics 365.

To implement it:

1. In the Plug-in Registration Tool, choose **Register New WebHook**. Enter a name, your HTTPS endpoint (port 443 only), and an authentication mode of `WebhookKey`, `HttpHeader`, or `HttpQueryString`, per the [register a webhook doc](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/register-web-hook).
2. Register a step on that webhook with Message `Update`, the target table, Stage `PostOperation`, and Mode `Asynchronous`. Asynchronous steps can only run at `PostOperation`; synchronous mode fails the whole transaction if your endpoint is unreachable.
3. In the handler, read `PrimaryEntityId` and the changed `Attributes` from the `Target` entry in `InputParameters`. Use `x-ms-correlation-request-id` to detect loops if the same handler also writes back to Dataverse.
4. Generate a Webflow token at **Site settings** > **Apps & integrations** > **API access** > **Generate API token**. Only the Site manager role can do this, per [site roles and permissions](https://help.webflow.com/hc/en-us/articles/41015796747667-Site-roles-and-permissions); the token needs the `CMS:write` scope.
5. Call `PATCH https://api.webflow.com/v2/collections/{collection_id}/items/live` to update and publish in one request, or `PATCH .../items` followed by `POST .../items/publish` for staged changes. The [update items endpoint](https://developers.webflow.com/data/reference/cms/collection-items/staged-items/update-items) accepts up to 100 items per request.

A slow or unavailable endpoint causes Dataverse to time out and retry on `502`, `503`, or `504`. Payloads over 256 KB arrive with the `x-ms-dynamics-msg-size-exceeded` header and without `InputParameters` or entity images. In that case, fetch the record again with a `GET` before writing to the CMS. Power Automate's [When a row is added, modified or deleted](https://learn.microsoft.com/en-us/power-automate/dataverse/create-update-delete-trigger) trigger offers a low-code alternative for the same direction; it runs asynchronously, and a failed flow does not roll back the Dataverse change.

## **What can you build with the Microsoft Dynamics CRM Webflow integration?**

A Webflow site can turn visitors into Dataverse leads and contacts automatically without manual exports or a rebuild in Power Pages.

- **Lead capture with journey enrollment:** Embed a Customer Insights - Journeys marketing form on a Webflow pricing or demo page. Each submission creates a lead that can enter a trigger-based nurture journey with no manual step.
- **Event registration landing pages:** Design the event page in Webflow and drop in a Customer Insights - Journeys event registration form. Registrations land in Dynamics 365 event management, and the same contact record drives invitations, attendance tracking, and follow-up journeys.
- **CRM-driven directory content:** Sync Dataverse account records into a CMS collection and render them in a [Collection List](https://help.webflow.com/hc/en-us/articles/33961294051347-Collection-list), for example a certified-partner directory the sales team maintains in Dynamics 365. viaSocket's New Lead in Dynamics CRM → Create Item in Webflow CMS action covers the simplest version without code.
- **Booking and order handoff:** European Speed Club runs its site on Webflow with a custom booking flow; middleware "transmits all order data in a structured format to the CRM, where a booking record is automatically created" in Dynamics 365. A Webflow ecommerce store can do a lighter version with viaSocket's New Order → Create Order pairing.

Frequently asked questions

  • No. The Webflow Apps directory has no listing for Microsoft Dynamics CRM or Dynamics 365, and the two form-connector apps, Form Connector and Formfic, do not include Dynamics 365 among their destinations. The fastest no-code start is Zapier's Webflow New Form Submission → Dynamics 365 CRM Create Lead template. If you already hold Dynamics 365 licenses, the Customer Insights - Journeys form embed needs no third-party account at all.

  • Microsoft's form creation doc is explicit: "If the domain isn't allowed for external form hosting, the form isn't rendered on your web page and all form submissions are rejected." Confirm the domain authorization first. If the form still fails, Microsoft's forms troubleshooting guide covers publish failures, CSS inheritance, and missing lookup values.

  • No. A Webflow form can post to a webhook, a connected app, or a custom action URL, but none of those is a Dataverse endpoint. The forms help article also notes that a custom action bypasses built-in form handling, so you won't see the submission in your site's form data, and no notification email goes out. To keep storing submissions on your site and still reach Dynamics 365, use a webhook into Power Automate, Zapier, viaSocket, or your own handler as described above.

  • Yes, through the Data API. Create items with POST https://api.webflow.com/v2/collections/{collection_id}/items and update up to 100 at a time with the update items endpoint; a Dataverse webhook or Power Automate flow calls these whenever a record changes. viaSocket documents a New Lead in Dynamics CRM → Create Item in Webflow CMS pairing.

  • Keep Dataverse Web API calls out of production Webflow custom code. The Code Embed element can run JavaScript, so a fetch to https://{org}.crm.dynamics.com/api/data/v9.2/leads is syntactically possible. Every Dataverse call needs an OAuth 2.0 bearer token from Microsoft Entra ID, per the Web API authentication doc, and a token in page source is readable by anyone who views it. Keep credentials in Power Automate, an Azure Function, or a Webflow Cloud app, and let the browser talk only to Microsoft's form snippet or your own endpoint.

Microsoft Dynamics CRM
Microsoft Dynamics CRM
Joined in

Category

CRM

Description

Embed Customer Insights - Journeys forms with [Code Embed](https://help.webflow.com/hc/en-us/articles/33961332238611-Custom-code-embed), or route Webflow form submissions into Dataverse through Zapier, Power Automate, or your own API handler.

→
↗
►
↓
←
↑
Install app

This integration page is provided for informational and convenience purposes only.


Other CRM integrations

Other CRM integrations

jobber

jobber

Connect Jobber with Webflow to capture service leads on your site and route them straight into scheduling and quoting workflows.

CRM
Learn more
Odoo

Odoo

Connect Odoo with Webflow so website activity moves into your back-office workflows.

CRM
Learn more
Recruit CRM

Recruit CRM

Connect RecruitCRM's applicant tracking system with Webflow through automation platforms like Zapier or Make.

CRM
Learn more
HighLevel

HighLevel

Connect HighLevel, an all-in-one CRM and marketing automation platform, with Webflow to embed forms, chat widgets, and booking calendars while routing leads into pipelines and follow-up sequences.

CRM
Learn more
LeadConnector

LeadConnector

Connect LeadConnector, a white-label CRM and marketing automation platform, with Webflow so form submissions and booking calendars feed automated workflows.

CRM
Learn more
HoneyBook

HoneyBook

Connect HoneyBook with Webflow to capture leads on your site and route them into a client pipeline that handles proposals, contracts, scheduling, and payments.

CRM
Learn more
Bitrix24

Bitrix24

Connect Bitrix24, a CRM and workspace platform, with Webflow to turn form submissions, chat, and callbacks into CRM leads and deals.

CRM
Learn more
Copper CRM

Copper CRM

CRM
Learn more
Bullhorn CRM

Bullhorn CRM

Connect Bullhorn CRM with Webflow to sync job listings, capture candidate applications, and move staffing data between your website and your ATS.

CRM
Learn more

Related integrations

No items found.

Get started for free

Try Webflow for as long as you like with our free Starter plan. Purchase a paid Site plan to publish, host, and unlock additional features.

Get started — it’s free