Install Visitor ID on Webflow and HubSpot: QA Checklist

To install visitor identification on Webflow, paste the vendor script into Site settings > Custom code (Head code), which applies site-wide once published; custom code needs a paid Site plan or a Core, Growth, Agency or Freelancer Workspace, because the free Starter plan cannot save custom code. On a HubSpot CMS site, paste it into Settings > Content > Pages > Site header HTML for the domain, which every plan can use. Both installs need the same QA pass afterward: confirm the script fires once, respects consent, and reaches the vendor dashboard before any signal reaches sales.

To install visitor identification on Webflow, open Site Settings > Custom Code and paste the vendor script into the Head Code field, which Webflow injects site-wide once you publish; custom code needs a paid Site plan or a Core, Growth, Agency or Freelancer Workspace (the free Starter plan cannot save it), and the Head and Footer code fields hold up to 50,000 characters each. To install on a HubSpot CMS site, open Settings > Content > Pages, choose the domain, and paste the script into Site Header HTML; every HubSpot plan has this field. If your site is not built on HubSpot's CMS, the vendor tag goes wherever that site's code lives (see install by platform), not into HubSpot. Neither install is finished when the script is pasted. Run the QA checklist below before any signal from either platform reaches sales.

This guide is vendor-neutral: it covers where the script goes on each platform and how to prove it fired correctly, not the setup screen of any one visitor-identification tool. If your team already deploys tags through Google Tag Manager, use the GTM install checklist instead; use this page when the script goes directly into the platform.

Why do Webflow and HubSpot need separate install steps?

Webflow and HubSpot both let you add a third-party script without a developer, but they inject code differently, and vendor blog posts describing "visitor identification for Webflow" or HubSpot's own Visitor Identification API cover different problems. Webflow's Custom Code feature is one site-settings field. HubSpot's header HTML is set per domain, can be overridden per page, and can also land on HubSpot quotes. Treat them as two separate installs even if the same vendor script goes into both.

How do you install the script on Webflow?

  1. Open Site Settings > Custom Code. Webflow's documentation places header scripts in the Head Code field and footer scripts in the Footer Code field; footer code runs after page content starts loading, which is the usual home for a visitor-identification pixel that does not need to block render.
  2. Paste the vendor's full snippet, including its opening and closing <script> tags. Webflow's help page says to keep opening and closing tags, and warns that <html>, <body>, or <head> tags in custom code will break the layout.
  3. Confirm the character limit. Webflow's help page gives 50,000 characters each for the Site settings Head code and Footer code fields. If you register scripts through Webflow's Custom Code API instead, that API caps each inline script at 10,000 characters.
  4. Choose site-wide or page-specific scope. Webflow supports both; a company evaluating a new tool should scope the script to a small page set first (see the QA checklist), then widen it after a clean test.
  5. Publish. Webflow's documentation is explicit that "changes require a publish" — staged custom code does not go live until you publish the site, and all staged changes publish together.

How do you install the script on HubSpot?

These steps are for sites built on HubSpot's CMS (Content Hub). If HubSpot only tracks a site that runs elsewhere, install the vendor tag on that site instead; HubSpot's own tracking code and your vendor's tag are separate scripts.

  1. Open the site-wide field. Click the settings icon, go to Content > Pages, and choose the domain under "Choose a domain to edit its settings". In the Site Header HTML section, click Override default settings if you are editing one domain, paste the vendor's snippet, and save. HubSpot's knowledge base lists this for all products and plans.
  2. Pick the scope on purpose. "Default settings for all domains" puts the tag on every connected domain. HubSpot notes that header or footer HTML set for all domains, or for a domain used for quotes, also appears on quotes. If you do not want a visitor identification tag on sales quotes, set it on the website domain only.
  3. Use per-page fields only for a scoped test. In the page editor, Settings > Advanced > Additional code snippets has Head HTML and Footer HTML for one page. Footer HTML is not available on blog posts or knowledge base articles, so put a blog-wide tag in the site header field.
  4. Keep one copy. A tag in the site header and again in a page's Head HTML runs twice on that page. Check templates and modules for older pasted copies before you add a new one.
  5. Or use Google Tag Manager. If the site already loads a GTM container, add the tag there instead and follow the GTM install checklist.
  6. Consent. HubSpot's cookie consent banner controls HubSpot's own tracking cookies. Do not assume it also holds a third-party script you pasted into header HTML; decide with your privacy owner how that tag should behave, and test it (step 4 of the checklist below).

