Receive lifecycle events in Marketing Cloud Next
Each recipe writes one axo_lifecycle_event record to Data 360. A flow that starts from new records 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
For a Marketing Cloud integration with mc_edition set to advanced, AXO sends each event as one record to the Data 360 Ingestion API object axo_lifecycle_event, through the connector named in the integration’s connector_name. The record carries the email only as its SHA-256 hash (left blank when the site is in passive mode) and never the raw email or phone number.
- In Data 360 Setup, open your Ingestion API connector and upload the schema file from /salesforce/axo-data360-ingestion.yaml. It declares
axo_lifecycle_event. A connector created for AXO’s standing data stream needs the current file uploaded again to gain the object. - Create an Ingestion API data stream for
axo_lifecycle_event: category Engagement, primary keydelivery_id, event time fieldoccurred_at. Keep every field. - Map the stream to a data model object, and relate
email_sha256,external_idoranonymous_idto the identities you already resolve. - In Marketing Cloud Next, build a flow that starts when a new record arrives in that object, and add its message steps. Menu names vary by org and release.
- In AXO, install the recipe with the integration as a destination. The object name is
axo_lifecycle_eventunless you change it at install; it must match the object in the connector’s schema. Send a test from the trigger’s Test fire button, then turn the trigger on (Turn on right after install, or Resume on the trigger).
Text fields with no value are sent as empty text and numbers with no value as null. delivery_id is the primary key, so a retried send of the same moment updates the record already there.
Fields
Fields of the axo_lifecycle_event record, in schema order.
| Field | Type | Meaning |
|---|---|---|
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_. |
fire_id | text | AXO’s id for this send attempt. |
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. |
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_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. |