How to Embed a Chatbot on Webflow (2026 Guide)

Step-by-step instructions to add a chatbot to Webflow via Project Settings or the Embed element — which plans allow custom code, the publish-first gotcha, and how to fix z-index conflicts.

Which Webflow plans allow custom code embedding?

Custom code in Webflow requires a paid Site plan — the free Starter plan locks the Custom Code tab entirely. If you open Project Settings on a free site, the Custom Code tab either does not appear or shows an upgrade prompt. The same restriction applies to the Embed element (HTML Embed component): placing it on the canvas on a free site produces a placeholder that does not render on publish.

The table below maps Webflow's current site plan tiers to custom code availability. Workspace plans (used for teams managing multiple client sites) also require a paid site plan attached to each individual site for custom code to work on that site.

Webflow site plan custom code support (2026)
Site PlanCustom Code (Project Settings)Embed ElementBest for
Starter (free)NoNoPrototyping, personal projects
BasicYesYesSimple brochure sites, portfolios
CMSYesYesContent-heavy sites with blog or listings
BusinessYesYesHigh-traffic sites, e-commerce
EnterpriseYesYesLarge teams, custom SLAs

If you are on the Starter plan and cannot upgrade, the only alternative is sharing a hosted chatbot link rather than embedding a script. Knobot provides a hosted share page at knobot.org/c/your-business that you can link to from any button or navigation item — no custom code required.

What are the two custom-code paths in Webflow?

Webflow gives you two distinct ways to add a script to your site, and choosing the wrong one leads to the chatbot appearing in the wrong place — or not at all. The right path depends on whether you want the widget on every page or only in a specific location in the layout.

For a standard chatbot floating widget, use Project Settings → Custom Code → Before </body> tag. The Embed element is useful when you want the chat trigger to appear inline in your page design rather than as a corner bubble.

How do you add a chatbot site-wide via Project Settings?

The Project Settings method is the fastest path and covers all pages in one step. It requires a paid site plan and takes effect only after you publish.

  1. 1

    Open the Webflow Designer

    Log in at webflow.com and open the site you want to edit. Click the site name to enter the Designer.

  2. 2

    Navigate to Project Settings

    Click the gear icon in the top-left corner of the Designer toolbar to open Project Settings.

  3. 3

    Select the Custom Code tab

    Inside Project Settings, click the Custom Code tab. If this tab is absent or shows an upgrade prompt, your site is on the free Starter plan — upgrade to Basic or above to continue.

  4. 4

    Paste your script into the Footer Code field

    In the "Before </body> tag" section, paste the full <script> tag from your chatbot provider. Footer placement loads the widget after page content, which is correct for floating chat widgets. If your chatbot vendor specifically requires <head> placement, use the Head Code field instead.

  5. 5

    Save in Project Settings

    Click Save at the top of the Custom Code tab. This stores the code but does not yet make it live on your site.

  6. 6

    Publish the site

    Click the Publish button in the top-right corner of the Designer. Select the domain(s) to publish to and confirm. Wait for the publish to complete — this typically takes 30 to 90 seconds.

  7. 7

    Verify on the live published URL

    Open your site's published URL (yoursite.webflow.io or your custom domain) in a new browser tab. The chatbot widget should appear. Do not test in the Designer canvas or preview — custom code does not execute there.

What is the critical Webflow publish-first gotcha?

The single most common mistake when embedding scripts in Webflow is expecting the code to appear in the Designer's preview or canvas view. Custom code only runs on the published site — Webflow's Designer canvas sandboxes external scripts so they cannot interfere with the editing environment. This is by design, not a bug.

The consequence: every time you add or change custom code, you must go through the full publish cycle before you can verify the result. If you paste a script, click Save in Project Settings, then open the preview and see nothing — the code is fine. Hit Publish, then open the live URL. If the widget still does not appear on the live URL, that is a real issue worth troubleshooting.

The same publish requirement applies if you use Page Settings custom code or the Embed element. In all three cases, the change is staged until you publish.