What can HubSpot's own tracking see before you QA?

Before you QA a new visitor-identification script, know what the platform underneath it can and cannot see. HubSpot's own visitor-tracking documentation is explicit: visitors are tracked anonymously through a cookie until they submit a form, click a tracked marketing email link, or are otherwise matched to a known contact; HubSpot "does not track unique visitors" in the traditional sense, so a visitor who clears cookies or switches browsers can appear twice; ad blockers and rejected cookie consent both suppress tracked activity; and manually imported contacts show no page views until they take a tracked action. None of that is specific to any visitor-identification vendor, but it explains why a QA test that "passes" on HubSpot's own dashboard still will not prove a named person browsed your site — the platform is telling you the same thing in its own documentation.

What should you test after either install?

Run this after either install, before the resulting signal reaches a CRM workflow or a Slack-style alert.

Step What to test Pass condition Stop or fix if
1. Script placement The script sits in the documented location (Webflow Head or Footer code, or HubSpot Site Header HTML for the right domain). The script matches the vendor's snippet exactly, with no stray <script>, <head>, or <body> tags. The script is pasted into a page template instead of the site-wide field, or duplicated across a theme footer and a page.
2. Publish/deploy The change is live, not just staged. Webflow shows the change published; HubSpot shows the page rebuilt or redeployed. The tester is looking at a staged draft, not the live URL.
3. Single fire The script fires once per page load on a target page. Browser devtools or the vendor's own dashboard shows one event for one load. The script fires zero times, fires late, or fires more than once (often a duplicate install).
4. Consent behavior The script respects the site's configured consent state. The script does not fire before the documented consent decision is met. Nobody can describe the expected consent behavior, or the script ignores it.
5. Vendor dashboard check The vendor dashboard shows the test visit. The session appears once. The visit is missing; check ad blockers, consent state, and on HubSpot whether the tag was set on the domain you tested.
6. No duplicate tracking Only one copy of the vendor tag runs, and the platform's own tracking still works. One vendor request per page load; HubSpot's own tracking code (if present) still fires once. A second copy sits in a page's Head HTML, a template or a GTM tag.
7. Rollback owner Someone can remove the script quickly if it misbehaves. An owner and the exact settings field or code change are recorded. Nobody can pause the script without a developer.

What does a Webflow install test look like? (hypothetical)

Hypothetical example — names, numbers and dates are illustrative. A ten-person B2B company runs its marketing site on a paid Webflow Site plan and wants to test a visitor-identification vendor before rolling it out everywhere. The team pastes the vendor's script into Site Settings > Custom Code, in the Footer Code field, and scopes the first test to the pricing and comparison pages by temporarily removing the script from Head Code and placing a page-specific version instead. After publishing, the tester opens the pricing page in a clean browser profile, confirms the script fires once using browser devtools, and checks the vendor's dashboard ten minutes later for the test session. It appears once, with no duplicate Webflow analytics event. The team then widens the script to site-wide Footer Code and re-runs the same single-fire and consent checks before telling sales the signal is live.

What should you check after the install passes?

A passing install checklist proves the script is present, fires once, and reaches the vendor. It does not prove the vendor identified a real company, and it does not prove the resulting alert is safe to send to a rep. Use the post-launch QA test script to test the downstream CRM and alert handoff, and use the HubSpot workflow recipe if the next step is building a HubSpot workflow around the new signal. Once matches are flowing, run the match-rate calculator on a real week of data instead of trusting a vendor's stated percentage.

FAQ

Do I need Google Tag Manager to install visitor identification on Webflow or HubSpot?

