promotion_selected
Every time a promotion is clicked.
CODE
next.analytics.on('promotion_selected', (event) => {});Triggered by promotion.clicked.
Data
Present: always; optional when it may be missing; campaign once the campaign is loaded; priced once the server priced the cart.
| Field | Type | Present | |
|---|---|---|---|
id | string | always | exitIntent({ id }) or data-next-promotion; exit_intent for the exit-intent popup by default. |
type | "exit_intent" | "banner" | always | exit_intent for the exit-intent popup, banner for a marked element. |
name | string | optional | exitIntent({ name }) or data-next-promotion-name, when set. |
creative | string | optional | The popup's template name or image URL, or data-next-promotion-creative. |
action | string | optional | The template button's data-exit-intent-action, such as apply-coupon. |
coupon_code | string | optional | The button's data-coupon-code. |
Example
The envelope next.analytics.on hands out, with data inside. See How analytics works for its fields.
CODE
{
"event_id": "3f2b8c1d9e7a4b6c8d5e2f1a0b9c8d7e",
"event_type": "promotion_selected",
"object": "promotion",
"data": {
"id": "exit_intent",
"type": "exit_intent",
"name": "Exit offer",
"creative": "exit-offer",
"action": "apply-coupon",
"coupon_code": "SAVE10"
},
"created_at": "2026-11-04T08:30:00.000Z",
"session_id": "0b8f3c2d1e4a4f6b9c7d5e3f2a1b0c9d",
"sdk_version": "0.5.0",
"context": {
"page_location": "https://shop.test/checkout/",
"page_title": "Olympus Earbuds",
"page_referrer": "",
"campaign": {
"id": 1310,
"name": "Olympus",
"currency": "USD",
"language": "en"
},
"session_id": "0b8f3c2d1e4a4f6b9c7d5e3f2a1b0c9d",
"attribution": {
"funnel": "Olympus"
},
"browser": {
"user_agent": "Mozilla/5.0 …",
"language": "en-US",
"device_type": "desktop"
}
}
}Sent to
| Destination | As |
|---|---|
| GTM | dl_select_promotion |
| GA4 | select_promotion |
| Meta pixel | Not sent |
| RudderStack | Not sent |