Automate Abandoned Cart Reminders
What is Cart Abandonment Messaging?
Customers frequently add products to their cart and leave your site or app without purchasing. This leaves valuable revenue potential untapped! Following up with the user with a personalized, timely reminder of their added items, potentially with discounts or other incentives, can drive purchase volume.
Requirements
To enable Abandoned Cart messaging with Lifecycle Optimizer, you'll need:
- The latest JavaScript tag on your site.
- The API, configured to sync users' cart data each time it is updated. This requires a one-time setup by your developer using the Purchase API or addToCart script.
- When using the Purchase API, the "incomplete" parameter must be used to identify items added to a cart but not purchased.
- The Purchase API's "channel" parameter must also be set to app or online to determine where the purchase was made - from your app or your website.
- An abandoned-cart template or push notification copy that can reference the abandoned items. Both template and push notification use Zephyr.
- The sailthru_hid cookie set from a previous user email click or signup. This allows the system to track user activity.
- For more information on cookies, see the Understand and Use Cookies documentation.
Note: The Cart Channel Check feature needs to be enabled on your account. Contact support for assistance. For more information about setting the cart's channel, go to the Abandoned Shopping Carts documentation.
How it Works
When a known user is detected -- based on their existing cookie or new login -- has added items to their cart. Marigold Engage by Sailthru waits a standard 30 minutes from the user's last pageview before considering the session "inactive". For mobile app users, the system waits 5 minutes from the time the app is closed or abandoned. At that time, the user enters your Abandoned Cart flow.
Note: There is a short lag from the app closure to the event and Lifecycle Optimizer firing. It may be closer to 7 minutes for a push to be received. After any additional wait time you choose to add to the flow, Lifecycle Optimizer takes action, sending a message to the user about their abandoned cart. That message can contain the specific cart items, enticing the user to resume their session and make a purchase. If you're already sending Abandoned Cart emails using the API without Lifecycle Optimizer, see the information in the FAQ below on the differences between these methods and how to migrate to the recommended Lifecycle Optimizer-powered method that is described on this page.
Build a Flow Manually
Once the above requirements are met:
- In Lifecycle Optimizer, create a New Flow.
- Click the default Entry and select Cart Abandoned from the Edit Entry panel's dropdown list.
- Build out the steps you wish to include in your flow. Generally, these include a Wait step and an Action step.
- Marketers often select a 4-6 hour Wait period.
- As an Action, select Send Email or Send Push Notification and set your email template or push notification content.
- To send on the most effective channel, add a Cart Channel Check step. This will branch your flow based on the abandoned cart platform.
Build a Flow with a Recipe
Once the above requirements are met:
- In Lifecycle Optimizer, create a New Flow.
- Click the Recipe book in the toolbar and select Cart Abandoned from the available Lifecycle Optimizer Recipes. This will build a default abandoned cart flow for you.
- Select a Wait before sending a message. Marketers often wait 4-6 hours after the session has ended.
- As an Action, select your Abandoned Cart template. Change the Send Email step to Send Push Notification to build a mobile flow.
Reminder: See the FAQ below before activating this flow if you are currently using the "reminder template" to send abandoned cart emails through the API.
Basic Abandon Cart Flow
The following is a basic flow for Abandoned Cart messaging. It uses a Cart Abandon Entry and a Cart Channel Check step.
Troubleshooting
While testing your new Abandoned Cart LO entry for your Lifecycle Optimizer flow, you may notice that your test user is not entering the flow or some users did not enter the Abandon Cart flow after launching the LO flow. Check the following:- Are the Purchase API or the addToCart JS API configured on your site to pass cart items?
- Does your site have the newest JS added to it?
- Does your browser have the sailthru_hid cookie set? This allows Marigold Engage by Sailthru to identify you and track pageviews back to your user profile.
JavaScript
For the Abandoned Cart LO flow to work, your site must run the newest JS and pass cart items. The API lets the system know when and what items were added to the user's cart. The JS tracks a user's session activity and will know when a user has stopped browsing the site, and therefore abandoned their cart.sailthru_hid
More commonly, a user's information isn't passed back because the sailthru_hid cookie isn't set. The cookie can be set in two ways:- By clicking through an email. This is available out-of-the-box and does not require any additional set up; however, it is required your emails are enabled for click tracking for the cookie to drop through an email click.
- On signup or registration. This is not available out-of-the-box. Your server will need to make a GET/user API to request to retrieve the cookie value for a user's email address, then set the value as the sailthru_hid cookie on the user's browser.
If your site is not setting the cookie on signup or registration, the system can only know who a user is when they have clicked through an email. You or your user may not have a cookie set on the browser if an email was not clicked recently. If the cookie is not set, then the JS will not be able to attribute the page views back to the platform and enter the user into the LO flow.
Frequently Asked Questions
Does this work with mobile app activity/inactivity?Yes. The updated Cart Abandoned trigger will trigger a flow when a cart is abandoned on either your website or your mobile app.
To register incomplete purchases from your mobile app properly, you must set the channel field to 'app'. If the channel is left blank or set to 'online', then the trigger assumes the cart abandon happened via your website.
{
"email": "example@sailthru.com",
"incomplete": true,
"channel": "app",
"items": [
{
"qty": 2,
"title": "Water Bottle",
"price": 1099,
"id": 1234,
"url": "https://example.com/1234/water_bottle" }
]
}
How is this better than the previous API-only implementation of abandon cart?
For standard commerce implementation, there's NO additional development needed to use Lifecycle Optimizer's Abandon Cart Entry. Standard implementation includes the use of our latest on-site JavaScript tag, and the use of either the Purchase API or the on-site tag "add to cart" function. Just like Lifecycle Optimizer, all three methods are included free with any account. Additionally, this method takes into account your user's realtime browsing activity rather than setting a fixed amount of time to wait after the last cart addition in order to consider the cart abandoned.
Can I switch to the Lifecycle Optimizer Abandon Cart functionality from my existing server-side use of the Purchase API?
Yes! The Purchase API is still needed to send the items added to a cart, but you no longer need to hard-code a template name and wait time. If you're using this server-side integration, you should remove those parameters (reminder_template and reminder_time) before activating an Abandoned Cart flow to prevent users from receiving multiple messages for the same abandoned cart. Developers should continue using the "incomplete" parameter when sending non-purchased items to represent that they have been added to a cart. For more information on preparing either Abandoned Cart method, see Abandoned Shopping Carts in the Transactionals section.