Shopping cart activity

Send shopping cart abandonment or purchased emails using Acoustic Exchange and Acoustic Campaign

A common use case for retailers is to send cart abandonment and purchase emails. When a cart abandonment event occurs, emails 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 then sent the next day or a specific number of days after the abandonment 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 that visitor books elsewhere.

📘

Acoustic Marketing Cloud provides an ability to capture abandonment and purchase activities in real-time and take appropriate action on it.

Setup

To make all the steps work, it is assumed that the retailer or their e-commerce partner can identify when a cart is abandoned and communicate this via one or more API calls to the Acoustic Marketing Cloud. It is also assumed that the retailer is tracking whether the consumer has purchased.

In some cases, the consumer is registered and already has a contact record in Acoustic Campaign. However, a new contact must be added to Engage. Contacts can be added during the registration process or during the process that sends abandonment emails.

The steps

Acoustic Exchange configuration

  1. Verify access to Acoustic Exchange and Acoustic Campaign accounts
  2. Verify the Acoustic Campaign endpoint is available in the Acoustic Exchange account
    Tip: Make sure to increase the count of allowed relational tables. A customer may have maxed out the number of relational tables in their Campaign account
  3. In Acoustic Exchange, create a source endpoint
  4. Register following event types for your source endpoint
  • ibmcartAbandonment
  • ibmcartAbandonmentItem
  • ibmcartPurchase
  • ibmcartPurchaseItem
  • ibmproductView
  • ibmBrowseAbandonment
  • ibmBrowseAbandonmentItem
  1. Create a subscription from the source endpoint to Acoustic Campaign as the destination endpoint

Acoustic Campaign configuration

  1. In Acoustic Campaign, create a relational table (See Appendix for table schema)
  2. Create a relational table query to pull results for your mailing personalization
    Example: Your query criteria could be 'activityType' and 'cartDate' to narrow the results for mailing personalization with possible additional filters such as order by and max row returned.
  3. Create a mailing template that includes a relational table query to display abandoned or purchased content
  4. In Campaign, create a program
  • Contact Source could be the main database
  • Add contacts to the program when an event occurs (e.g. Abandoned Cart, Purchased Cart, etc.)
  • Enable participants to reenter the program on an 'X'-day internal to reenter the same day when qualified for the same event
  • Add a single step to the program and configure the previously created mailing template
  • Add an end track to the step so program participants can reenter the program, if needed.
  • Note: Advanced program users can add additional steps or tracks to expand the use case

Exchange Publisher Endpoint

Develop a mechanism to post 'ibmabandonedCart' and 'ibmabandonedCartItem' events to the Acoustic Exchange source endpoint. (See Appendix for sample payload)

Example: Activity flow for shopping cart abandonment

  1. Consumer abandons a cart
  2. Retailer system recognizes a cart abandonment event
  3. Retailer system imposes the pre-configured delay
    Example: 2 hours after event occurred
  4. Retailer system posts events to Acoustic Exchange
    When available, an email address with the consumer's consent status should be included in the event submission
  5. Acoustic Exchange creates/updates contact in Acoustic Campaign if they do not exist
  6. Acoustic Exchange adds abandoned items with product details and abandon date to relational table in Engage
  7. Acoustic Exchange adds *Commerce - Abandoned a Cart8 behavior to contact in Acoustic Campaign
  8. The contact is added to the program based on the event entry criteria
  9. Acoustic Campaign sends the mailing
  10. Consumer receives a personalized cart abandonment email

Appendix

The following table displays the relational table schema in Acoustic Campaign for shopping cart activities

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 the cart

activityType

Text

Abandoned or purchased

email

Text

Email address (Joined with the 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

This sample payload would result in sending 1 event and add 1 row to the relational table in Acoustic 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": "[email protected]"
        }
    ],
    "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"
                }
            ]
        }
    ]
}

Did this page help you?