Skip to content

Apex Web SDK · Measure

The tracking script browsers can't block. First-party web tracking that never gets blocked.

One lightweight tag that runs through your own domain. Safari, Firefox, and Brave treat it as first-party and never block it. Captures pageviews, clicks, UTMs, and identity across sessions, then feeds the Apex intelligence layer so every experiment, lifecycle message, and revenue event joins on one identity.

No credit card to start.

What teams use it for

The questions people actually ask.

  • How do I track visitors when Safari and ad blockers keep eating my analytics events?

    Apex.js runs through your own domain with a same-origin request, so Safari, Firefox, Brave, and uBlock treat it as a first-party call and leave it alone. You get the same reliability as a server-side tag without maintaining the ETL pipeline yourself.

  • How do I stitch anonymous visitors to known users across devices and sessions?

    Apex.js keeps a persistent first-party identifier in your own storage, then merges it with the Apex identity graph the moment a visitor identifies (email form, login, purchase). Anonymous history rolls into the user's Apex Profile automatically, including visits from a phone before they signed up on a laptop.

  • Can I replace my GA4 script with Apex.js, or do I run both?

    Most teams run both for a migration period. Apex imports GA4 aggregate data so your historical channel benchmarks stay consistent while first-party attribution proves out. Once the numbers reconcile, teams usually drop GA4 and keep Apex.js alone, but there's no forced cutover.

What flows in

What Apex receives from Apex Web SDK.

From Apex Web SDK

  • Pageviews, clicks, scroll depth, and time on page
  • Form submissions and field-level interactions
  • Custom events with typed properties
  • UTM parameters and referrer chains stitched to sessions
  • Identity resolution across anonymous and known users
  • Experiment variant exposure and conversion attribution

What it powers

Where this data shows up.

  • Experiments

    Capture variant exposure and conversion events with first-party reliability so every A/B test reaches significance faster.

  • Intelligence

    Feed the activation, engagement, and retention models with the behavioral signals they need to score every account in real time.

  • Communications

    Trigger lifecycle messages the moment a user hits a meaningful milestone, no cron jobs, no data lag.

Setup · SDK Install

Connect Apex Web SDK.

Drop one script tag into your site's <head>, pass your workspace key, and you're done. The snippet auto-captures the common events and exposes a simple apex() API for anything custom. Works with every framework, every CMS, and every tag manager.

Setup docs · All integrations

FAQ

Apex Web SDK and Apex, answered.

  • Does Apex.js work with my tag manager?

    Yes. You can load Apex.js via Google Tag Manager, Segment, Tealium, or any other tag manager. You can also load it directly via a `<script>` tag in your HTML head. The snippet is designed to coexist with other tags without conflict.

  • Will Apex.js slow down my site?

    The script is under 15 KB gzipped and loads asynchronously so it never blocks paint or interactivity. All data collection is non-blocking, Apex batches and sends events in the background, respecting your site's main-thread budget.

  • How does it survive Safari's Intelligent Tracking Prevention?

    Apex.js runs on your own domain (configured as a CNAME), so from Safari's perspective it's a first-party call. ITP applies expiry rules to third-party cookies and scripts; Apex's first-party storage sits outside those rules, preserving the identifier for the full 1-year lifespan.

  • Can I track custom events, or just pageviews?

    Both. Auto-captured events cover pageviews, clicks on common elements, form submissions, and scroll depth. For everything else, you can call `apex.track('event_name', { property: value })` from anywhere in your code. Custom events flow into the same identity graph as auto-captured ones.

  • Does it work with Next.js, React, Vue, and other SPAs?

    Yes. The snippet works with any framework, and an npm package (`@apex/web`) provides typed helpers for React, Vue, and Svelte. Client-side route changes are captured automatically.

  • What happens if a user has Do Not Track enabled?

    Apex.js respects DNT by default. Visitors with DNT set do not get a first-party identifier and their events are either dropped or aggregated per your configuration. You can configure the opt-in behaviour from the Apex dashboard.

  • How is this different from Segment or Rudderstack?

    Segment and Rudderstack are generic CDPs, they fan events out to your other tools. Apex.js feeds directly into the Apex intelligence layer, where the same data powers experiments, lifecycle messaging, scoring, and attribution. You can still forward events to other destinations, but you don't need a CDP in the middle.

Your move

Connect Apex Web SDK this week.

Start free, then attach this source. One live feed is enough to start the loop.