Skip to main content
Free3 minutesBeginner

Webflow Integration

Add Zenovay analytics to your Webflow site through Site Settings → Custom Code → Head. Works on every paid Webflow Site Plan.

webflowcmsno-codeintegrationtracking-script
Last updated:

Add Zenovay to any Webflow site through Site Settings → Custom Code. Webflow has first-class support for analytics tags, so this is one of the cleanest CMS integrations.

Webflow Custom Code requires a paid Site Plan (Basic, CMS, Business, or Ecommerce) on the site itself. Workspace plans alone are not enough.

Quick Start

  1. Copy your tracking snippet from the Zenovay dashboard.
  2. In the Webflow Designer, open Site Settings → Custom Code.
  3. Paste the snippet into Head code.
  4. Save changes.
  5. Click Publish in the top-right of the Designer.

Installation

  1. Open your project in the Webflow Designer.
  2. Click the gear icon in the left sidebar to open Site Settings.
  3. Open the Custom Code tab.
  4. Paste this snippet into the Head code box:
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
  1. Click Save Changes.
  2. Return to the Designer and click Publish → choose your domains → Publish to Selected Domains.

Page-specific Custom Code

For tracking only on specific pages (e.g. campaign landing pages):

  1. Select the page in the Pages panel.
  2. Click the gear icon → Page Settings.
  3. Scroll to Custom Code → Inside <head> tag.
  4. Paste the same snippet.
  5. Save and Publish.

Page-level code is appended after site-wide code — don't paste in both scopes or you'll double-count.

Verify your installation

  1. Open your published site in an incognito window.
  2. View source — you should see <script defer data-tracking-code=...> in the <head>.
  3. Check the Zenovay real-time view — your visit appears within ~30 seconds.

Tracking custom events

After the tracker loads, call window.zenovay() from any Webflow HTML Embed element:

<script>
  document.addEventListener('DOMContentLoaded', () => {
    const cta = document.querySelector('[data-zv-cta]');
    cta?.addEventListener('click', () => {
      window.zenovay?.('track', 'cta_clicked', {
        location: cta.dataset.zvCta,
        page: window.location.pathname,
      });
    });
  });
</script>

Then add data-zv-cta="hero-primary" to your button via the Custom attributes section in the Designer.

Tracking Webflow Ecommerce purchases

For Webflow Ecommerce stores, fire a purchase event on the Order Confirmation page template via an HTML Embed:

<script>
  document.addEventListener('DOMContentLoaded', () => {
    const total = document.querySelector('[data-wf-order-total]')?.textContent;
    const orderId = window.location.pathname.split('/').pop();
    if (window.zenovay && total) {
      window.zenovay('track', 'purchase', {
        transaction_id: orderId,
        revenue: parseFloat(total.replace(/[^0-9.]/g, '')),
        currency: 'USD',
      });
    }
  });
</script>

For higher accuracy (refunds, subscriptions), use server-side webhooks instead.

Identify logged-in members (Memberstack)

<script>
  window.$memberstackDom?.getCurrentMember().then(({ data: member }) => {
    if (member && window.zenovay) {
      window.zenovay('identify', {
        userId: member.id,
        email: member.auth?.email,
        plan: member.planConnections?.[0]?.planName,
      });
    }
  });
</script>

Troubleshooting

No data. Check the site is on a paid Site Plan — Free and Workspace-only plans cannot inject scripts. Then confirm you clicked Publish in the Designer.

Half the pages tracked. You probably added page-level Head code that's overriding site-wide. Move the snippet to Site Settings → Custom Code only.

Events not firing. Wrap your custom event listeners in DOMContentLoaded — Zenovay is deferred and loads slightly after initial render.

Double pageviews. Snippet pasted in both Site Settings and an HTML Embed. Remove one.

Plan requirements

PlanCustom CodeNotes
Starter (free)Custom Code disabled
BasicStatic sites
CMSDynamic CMS sites
BusinessHigher form limits
EcommercePlus revenue tracking

Privacy

For cookieless tracking add data-cookieless="true":

<script defer
        data-tracking-code="YOUR_TRACKING_CODE"
        data-cookieless="true"
        src="https://api.zenovay.com/z.js"></script>

Next steps

Was this article helpful?