Webflow Salesforce Integration: Forms, CMS Sync and Setup (2026 Guide)

In this article
- Webflow has no native Salesforce sync. Webflow Logic, its automation tool, was switched off on June 27, 2025, and Salesforce doesn’t publish a Webflow app. You connect the two through a form action, an app or iPaaS, or a webhook to your own endpoint.
- Quickest: point a native Webflow form’s custom action at Salesforce Web-to-Lead. It’s free and needs no API access, but it creates leads only and Webflow keeps no copy of the submission.
- Most teams: keep Webflow’s form handler and send each submission on through Zapier, Make or a Marketplace app such as Form Connector, with a find-by-email step so returning visitors update records instead of duplicating them.
- Most control: a signed form webhook into a small serverless function (Cloudflare Worker, Webflow Cloud, AWS Lambda) that calls the Salesforce REST API. The same pattern runs the other way to publish Salesforce records into Webflow CMS collections.
Jump to
- What changed: no Logic, no native connector
- Five ways to connect Webflow forms to Salesforce
- How the data flows
- Route 1: Web-to-Lead as a Webflow form action
- Route 2: Zapier, Make or a Marketplace app
- Route 3: Account Engagement form handlers with Webflow
- Route 4: a webhook into your own serverless function
- Field mapping for Webflow forms
- Capture UTMs and hidden fields on Webflow
- Spam protection on Webflow forms
- Webflow CMS and Salesforce: showing CRM data on the site
- Which Webflow plan you need
- Pitfalls and how to fix them
- When a custom integration makes sense
- Go-live checklist
- Where Gilzor fits
What changed: no Logic, no native connector
According to Webflow’s help center, Webflow Logic was disabled on all sites as of June 27, 2025: flows stopped, and forms connected to Logic became standard Webflow forms. Webflow points customers to Zapier and Make instead.
Webflow’s own Salesforce integration page also states that Salesforce doesn’t offer an official Webflow app. Two Webflow products do read Salesforce data, but neither creates leads:
- Webflow Optimize: its Salesforce integration is available on Enterprise plans only. It imports up to 20 fields each from the Account, Opportunity, Contact and Lead tables for audience targeting and syncs once a day.
- Webflow Campaigns: according to Webflow, it connects to Salesforce CRM for pipeline attribution of campaign pages.
So for lead capture and data sync, you pick one of the routes below. This guide covers Webflow only. For WordPress, landing page tools and the general Web-to-Lead setup, see our Salesforce website integration guide; for the full map of Salesforce integration types, the Salesforce integration guide.
Five ways to connect Webflow forms to Salesforce
Webflow’s form settings decide most of this. Each form has a Send to list: Webflow (store the submission), Email notifications, Webhook, Connected Apps (such as Zapier, Make or HubSpot) or a Custom action. According to Webflow’s help center, a custom action can’t be combined with Webflow storage or email notifications; it bypasses Webflow’s form handling completely.
| Web-to-Lead as custom action | Zapier or Make | Marketplace app (Form Connector) | Account Engagement form handler | Webhook to your own function | |
|---|---|---|---|---|---|
| What it creates | New leads only, optionally as campaign members | Leads, contacts, campaign members, any object; can update | Leads, contacts, custom objects, per Webflow’s integration page | Prospects that sync to leads or contacts | Anything, with your own matching and routing |
| Copy kept in Webflow | No | Yes | Yes | No, if posted directly | Yes |
| Salesforce API access needed | No | Yes | Yes | No (Account Engagement license) | Yes |
| Cost level | Included with Salesforce | Paid Zapier plan (Salesforce is a Premium app) or a Make plan | Free plan available; paid tiers per vendor | Part of Account Engagement | Build cost plus small hosting |
| Typical effort | Hours | Hours per form | Hours | A day | One to two weeks |
| Main limits | Daily lead cap, no updates, no error feedback | Duplicates and retries are your job; costs grow with tasks | You depend on a small vendor holding Salesforce credentials | Exact field names; no log of failed posts | You own the code, secrets and monitoring |
Pick one route per form. A form that sends to both a Zap and an app creates two leads per submission.
Which route fits you?
On Webflow, the choice comes down to what Salesforce should do with a submission and who will look after the connection. Four questions sort that out.
Which Webflow Salesforce route fits?
How the data flows
The key difference between routes is whether Webflow’s form handler sees the submission. If it does, you get a stored copy, spam filtering and a webhook; with a custom action, you get none of those.
Route 1: Web-to-Lead as a Webflow form action
Web-to-Lead itself (editions, the default cap of 500 leads in 24 hours per Salesforce’s documentation, reCAPTCHA and assignment) is covered in the website integration guide linked above. What is specific to Webflow is wiring it to a native form, so you keep Webflow’s designer instead of pasting raw HTML into a Code Embed:
- Generate the form in SalesforcePick the fields, set the return URL (retURL) to a thank-you page on your Webflow site and copy the HTML. You only need it as a reference: the action URL, the field names and IDs, and the hidden oid value.
- Switch the Webflow form to a custom actionSelect the form, open the Settings panel, and remove Webflow and Email notifications from Send to. Add Custom action, paste the Web-to-Lead URL and choose POST.
- Rename every fieldIn each input’s settings, set Name to the Salesforce name from the generated HTML: first_name, last_name, email, company, and the field IDs the HTML shows for custom fields. Select options must match Salesforce picklist values exactly.
- Add the hidden fieldsWebflow’s form elements have no hidden-field type, so place a Code Embed inside the form. Give it hidden inputs for oid, retURL, lead_source, Campaign_ID if you use campaigns, and your UTM fields.
- Handle reCAPTCHAWebflow’s own reCAPTCHA element validates through Webflow’s form handler, which a custom action skips. If Web-to-Lead requires reCAPTCHA verification, include the reCAPTCHA code from Salesforce’s generated HTML in the Code Embed.
- Test with debug onIn a sandbox, add the debug fields from the generated HTML, submit, and check the lead, owner, campaign and UTMs. Expect a redirect to your retURL page rather than Webflow’s inline success message.
The trade-off: Webflow stores nothing and Salesforce reports nothing back, so a lead rejected by a validation rule is silently lost. Fine for a newsletter form, risky for demo requests.
Route 2: Zapier, Make or a Marketplace app
This keeps Webflow’s form handler, so submissions are stored, filtered for spam and then forwarded. It suits teams without developers.
- Zapier. Webflow’s form submission trigger, then Salesforce actions. According to Zapier, Salesforce is one of its premium apps and needs a paid plan (or a free trial). Webflow and Zapier both note that a form needs at least one submission before Zapier can connect to it, so publish the form and send a test first.
- Make. Make’s Webflow app triggers on new form submissions, then Salesforce modules create records or update them when a match is found.
- Form Connector. Webflow’s integration page points to this Marketplace app for no-code form-to-Salesforce sync. Its listing names Salesforce, Account Engagement (Pardot) and Marketing Cloud among its destinations, a submission and troubleshooting log, and a free plan. It is a third-party app approved by Webflow, not a Salesforce product, and it asks for read and write access to forms, CMS, pages and custom code.
Whichever tool you use, build the flow as find, then update or create, not create only. Search Salesforce by lowercased email across leads and contacts, update what you find, and create a lead only when nothing matches. Connect the Salesforce side with a dedicated integration user (our Salesforce integration user guide covers the setup), not a marketer’s own login.
Route 3: Account Engagement form handlers with Webflow
Teams on Marketing Cloud Account Engagement (formerly Pardot) can keep native Webflow forms and post them to a form handler. Set the form’s custom action to the handler URL and make each Webflow field Name match the handler’s external field names exactly. Salesforce’s help article on form handlers recommends using the handler as the form action because the visitor’s tracking cookie is then captured automatically.
The catch is the same as Web-to-Lead: with a custom action, Webflow stores nothing. If you want both a Webflow copy and Account Engagement, post from your own server instead.
Salesforce says to enable Kiosk mode on the handler in that case, so your server isn’t cookied as a prospect, and notes that page views then won’t link to the prospect automatically.
Route 4: a webhook into your own serverless function
The route with the fewest surprises at scale: Webflow posts each submission to your endpoint, and your code decides what happens in Salesforce. Add a Webhook destination in the form’s settings: Webflow then shows a secret key once, which signs each request. According to Webflow’s developer docs:
- Requests carry x-webflow-timestamp and x-webflow-signature headers: an HMAC SHA-256 of the timestamp, a colon and the body. Reject anything with a bad signature or older than five minutes. Webflow’s docs note that webhooks created in the site dashboard don’t include these headers, so confirm they arrive before you rely on them, or create the webhook through the API.
- The form_submission payload carries the form name, site ID, form ID, a timestamp and the field data, keyed by each field’s Name. Webflow’s own example sends a phone number as a number rather than text, so normalize types.
- Return HTTP 200 quickly. Any other status, a redirect or an SSL error counts as a failure and is retried up to 3 times, 10 minutes apart. Repeated failures deactivate the webhook, and Webflow emails you.
A typical function, on Cloudflare Workers, AWS Lambda or Webflow Cloud (Webflow’s own hosting for apps deployed alongside a site):
- Verify and storeCheck the signature and timestamp, save the raw payload (a queue or a small database), and return 200 at once. Process in the background so Salesforce slowness never trips Webflow’s retries.
- Validate and normalizeCheck spam signals, lowercase and trim the email, split or default names, map Webflow field Names to Salesforce API names, and convert select values to picklist values.
- AuthenticateUse an External Client App with the OAuth client credentials flow and a dedicated integration user. Since Spring ’26, Salesforce restricts creating new connected apps by default and recommends External Client Apps for new integrations.
- Match, then writeQuery leads and contacts by email through the REST API, then update the match or create a lead. According to Salesforce’s REST API guide, active lead assignment rules run on API creates and updates unless the Sforce-Auto-Assign header is set to FALSE, so owner routing still works.
- Retry and alertRetry rate-limit and lock errors with backoff, park anything else for review, and alert a named owner. Make each write idempotent (store the Webflow submission ID with the record) so a retry never creates a second lead.
Your Salesforce edition needs API access: Salesforce’s REST API guide lists it as enabled by default in Enterprise, Performance, Unlimited and Developer editions, with an add-on for Professional. For the API choices and limits, see our Salesforce API integration guide.
Built by Gilzor
Results we’ve shipped




Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.
Field mapping for Webflow forms
Webflow sends each field under its Name setting, so the names you choose in the Designer become your integration’s contract. Use stable, machine-style names (email, company) instead of labels (“Work email”), and treat a renamed field as a breaking change.
| Webflow field (Name) | Salesforce field | Direction | System of record | Notes |
|---|---|---|---|---|
| first_name, last_name | Lead: First Name, Last Name | Webflow → Salesforce | Salesforce after creation | Last Name is required; default it if your form has one name field |
| Lead or Contact: Email | Webflow → Salesforce | Salesforce | The matching key; lowercase and trim | |
| company | Lead: Company | Webflow → Salesforce | Salesforce | Required on leads; derive from the email domain if you don’t ask |
| Select fields (interest, country) | Picklists, State and Country picklists | Webflow → Salesforce | Salesforce defines values | Option values must equal picklist values |
| message | Lead: Description | Webflow → Salesforce | Webflow | Strip HTML, cap length |
| Hidden: utm_*, gclid, landing_page, referrer | Custom lead fields | Webflow → Salesforce | Webflow (first touch) | Keep the first-touch value when a later submission updates the record |
| Form name (from the payload) | Lead Source detail or Campaign | Set by the integration | Integration | One campaign per form or landing page |
| File upload (Premium plan) | Salesforce File linked to the record | Webflow → Salesforce | Copy into Salesforce | Webflow stores the file behind a URL; deleting the submission deletes the file |
| consent, consent_text_version | Custom fields or consent records | Webflow → Salesforce | Webflow captures, Salesforce stores | Keep the consent wording version, the time and the form name |
The UTM and form fields above live on the lead. When a rep converts it, they survive only if Salesforce’s lead conversion mapping carries them to contact and opportunity fields, so set that mapping up too.
Capture UTMs and hidden fields on Webflow
The webhook payload doesn’t include the page URL or campaign parameters, and Webflow has no hidden-field element. A short site-wide script solves both: it saves first-touch values on the landing page and writes them into hidden inputs on every form, including forms several clicks later. Site-wide custom code needs a paid site plan.
Example: first-touch UTMs into every Webflow form
<script>
// Site settings > Custom code > Footer. Fills hidden fields on every form.
(function () {
var keys = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'gclid'];
var saved = JSON.parse(sessionStorage.getItem('first_touch') || 'null');
if (!saved) {
var p = new URLSearchParams(location.search);
saved = { landing_page: location.pathname, referrer: document.referrer };
keys.forEach(function (k) { saved[k] = p.get(k) || ''; });
sessionStorage.setItem('first_touch', JSON.stringify(saved));
}
document.querySelectorAll('form').forEach(function (form) {
Object.keys(saved).forEach(function (k) {
var input = form.querySelector('input[name="' + k + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = k;
form.appendChild(input);
}
input.value = saved[k];
});
});
})();
<\/script>
Submit a test from a URL with UTM parameters and check the values in Site settings > Forms before mapping them. For Web-to-Lead, rename the keys to your custom field IDs.
Spam protection on Webflow forms
Spam that reaches Salesforce eats your Web-to-Lead cap, your Zapier tasks and your reps’ time. Webflow’s help center lists the built-in options in Site settings > Apps & Integrations:
- Bot blocking under “Cloudflare Turnstile spam protection”: analyzes visitor signals and blocks bot submissions on all forms. Submit buttons stay disabled while it loads.
- Spam filtering: checks submitted data and routes suspected spam to a separate spam inbox.
- reCAPTCHA: enabled site-wide with v2 checkbox keys. Every form then needs a reCAPTCHA element, or that form fails to submit.
- Honeypot: Webflow’s guide adds a hidden field plus custom code that disables the submit button when a bot fills it.
These run in Webflow’s form handler, so forms on a custom action don’t get Webflow’s spam filtering.
On your own endpoint, verify a CAPTCHA token server-side as well. Cloudflare’s documentation says a Turnstile token is valid for 300 seconds and can be validated only once, and the client widget alone doesn’t protect a form. Test whether submissions Webflow flags as spam still fire your webhook or Zap, and filter them before they reach Salesforce.
Webflow CMS and Salesforce: showing CRM data on the site
The other direction is common too: a partner directory, office locations or events maintained in Salesforce. The pattern is a scheduled sync into a Webflow CMS collection:
- Mark what is publicAdd a checkbox such as “Show on website” in Salesforce and sync only those records and only public fields. Never sync contacts or personal data to a public site.
- Store the Salesforce ID in the collectionAdd a plain text field for the Salesforce record ID. It is the matching key for updates and deletions.
- Query changes on a scheduleEvery few minutes or hourly, query records modified since the last run. For near real time, have a record-triggered flow or Change Data Capture call your function instead.
- Upsert CMS itemsCreate or update items through the Webflow Data API. According to Webflow’s docs, one request can create up to 100 items, and the live-items endpoints publish them immediately. Staged items wait for a publish call or the next site publish.
- Handle removalsWhen a record is unchecked or deleted, unpublish or archive the matching item rather than leaving stale pages live.
Mind the limits. Premium allows 20,000 CMS items, and the Data API allows 60 requests a minute on Starter and Basic and 120 on Premium; going over returns HTTP 429 with a Retry-After header.
Site API tokens expire after 365 days without use, which matters for a sync that runs rarely. Webflow can also send collection_item webhooks, so CMS changes can flow into Salesforce if marketing owns the content.
Which Webflow plan you need
As of October 2026, Webflow’s pricing page lists the Starter, Basic and Premium site plans, with the Team and Enterprise platform plans above them. What matters for a Salesforce integration:
| Site plan | Form submissions | CMS | Custom code | Form file upload | Data API rate limit |
|---|---|---|---|---|---|
| Starter (free) | 50 in total, never resets | 50 items | No | No | 60 requests a minute |
| Basic ($15 a month, billed yearly) | Unlimited | No | Yes | No | 60 requests a minute |
| Premium ($25 a month, billed yearly) | Unlimited | 20,000 items | Yes | Yes, 10 MB per file | 120 requests a minute |
| Team and Enterprise | Unlimited | 20,000 items on Team, custom on Enterprise | Yes | Yes | 600 a minute on Team, custom on Enterprise |
Forms on a custom domain need an active site plan; the free webflow.io staging domain works without one. File upload storage is free up to 10 GB, according to Webflow’s help center. Prices are list prices for 2026; check Webflow’s pricing page before you buy.
Pitfalls and how to fix them
| Problem | What happens | Fix |
|---|---|---|
| Logic flows never rebuilt | Since June 27, 2025, forms once routed by Logic only store submissions in Webflow | Export the backlog, import it, then rebuild with one of the routes above |
| Custom action, no copy | A rejected Web-to-Lead post or form handler error loses the lead | Use a webhook route for important forms, or keep a backup by posting server-side |
| Renamed field breaks mapping | A designer changes a field’s Name; the payload key changes and the value stops arriving | Stable machine names, a mapping table, and an alert on missing required values |
| Webhook disabled | Slow responses or errors exhaust retries, and Webflow deactivates the webhook | Return 200 at once and process from a queue; monitor the webhook’s status |
| Duplicate leads | Create-only Zaps, or two routes on one form | Find by email first; one route per form, documented in the form’s settings |
| Picklist rejects the record | A Webflow select option doesn’t match a Salesforce picklist value | Map options in code or the flow; change both sides together |
| Lost files | Submissions are deleted in Webflow and the file URLs die | Copy files into Salesforce Files or storage at sync time |
| Integration tied to a person | The Zapier, app or API connection uses someone’s own Salesforce login | A dedicated integration user with only the objects and fields it needs |
When a custom integration makes sense
A custom build is worth it in four cases:
- Several Webflow sites or locales feed one org.
- Forms must match existing accounts and route by your rules.
- Salesforce data has to appear on the site as CMS pages.
- A lost lead costs real money.
Many teams mix: a Zap for the newsletter form, a function for demo requests and the CMS sync. Our Salesforce integration patterns guide explains the remote call-in, fire-and-forget and batch data sync patterns behind these choices.
A webhook function for one Webflow form is the kind of one-way job the first figure describes; a CMS sync that also sends changes back to Salesforce is closer to the second. The ranges are from our API integration cost guide.
Go-live checklist
Before you switch a Webflow form over, go through the list and check off what is done. The score points to what is still missing.
Webflow Salesforce go-live
FAQ
Does Webflow integrate with Salesforce natively?
Can I use Salesforce Web-to-Lead with a Webflow form?
How do I send Webflow form submissions to Salesforce without Zapier?
Is Webflow Logic still available?
Which Webflow plan do I need for a Salesforce integration?
Can I show Salesforce data on my Webflow site?
Where Gilzor fits
Plenty of Webflow sites never need more than a custom action or a Zap. Gilzor, a software development company working from Poland and Cyprus, can help when you need the webhook or CMS routes. Typical triggers: forms that must match existing records, several sites on one org, or Salesforce data shown as Webflow CMS pages.
In those cases we map the fields, build the webhook and sync functions, and support them after launch. More on that work: our Salesforce integration services page.
No sales pitch
Get a straight answer for your project
Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Head of Mobile Development at Gilzor. Leads iOS and Android delivery and the mobile app audits, from release process to architecture.
LinkedIn →Gilzor · Web Development partner
Need a team for your web product?
Services
Web DevelopmentCustom websites and web apps — front-end, back-end, launch and support.→By company type
Selected projects






The team behind them





