Giorgio Gnoli – Consulente CRM e Temporary Manager

SFMC Tips #323: Marketing Cloud Next – Trigger carrello abbandonato

La release Summer ’26 di Marketing Cloud Next Growth & Advanced Editions ha introdotto la feature Marketing Triggers per i retailer.

Marketing Triggers offre attualmente sei tipologie di trigger. In questo articolo utilizzeremo il trigger Abandoned Shopping Cart per spiegare il processo completo, dalla raccolta degli eventi con il Data Cloud Web SDK fino all’invio delle email con Marketing Cloud Next.

Nota: Negli ambienti Sandbox e nei Salesforce Developer Org (SDO), la voce Marketing Features > Triggers potrebbe non essere disponibile, anche nelle org di produzione. Prima di iniziare, verifica che questa feature sia attiva e accessibile nel tuo ambiente.

Importante: L’implementazione di Marketing Triggers varia in base al sito web e ai relativi requisiti. La configurazione mostrata in questo articolo è da intendersi come un singolo esempio. Per i siti in produzione, ti consiglio vivamente di non replicare questa implementazione così com’è, ma di adattarla alle esigenze specifiche del tuo business e all’architettura del tuo sito.

Passaggi di configurazione

1. Creare una pagina CloudPages (pagina vuota)

Essendo un utente Marketing Cloud Engagement, uso spesso CloudPages per creare pagine demo. Anche in questo articolo utilizzerò CloudPages.

Per prima cosa, pubblica un URL temporaneo per la tua pagina CloudPages.

https://mcxkknz3m0zj3jqsxn4hm3dp3q-4.pub.sfmc-content.com/uvccdeoyfgx

Data Cloud Web SDK Demo – Abandoned Cart Final

2. Creare una Website Connection

Dal Setup, cerca Websites & Mobile Apps e clicca su New Connection.

Crea la Website Connection con le seguenti impostazioni.

  • Connection Name: Abandoned Cart Demo
  • Connection Type: A Custom Website
  • Website Base URL: l’URL CloudPages pubblicato indicato di seguito
https://mcxkknz3m0zj3jqsxn4hm3dp3q-4.pub.sfmc-content.com/uvccdeoyfgx

Per questo articolo, utilizza il seguente schema.

{
"records": [
{
"masterLabel": "Cart",
"developerName": "cart",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "interactionName",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "attributeShoppingCartId",
"developerName": "attributeShoppingCartId",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "attributeEngagementChannelAction",
"developerName": "attributeEngagementChannelAction",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "attributeAdjustedTotalProductAmount",
"developerName": "attributeAdjustedTotalProductAmount",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "attributeTotalProductAmount",
"developerName": "attributeTotalProductAmount",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "attributeTotalProductQuantity",
"developerName": "attributeTotalProductQuantity",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "attributeProductImageUrl",
"developerName": "attributeProductImageUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "attributeProductViewUrl",
"developerName": "attributeProductViewUrl",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Cart Item",
"developerName": "cartItem",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "cartEventId",
"developerName": "cartEventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectId",
"developerName": "catalogObjectId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectType",
"developerName": "catalogObjectType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "price",
"developerName": "price",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "quantity",
"developerName": "quantity",
"dataType": "Number",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "attributeProductName",
"developerName": "attributeProductName",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Cart Details",
"developerName": "cartDetails",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "interactionName",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sourceLocale",
"developerName": "sourceLocale",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "shoppingCartId",
"developerName": "shoppingCartId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "engagementChannelAction",
"developerName": "engagementChannelAction",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "adjustedTotalProductAmount",
"developerName": "adjustedTotalProductAmount",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "totalProductAmount",
"developerName": "totalProductAmount",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "totalProductQuantity",
"developerName": "totalProductQuantity",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "catalogObjectId",
"developerName": "catalogObjectId",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "productName",
"developerName": "productName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "productImageUrl",
"developerName": "productImageUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "productViewUrl",
"developerName": "productViewUrl",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "currency",
"developerName": "currency",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "operationQuantity",
"developerName": "operationQuantity",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "shoppingCartEngagementId",
"developerName": "shoppingCartEngagementId",
"dataType": "Text",
"isDataRequired": true
}
]
},
{
"masterLabel": "Cart Item Details",
"developerName": "cartItemDetails",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "shoppingCartEngagementId",
"developerName": "shoppingCartEngagementId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectId",
"developerName": "catalogObjectId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "catalogObjectType",
"developerName": "catalogObjectType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "quantity",
"developerName": "quantity",
"dataType": "Number",
"isDataRequired": true
},
{
"masterLabel": "price",
"developerName": "price",
"dataType": "Number",
"isDataRequired": false
},
{
"masterLabel": "productName",
"developerName": "productName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "currency",
"developerName": "currency",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Order",
"developerName": "order",
"category": "Engagement",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "interactionName",
"developerName": "interactionName",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "orderId",
"developerName": "orderId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "attributeShoppingCartId",
"developerName": "attributeShoppingCartId",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "attributeEngagementChannelAction",
"developerName": "attributeEngagementChannelAction",
"dataType": "Text",
"isDataRequired": false
}
]
},
{
"masterLabel": "Identity",
"developerName": "identity",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "firstName",
"developerName": "firstName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "isAnonymous",
"developerName": "isAnonymous",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "lastName",
"developerName": "lastName",
"dataType": "Text",
"isDataRequired": false
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
}
]
},
{
"masterLabel": "Party Identification",
"developerName": "partyIdentification",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "IDName",
"developerName": "IDName",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "IDType",
"developerName": "IDType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "userId",
"developerName": "userId",
"dataType": "Text",
"isDataRequired": true
}
]
},
{
"masterLabel": "Contact Point Email",
"developerName": "contactPointEmail",
"category": "Profile",
"externalDataTranFields": [
{
"masterLabel": "category",
"developerName": "category",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "dateTime",
"developerName": "dateTime",
"dataType": "DateTime",
"isDataRequired": true
},
{
"masterLabel": "deviceId",
"developerName": "deviceId",
"dataType": "Text",
"isDataRequired": true,
"primaryIndexOrder": 1
},
{
"masterLabel": "email",
"developerName": "email",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventId",
"developerName": "eventId",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "eventType",
"developerName": "eventType",
"dataType": "Text",
"isDataRequired": true
},
{
"masterLabel": "sessionId",
"developerName": "sessionId",
"dataType": "Text",
"isDataRequired": true
}
]
}
]
}

