Send shopping cart abandonment or purchased emails using Exchange and Campaign.
A common use case for retailers is to send the cart abandonment and purchase emails. When a cart abandonment event occurs, emails are used to remind consumers that they left items in their shopping cart. The most successful campaigns incorporate personalized messages such as photos and descriptions of the abandoned items or creative for similar/related items. And, when a purchase event occurs, emails are sent for purchase confirmation.
Historically, cart abandonment campaigns have been accomplished using feeds from web analytics or e-commerce partners that contain the abandon events and the cart items. These feeds are typically nightly batches containing cart abandonment and purchase events. Cart abandonment emails are sent the next day or a specific number of days after the abandon to individuals who have not purchased.
Retailers are increasingly interested in having more control over the timing of the messages. Specifically, retailers have requested the ability to trigger immediate messages for real-time cart abandonment scenarios where a consumer may complete their purchase with a competitor in a short time frame. A common example is travel bookings where a visitor may abandon a flight, car rental or hotel reservation, and book somewhere else within minutes. The retailer must attempt to recover the cart quickly before the visitor books elsewhere.
Acoustic provides an ability to capture abandonment and purchase activities in real-time and take appropriate action on it.
Before you begin
To make all the steps work, you or your e-commerce partner can see when a cart is abandoned and communicate this via one or more API calls to Acoustic. You also need to track whether the consumer has purchased.
In some cases, the consumer will be registered and already have a contact record in Campaign. In other cases, a new contact must be added to Campaign. Contacts could be added during the registration process or during the process that sends abandonment emails.
- Verify access to your Exchange and Campaign accounts.
- Verify the Campaign endpoint is available in your Acoustic Exchange account.
Tip: Make sure to contact support if you have exceeded the number relational tables that can be created in your Campaign account.
- In Exchange, create a source endpoint.
- Register following event types for your source endpoint:
- ibmcartAbandonment
- ibmcartAbandonmentItem
- ibmcartPurchase
- ibmcartPurchaseItem
- ibmproductView
- ibmBrowseAbandonment
- ibmBrowseAbandonmentItem
- Next, create a subscription from the source endpoint to Campaign as destination endpoint.
- In Campaign, create a relational table.
- Create a relational table query to pull results for your email personalization.
- Example: The query criteria could be on activityType and cartDate to narrow the result for email personalization. Additional filters such as ‘order by’ and ‘max row returned’ can also be added.
- Create an email template that includes a relational table query to display abandoned or purchased content.
- Develop a mechanism that posts ibmabandonedCart and ibmabandonedCartItem events to the Exchange source endpoint.
- In Campaign, create a program:
- The contact source could be the main database.
- Add contacts to the program when an event occurs (e.g. abandoned cart, purchased cart).
- Allow contacts to allow re-enter in X day interval to allow re-enter on the same day when qualified for same event.
- Add a single step to the program and configure previously created email template.
- Add an end track to the step so participants are moved to the end track after the step is executed. This is so program participants are qualified to re-enter into the program, if needed.
- Register following event types for your source endpoint:
Note: Advanced program users can add additional steps or tracks to expand the use case.
Example of activity flow for shopping cart abandonment
What happens when someone abandons their online shopping cart:
- The consumer abandons a cart.
- The retailer system recognizes cart abandonment event.
- The retailer system imposes pre-configured delay, e.g. 2 hours after the event occurred.
- The retailer system posts events to Exchange. When available, the email address with consent status of the contact should be included in event submission.
- Exchange creates/updates contact in Campaign, if they do not exist.
- Exchange adds abandoned items with product details and abandon date to relational table in Campaign.
- Exchange adds "Commerce - Abandoned a cart" behavior to contact in Campaign.
- The contact (consumer) is added to the program based on the event entry criteria.
- Campaign sends the email.
- The consumer receives personalized cart abandonment email.
Relational table schema in Campaign for shopping cart activity
Relational table field name | Type | Description |
---|---|---|
*cartId (key) | Text | Id of the Cart |
*itemId (key) | Numeric | Id of the item in the cart |
cartDate | Date Time | Date of the activity on cart |
activityType | Text | Abandoned or Purchased |
Text | Email address (Joined with master database) | |
itemCategory | Text | Category of the item |
itemProductId | Text | Product Id |
itemProductName | Text | Product name |
itemDescription | Text | Product description |
itemColor | Text | Product color |
itemSize | Text | Product size |
productURL | Text | Product URL |
productImageURL | Text | Product image URL |
itemQuantity | Numeric | Quantity of the item in the cart |
itemBasePrice | Numeric | Product base price |
Sample payload
This sample payload would results in one universal behavior event, and one row added to the relational table in Campaign.
Note: ibmcartAbandonmentItem is a ‘sub-event’ of ibmcartAbandonment meaning you cannot submit just an abandoned Item event without submitting the parent cart abandon event.
{
"channel": "Web",
"identifiers": [
{
"name": "Email",
"value": "example@acoustic.co"
}
],
"events": [
{
"code": "ibmcartAbandonment",
"timestamp": "2019-10-20T15:08:09Z",
"channel": "Web",
"attributes": [
//Optional if this event will be creating a new Email consent record within Engage marketing db
{
"name": "contactConsent",
"value": "email, opt-in"
},
{
"name": "eventName",
"value": "Cart Abandonment"
}, {
"name": "description",
"value": "Description"
},
{
"name": "orderTotal",
"value": "99.99"
},
{
"name": "campaignName",
"value": "Black Friday"
},
{
"name": "quantity",
"value": "1"
}
]
},
{
"code": "ibmcartAbandonmentItem",
"timestamp": "2019-10-20T15:08:09Z", //Populates cartDate in RT
"attributes": [
//Populates cartId in RT. itemId is calculated by UBX based on the number of items submitted in the event(i.e. batch event submission of 2 events would equal 2 rows added to the RT) If only 1 ibmcartAbandonmentItem is submitted in an event, UBX calculates for this cartId, itemId will be equal to 1.
{
"name": "orderId",
"value": "004"
},
//Populates itemCategory in RT
{
"name": "category",
"value": "Entertainment"
},
//Populates itemProductId in RT
{
"name": "productID",
"value": "xyz-ps4"
},
//Populates itemProductName in RT
{
"name": "productName",
"value": "Playstation 4"
},
//Populates itemDescription in RT
{
"name": "description",
"value": "This is a video game console developed by Sony."
},
//Populates itemColor in RT
{
"name": "color",
"value": "Black"
},
//Populates itemSize in RT
{
"name": "size",
"value": "500GB"
},
//Populates productURL in RT
{
"name": "productURL",
"value": "https://www.playstation.com/en-us/explore/ps4/"
},
//Populates productImageURL in RT
{
"name": "imageURL",
"value": "https://en.wikipedia.org/wiki/PlayStation_4#/media/File:PS4-Console-wDS4.jpg"
},
//Populates itemQuantity in RT
{
"name": "quantity",
"value": "1"
},
//Populates itemBasePrice in RT
{
"name": "basePrice",
"value": "399.99"
}
]
}
]
}