Analytics integrations
Analytics integrations send what Personizely does on your site, such as which A/B test variation a visitor saw or which popup they submitted, to the analytics tools you already use. They let you break down funnels, retention and session recordings by Personizely campaigns and widgets. Each one uses the tool's script that's already on your pages, so there's nothing to install besides turning it on.
Available on: all platforms. The tool's own script must be on your pages.
Set up
- Install the analytics tool on your site as usual (its JavaScript snippet in your theme or tag manager).
- In Personizely, go to Settings → Integrations, find the tool and click Enable. No credentials are needed.
- Open your site in a normal window and trigger a campaign or widget, then check the tool's live view or debugger.
For Google Analytics 4 and Google Tag Manager, see Google Analytics 4 and GTM.
What's sent, in common
All analytics integrations react to the same Personizely events:
Personizely event | Happens when |
|---|---|
Campaign view | A visitor sees a campaign variation or the control, on each page view where the campaign runs for them |
Widget view | A widget is displayed (or would have been, for a widget A/B test's control group) |
Widget click | A button, image or product button that does something is clicked |
Widget submit | A form or survey is submitted |
Widget spin | A wheel of fortune is spun |
Widget succeed | A countdown timer reaches zero, or a cart progress bar reaches its goal |
Widget coupon copy / coupon apply | A code is copied, or applied to the cart (Shopify) |
- Events are sent after Personizely has recorded them, a moment after they happen.
- Nothing is sent in Preview and QA campaigns, for visitors excluded by Traffic filtering and bots, or for Scheduling, stopping and deploying winners.
- If the tool's script isn't on the page when the event happens, that event is skipped and nothing breaks.
- Variation names. For A/B tests, the control is called Original. For personalizations, the variation is the target's name, and its control group is <target name> - Control.
Segment, PostHog, Heap and Mixpanel (for widgets) receive the event names and properties below:
Event name | Properties |
|---|---|
campaign_view | source (Personizely), campaign_id, campaign_name, variation_id, variation_name, control |
widget_view, widget_click, widget_submit, widget_spin, widget_succeed, widget_coupon_copy, widget_coupon_apply | source, widget_id, widget_name, experiment_id (in a widget A/B test), variation_id, variation_name, control |
variation_id is empty for the control. Agencies using white label see their brand name in source.
Segment
Personizely calls Segment's analytics.track() with the events and properties above, so they reach every destination connected to your Segment source.
How to use it:
- In your warehouse or BI tool, join campaign_view to orders by user to compare variations on your own metrics.
- In destinations such as Amplitude or Braze, build cohorts from campaign_view where variation_name is a given value.
- Call analytics.identify() on your site as usual. Personizely's events use whatever identity Segment's script holds on the page.
PostHog
Personizely sends the events above with posthog.capture().
How to use it:
- Insights → Trends or Funnels: add campaign_view as the first step, then your conversion events, and break down by variation_name. Filter on campaign_name to look at one test.
- Cohorts: "Performed campaign_view where variation_name = Variation B" to compare retention or later behavior.
- Session replay: filter recordings by the campaign_view event and its properties to watch sessions of one variation.
These are regular events, not PostHog feature flags, so they don't appear in PostHog's own Experiments product.
Heap
Personizely sends the events above with heap.track().
How to use it:
- Define an event from campaign_view and segment by the variation_name property.
- Build a funnel from campaign_view to checkout and group it by variation_name.
- Create a segment of users who performed widget_submit to compare subscribers with other visitors.
Mixpanel
Mixpanel receives campaigns in its experiment format and widgets as regular events:
Event | Properties |
|---|---|
$experiment_started (for every campaign view) | Experiment name (the campaign's name), Variant name (the variation's name; for personalizations, the target's name, or <target name> - Control) |
widget_view, widget_click, widget_submit, … | widget_id, widget_name, experiment_id, variation_id, variation_name, control |
How to use it:
- Mixpanel's Experiments report reads $experiment_started with Experiment name and Variant name, so Personizely tests show up there. Pick the campaign as the experiment and your conversion event as the metric.
- In Funnels or Insights, break down by Variant name for any campaign, or by widget_name for popups.
Microsoft Clarity
Clarity doesn't receive events. Instead, Personizely adds custom tags to the visitor's Clarity session:
Tag | Set on | Value |
|---|---|---|
source | Every campaign and widget event | Personizely |
campaign_name | Campaign views | The campaign's name |
variation_name | Campaign views, and widget events in a widget A/B test | The variation's name |
widget_name | Widget events | The widget's name |
experiment_id | Widget events in a widget A/B test | The widget A/B test's ID |
control | Widget events in a widget A/B test | true or false |
How to use it:
- In Recordings or Heatmaps, open Filters → Custom tags and pick variation_name to watch sessions or compare heatmaps of one variation.
- Filter by widget_name to watch how visitors react to a popup.
Tags aren't paired with each other. A visitor who sees two tests in one session has both campaign names and both variation names on the session, so give variations names that include the test, such as "Hero – B", to keep filters unambiguous.
Zuko
Zuko form analytics receives session attributes that segment your form reports:
Attribute | Value |
|---|---|
Personizely Campaign <campaign name> | Variation <variation name> (Variation Original for the control) |
Personizely Widget <widget name> | Variation <variation name> (the widget's name if the variation has none) |
How to use it: in Zuko, segment a form's report by the campaign attribute to see whether a variation changes form abandonment or field errors, for example on a checkout or lead form you're testing. The attribute is set once Personizely records the campaign or widget event on the page, so form activity recorded earlier in that page view may not carry it.
Klar
Klar receives campaigns only (widgets aren't sent). For each campaign view, Personizely sends Klar's A/B group event with:
Field | Value |
|---|---|
experimentName | The campaign's name |
variantName | Variation <variation name> (Variation Original for the control; for personalizations, Variation <target name> or Variation <target name> - Control) |
On Shopify storefronts, it's published through Shopify's customer events, where Klar's pixel picks it up. Elsewhere, it's queued for Klar's script.
How to use it: in Klar, analyze orders, contribution margin and customer lifetime value by A/B group for each Personizely campaign, alongside your marketing spend data.
Behavior details and limitations
- Count users, not events. Campaign views repeat on every page view in the campaign. Use unique users or "first time" options when comparing variations.
- Numbers won't match Personizely reports exactly. Each tool has its own sessions, identity, consent handling and ad-blocker losses. Use Personizely's Reading campaign reports and Statistics methodology to call tests.
- Consent is the tool's. Personizely hands events to the tool's script on the page; whether the tool stores them depends on its own consent setup.
- Single-page apps. On themes that change pages without a reload, campaign views are sent again for each detected page where the campaign runs.
Troubleshooting
- No events in the tool → the tool's script isn't on the page, or loads after the event. Check the integration is enabled, and test outside preview.
- Events arrive without a user → the tool hasn't identified the visitor yet. Identification is up to your tool's setup.
- Clarity filters show no sessions → custom tags take a while to appear in Clarity after the session ends.