How do you embed a chatbot on a single Webflow page only?

Per-page embedding lets you scope the chatbot to a specific page — useful when you only want it on a contact or services page, or when testing before rolling it out site-wide.

  1. 1

    Open the Pages panel in the Designer

    In the left-hand toolbar, click the Pages icon (stack of layers) to open the Pages panel, which lists every page on your site.

  2. 2

    Open Page Settings for the target page

    Hover over the page you want to add the chatbot to. A gear icon appears to the right of the page name. Click it to open Page Settings.

  3. 3

    Scroll to the Custom Code section

    Inside Page Settings, scroll down to find the Custom Code section with Head Code and Footer Code fields.

  4. 4

    Paste your script into the Footer Code field

    Add your chatbot <script> tag to the Footer Code (Before </body> tag) field. This code will only load on this specific page.

  5. 5

    Save and publish

    Click Save in Page Settings, then publish the site. Open the specific page on your live URL to verify the chatbot appears.

How do you embed Knobot on Webflow specifically?

Knobot generates a single <script> tag — there is no plugin to install through a marketplace and no developer involvement required. Knobot's Premium plan ($79/month) includes 10,000 chat messages per month with no per-chat overage fees, and you can start with 100 free preview messages (no card required) plus a 14-day trial to verify everything works on your Webflow site before committing.

  1. 1

    Create a Knobot account and add your business

    Sign up at knobot.org. After creating your business profile, Knobot scrapes your website to build the initial knowledge base automatically. Review and edit the imported content in the dashboard before going live.

  2. 2

    Customize the widget in the dashboard

    Set the primary color, welcome message, and lead-capture fields (name, email, phone) to match your brand. Changes propagate to the live widget automatically — you do not need to re-paste the script tag when you update settings.

  3. 3

    Copy the embed snippet from Widget → Install

    In the Knobot dashboard, navigate to Widget → Install. Copy the full <script> tag. It looks like: <script src="https://www.knobot.org/widget.js" data-key="YOUR_KEY" async></script>. The data-key attribute is unique to your account.

  4. 4

    Paste into Webflow Project Settings → Custom Code

    Follow the site-wide steps above: open Project Settings → Custom Code → Before </body> tag, paste the snippet, click Save.

  5. 5

    Add your Webflow domain under Widget → Install

    Back in the Knobot dashboard, go to Widget → Install and add your published domain (both apex and www, e.g., example.com and www.example.com). This ensures the widget loads correctly and lead capture is attributed to the right site.

  6. 6

    Publish the Webflow site and test lead capture

    Publish in Webflow, then open your live site. Trigger the chatbot, submit a test lead (name and email), and confirm it appears in the Knobot dashboard under Conversations.

What should you do if the chatbot does not appear after publishing?

If you have published the site and the widget still does not appear on the live URL, the following causes account for the vast majority of cases.

How do you fix z-index conflicts between the chatbot and Webflow interactions?

Webflow interactions and sticky nav elements often run at high z-index values. If your chatbot bubble appears behind a sticky header, a full-screen overlay animation, or a cookie banner, you need to raise the widget's z-index above those elements.

Webflow lets you add custom CSS through Project Settings → Custom Code → Head Code (in a <style> block) or through the site's global CSS classes. Add a rule targeting the widget's root element:

[data-knobot-widget] {
  z-index: 99999 !important;
}

Knobot's widget wrapper uses the data-knobot-widget attribute as its root selector. For other chatbot providers, check their documentation for the correct selector — it is usually a class like .chat-widget-container or an ID like #chat-root.

Webflow's built-in interactions that run at full-screen (overlay animations, modal backdrops) set their z-index dynamically via inline styles. If you find that a specific Webflow interaction still covers the chat button, inspect the element in browser DevTools to see the exact z-index value being applied, then set your override one unit higher.

Does Webflow's SSL or CSP block third-party chatbot scripts?

