Skip to main content

Campaign Tracking

Charley Bader avatar
Written by Charley Bader
Updated over a week ago

When a campaign experience is triggered - i.e. the segment matched and all campaign rules matched - a custom event is dispatched to the dataLayer via dataLayer.push() as follows:

{
"event": "iem",
"event_category": "6939ab32d33c187121772953",
"event_action": "6939ab32d33c187121772953 | 6939aa2d42fbd50d5bf6889c | variation",
"event_label": "Campaign Name | Experience Name | variation | matched",
"in_holdout_group": 0,
}

Field Name

Value

event

iem

event_category

CAMPAIGN_ID

event_action

CAMPAIGN_ID | VARIATION_ID | control OR variation

event_label

CAMPAIGN_NAME | EXPERIENCE NAME | control OR variation

in_holdout_group

0 or 1

Matching Controls

If you enable a control for your campaign, we often want to compare users who "would have matched an experience" against those that did. We push events to the dataLayer when a user who is bucketed into the control "would have seen the experience" to allow for comparison.

E.g. for a campaign named "My Campaign" running 50/50 Control against a variation named "V1":

50% of users will have this event dispatched:

{
"event": "iem",
"event_label": "My Campaign | V1 | control | matched"
}

i.e. they "would have seen the V1" at the point this event is dispatched; and 50% of users will have this event dispatched:

{
"event": "iem",
"event_label": "My Campaign | V1 | variation | matched"
}

i.e. they "did see V1" at the point at which this event was matched.

Reporting using these events

The pipe-separated events allow for string-based matching when building reports in third party platforms such as Google Analytics. You can match full or partial event label strings, e.g.

event_label CONTAINS "My Campaign | V1 | control"

vs

event_label CONTAINS "My Campaign | V1 | variation"

Did this answer your question?