No. Webflow's Custom Code fields and HubSpot's Site Header HTML field both work without GTM. GTM is a documented alternative on both platforms if you already manage other tags through a container and want one place to control firing rules.

Does Webflow's Custom Code feature require a paid plan?

Yes. Webflow's help center says custom code needs an active paid Site plan or a Core, Growth, Agency or Freelancer Workspace. Since the May 2026 plan change the Site plans are Starter, Basic and Premium, and Starter is the free one, so a Starter site in a free Workspace cannot save custom code. Google Tag Manager does not get around this, because the GTM container snippet is itself custom code.

Why did my visitor-identification script stop working after a Webflow republish?

Webflow's documentation states that custom-code changes are staged and only go live on publish, and that all staged changes publish together. A script that "disappears" after a Webflow update is usually an unpublished change, a page template that overwrote the site-wide setting, or an edit that was reverted.

Does HubSpot's header HTML need a paid plan?

No. HubSpot's knowledge base lists the Site Header HTML and per-page Head HTML fields for all products and plans. What differs is scope: set the tag for the website domain, not for all domains, unless you also want it on quotes.

Can HubSpot's own tracking code replace a visitor-identification vendor?

No. HubSpot's own documentation describes cookie-based, mostly anonymous-until-known tracking with no unique-visitor deduplication; it is not the same product as a company-identification vendor, even though both can run on the same page.

What is the single biggest install mistake on either platform?

Duplicate installs: a script pasted into both a site-wide field and a page-level field, template or GTM tag. Every page view is then counted twice, and the duplicate is easy to miss because nothing looks broken.

Claim ledger

Claim Source-backed boundary Last checked
Webflow custom code is added through Site settings, split into Head and Footer code fields of up to 50,000 characters each; API-registered inline scripts are capped at 10,000 characters. Webflow Help Center and Webflow custom-code API documentation. 2026-09-16
Webflow custom-code changes are staged and only go live when the site is published. Official Webflow custom-code documentation. 2026-09-16
On HubSpot CMS, site-wide code goes in Settings > Content > Pages > Site Header HTML per domain; per-page Head HTML is under Settings > Advanced; footer HTML is unavailable on blog posts and knowledge base articles; all-domain header HTML also appears on quotes; available on all plans. Official HubSpot knowledge base, add code to head or footer HTML. 2026-09-25
Webflow custom code needs a paid Site plan or a Core, Growth, Agency or Freelancer Workspace; Starter is the free Site plan. Webflow Help Center, custom code and May 2026 plans articles. 2026-09-25
HubSpot tracks visitors anonymously via cookie until a known-contact action occurs, does not deduplicate unique visitors, and is limited by ad blockers and consent. Official HubSpot visitor-tracking documentation. 2026-09-16
RB2B ships an Installation Debugger that flags script and consent-tool conflicts, most recently refined in mid-to-late July 2026. Official RB2B changelog. 2026-09-16
GTM Preview and Tag Assistant support inspecting tag-firing behavior around release. Official GTM preview/debug documentation. 2026-09-16

Sources

  1. https://developers.webflow.com/data/docs/working-with-custom-code
  2. https://help.webflow.com/hc/en-us/articles/33961357265299-Custom-code-in-head-and-body-tags
  3. https://knowledge.hubspot.com/website-pages/add-code-to-the-head-or-footer-html-of-hubspot-content
  4. https://help.webflow.com/hc/en-us/articles/51059955082387-Updated-pricing-and-simplified-plans-for-May-2026
  5. https://knowledge.hubspot.com/reports/install-the-hubspot-tracking-code
  6. https://knowledge.hubspot.com/account/how-does-hubspot-track-visitors
  7. https://support.rb2b.com/en/articles/10442291-changelog
  8. https://support.google.com/tagmanager/answer/6107056?hl=en
  9. https://support.google.com/analytics/answer/9212670?hl=en

Reviewed

Scope: B2B visitor identification and lead-magnet operations. We update this guide as the underlying search behaviour changes.