Standard Webflow-hosted sites do not apply a restrictive Content Security Policy by default. CSP headers instruct the browser to block scripts, frames, or images from sources not listed in the policy. Because Webflow does not set a restrictive script-src directive on its standard hosting, scripts added through Project Settings or the Embed element load without any CSP modification.

The one scenario where CSP becomes relevant is if you are running Webflow behind a custom reverse proxy or a CDN layer (such as Cloudflare with a custom security ruleset) that adds its own response headers. In that case, you would need to add your chatbot vendor's CDN domain to the script-src and connect-src directives in your proxy or CDN configuration — not in Webflow itself.

For the majority of Webflow users on standard hosting, SSL and CSP are not factors. All reputable chatbot providers, including Knobot, serve widget scripts over HTTPS — Webflow's enforced HTTPS on all published domains will not block them.

What is Webflow's 10,000-character limit and does it affect chatbot embedding?

Webflow enforces a 10,000-character limit on each custom code field — both in Project Settings and on the Embed element. A typical chatbot script tag is a single line under 200 characters, so the limit has no practical impact on embedding a chat widget.

The limit becomes relevant only if you are pasting large inline scripts — for example, a fully inlined analytics library or a complex GTM configuration. If you hit the limit, the solution is to host the script externally (on your own CDN or the vendor's CDN) and reference it with a src attribute rather than pasting the script body inline. Chatbot providers uniformly use the external-hosted pattern (a src pointing to their CDN), so you will not encounter this limit when adding a chat widget.

Frequently asked questions

Which Webflow plan do I need to embed a chatbot?

You need a paid Webflow Site plan (Basic or above) to access Project Settings → Custom Code. The free Starter plan locks out the Custom Code tab entirely. If you want to place the widget in a specific spot using the Embed element (HTML Embed component), that also requires a paid plan. Workspace-level plans (without a paid site plan attached) do not unlock custom code on published sites.

Why is my chatbot not showing up after I paste the script in Webflow?

The most common reason is that you have not published the site after adding the code. Custom code in Webflow only runs on the live published site — it does not execute in the Designer canvas or the preview mode. Click Publish in the top-right corner of the Designer, wait for the publish to complete, then open your live site URL in a new browser tab to verify.

Can I embed a chatbot on one Webflow page only?

Yes. Instead of adding the script to Project Settings → Custom Code (which is site-wide), open the specific page in the Designer, click the gear icon in the Pages panel to open Page Settings, and paste your script into the Before </body> tag field under Custom Code. The widget will only load on that page when the site is published.

Is there a character limit for the Webflow custom code fields?

Yes. Webflow enforces a 10,000-character limit on the Embed element and on each custom code field in Project Settings and Page Settings. A single chatbot script tag is typically under 200 characters, so this limit is not a practical concern for embedding a chatbot. It only becomes relevant if you are pasting large inline scripts.

Does Webflow have a CSP that blocks third-party chatbot scripts?

Standard Webflow-hosted sites (on webflow.io subdomains or connected custom domains) do not apply a restrictive Content Security Policy by default. Third-party scripts added through Project Settings or the Embed element load without any CSP modification. If you are running Webflow behind a custom reverse proxy or CDN that adds its own CSP headers, you would need to add your chatbot vendor's domain to the script-src directive.

What is the difference between Project Settings custom code and the Embed element in Webflow?

Project Settings → Custom Code adds a script to the <head> or before the </body> tag on every page of your site. The Embed element (HTML Embed component) drops an HTML block at a precise location in the visual canvas — useful if you want the widget to appear inside a specific section rather than floating in a corner. For a chat widget that floats over the page, Project Settings is the correct path. The Embed element is better for inline components like forms or maps.

Can I use Knobot on Webflow without a paid Webflow plan?

Not directly via custom code — Webflow requires a paid site plan to access custom code fields. However, you can share the hosted Knobot chat page (knobot.org/c/your-business) as a direct link in your Webflow site's navigation, buttons, or bio links. This gives visitors access to the chatbot without embedding a script, and requires no Webflow plan upgrade.

Sources