Suggerimento: Uno schema è il blueprint dei dati inviati a Data Cloud. Definisce in anticipo i campi e la struttura che verranno inviati dal sito web.

Carica lo schema scaricato dalla schermata seguente.

Salva la configurazione così com’è.

La Website Connection è stata creata.

Passiamo ora ai Data Stream.

3. Creare i Data Stream

Dalla tab Data Streams, clicca su New in alto a destra.

Seleziona Website come sorgente dati.

Per Website, seleziona la Website Connection creata in precedenza e seleziona tutti gli eventi.

Procedi nella schermata successiva senza apportare modifiche.

Per i dati Profile, lascia la modalità di aggiornamento su Partial (aggiorna solo i campi presenti nei dati in ingresso) e distribuisci.

I Data Stream sono ora creati: fungono da punto di ingresso per l’importazione dei dati dal tuo sito web.

Suggerimento: Gli eventi Profile creano Data Stream separati per ogni oggetto. Gli eventi di engagement come Cart e Order, invece, vengono consolidati in un unico Data Stream chiamato Behavioral Events.

4. Creare i Data Mapping

Una volta creati i Data Stream, vengono automaticamente generati anche i corrispondenti Data Lake Object (DLO). Per poter utilizzare questi dati in Marketing Cloud Next, è necessario mappare correttamente i Data Lake Object (DLO) sui Data Model Object (DMO) standard.

Il seguente documento della Guida contiene il riferimento di mapping utilizzato in questo articolo.

Suggerimento: La pagina di gestione Marketing Features > Triggers nel Setup verifica se i mapping DMO sono configurati correttamente. Continua finché tutti gli errori di mapping DMO non sono stati risolti.

① Behavioral Events

Innanzitutto, apri il Data Stream Behavioral Events generato e inizia il mapping tra DLO e DMO.

Aggiungi i seguenti DMO

Sul lato DMO della canvas di mapping (parte destra dello schermo), aggiungi i seguenti DMO.

  • Product Order Engagement
  • Shopping Cart Engagement
  • Shopping Cart Product Engagement

Mapping utilizzati in questo articolo

1. Dati comuni a tutti gli eventi

eventId (Primary key)
→ Product Order Engagement:Product Order Engagement ID (Primary key)
→ Shopping Cart Product Engagement:Shopping Cart Product Engagement ID (Primary key)
dateTime
→ Product Order Engagement: Engagement Date Time
→ Shopping Cart Engagement: Engagement Date Time
→ Shopping Cart Product Engagement: Engagement Date Time
deviceId
→ Product Order Engagement: Individual
→ Shopping Cart Engagement: Individual
→ Shopping Cart Product Engagement: Individual

Suggerimento: Mappa prima i campi dateTime ed eventId, che sono i campi chiave primaria. In questo modo potrai salvare la configurazione di mapping.

Nota: In teoria, mappando eventId su Shopping Cart Engagement ID in Shopping Cart Engagement dovrebbero essere abil


Tradotto e adattato da SFMC Tips #323 : Marketing Cloud Next: Abandoned Shopping Cart Trigger di Nobuyuki Watanabe (@marketingcloudtips), pubblicato originariamente su Medium. Traduzione autorizzata dall’autore.

Torna in alto