Receive lifecycle events in Marketing Cloud Engagement
Each recipe fires a Journey Builder API event. A journey with that entry source sends the message.
All lifecycle guides · Checked against AXO’s adapters in October 2026.
Before you start
Connect Salesforce Marketing Cloud in AXO first: see Connect Salesforce Marketing Cloud. The integration must be active. In the dashboard, the Install button is off for read-only members.
When AXO sends
A recipe is installed as an ordinary AXO trigger, turned off. Once you turn it on, AXO watches for the moment, waits where the recipe waits, skips people who converted or are in their cooldown, and sends the event. Every lifecycle event needs the person’s marketing consent. A holdout group gets nothing so that the trigger’s lift can be measured. Event names:
- Abandoned cart:
axo.lifecycle.abandoned_cart - Abandoned browse:
axo.lifecycle.abandoned_browse - Abandoned checkout:
axo.lifecycle.abandoned_checkout - High-intent return:
axo.lifecycle.high_intent_return - Lapsed visitor:
axo.lifecycle.lapsed_visitor
See Create a trigger for cooldowns, holdout and fire history.
Build the receiving side
AXO posts a Journey Builder entry event to /interaction/v1/events with three parts: ContactKey, EventDefinitionKey and Data. Data holds flat fields (below), because a data extension stores one value per field. The raw phone number is not part of the default fields.
- Create a data extension for the journey’s entry data with the fields below that you want to keep. Use Text for text fields, Decimal for
cart_valueand prices, and Number for counts and quantities. - In Journey Builder, create a journey and choose API Event as the entry source, using that data extension. Copy the event definition key the entry source shows.
- In AXO, install the recipe with your Marketing Cloud integration as a destination. Paste the key into Journey entry event key (you can skip it when the integration already has
event_definition_keyset). Choose where the ContactKey comes from: the identifier the recipe sends to (the default), the email address, the external id or the AXO profile id. - On the trigger, choose Test fire, enter a test identifier, choose Preview payload to check it, then Send test and Send now once the journey is active.
- Turn the trigger on in AXO (Turn on right after install, or Resume on the trigger).
A person without the chosen ContactKey value is skipped for this destination (sfmc_contact_key_missing in the fire history). To send only some fields under your data extension’s own names, or to include the phone number, install through the API or MCP with mapping.field_map, which maps a field below to a data extension field and sends only the mapped fields.
Fields
Keys of Data when no field map is set. A field with no value is left out of that event.
| Field | Type | Meaning |
|---|---|---|
event_name | text | axo.lifecycle.<recipe_id>, for example axo.lifecycle.abandoned_cart. |
recipe_id | text | The recipe that fired. |
recipe_version | number | The recipe version the trigger was installed with. |
fire_id | text | AXO’s id for this send attempt. |
delivery_id | text | The same on every attempt for one moment and one destination. Use it to drop duplicates. Test sends start with lcd_test_. |
trigger_id | text | The AXO trigger the recipe was installed as. |
occurred_at | text | When AXO fired the event (ISO 8601, UTC). |
site_id | text | Your AXO site id. |
site_domain | text | Your site’s domain. |
profile_id | text | AXO profile id of the person. |
anonymous_id | text | AXO visitor id, when known. |
email | text | Email address, when known. |
email_sha256 | text | SHA-256 of the lowercased, trimmed email, when known. |
external_id | text | Your own customer id, when known. |
consent_basis | text | Always marketing. AXO sends lifecycle events only for people with marketing consent. |
cart_value | number | Cart value as a number, or null when unknown. |
currency | text | ISO 4217 code such as USD, or null. |
resume_url | text | A link back to the cart or page. Real sends carry a vt_token that signs the person back in; test sends carry the plain link. |
page_url | text | The page that started the moment. |
source_event_type | text | The AXO event that started the moment, such as abandon_cart or pageview. |
item_count | number | Number of line items. |
items_json | text | Every line item as JSON text. |
Line items
The first 3 line items, as item_1_… to item_3_… with these fields. Empty when there are fewer items. The full list is in items_json.
| Field | Type | Meaning |
|---|---|---|
product_id | text | Product id (the numeric Shopify id for Shopify catalogs). |
sku | text | SKU. |
name | text | Product name. |
url | text | Product page URL. |
image_url | text | Product image URL. |
price | number | Price as a number. |
quantity | number | Quantity in the cart. Null for viewed products. |