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"