Recovering Abandoned Carts
BigCommerce offers a powerful cart recovery system to help merchants recover lost business by effectively converting abandoned carts into orders. Using BigCommerce's built-in Abandoned Cart Saver (opens in a new tab) tool, merchants can automate email campaigns to encourage customers to complete transactions after leaving items in their cart.
This article provides a high-level overview of how headless storefronts can leverage the Abandoned Cart Saver and BigCommerce's APIs to recover abandoned carts.
Abandoned Cart Saver
BigCommerce considers a cart abandoned when a shopper leaves the cart without attempting payment and the cart has been inactive for one hour. Abandoned Cart Saver (opens in a new tab) emails contain a link that routes shoppers back to the cart page where they can complete the order.

To enable the Abandoned Cart Saver notifications on your store, go to Settings > General > Miscellaneous in an active MSF-enabled control panel. To access your Abandoned Cart Emails settings, visit Marketing > Abandoned Cart Emails.

Triggering Abandoned Cart Saver notifications
The Abandoned Cart Saver will trigger under the following circumstances:
- Stencil stores: a logged-in customer adds an item to the cart, then leaves the store without attempting payment.
- Stores using Optimized One-Page Checkout (opens in a new tab): a guest customer adds an item to the cart, begins checkout by entering their email address, then leaves the store without attempting payment.
- Headless stores using custom checkout solutions:
- a logged-in customer with the
accepts_product_review_abandoned_cart_emailproperty set totruecreates a cart, then leaves the store without attempting payment. - a guest customer creates a cart and add his email address to the cart, then leaves the store without attempting payment.
- a logged-in customer with the
Setting up the abandoned cart route
The Abandoned Cart Saver email link points to the Stencil storefront (channel ID 1) by default. To point the Abandoned Cart Saver email link to your headless storefront, you need to set up a recover_abandoned_cart site route.
This operation requires a channel site ID. If you do not know your channel site ID, you can retrieve it by sending a GET request to the Get a Channel Site endpoint.
GET https://api.bigcommerce.com/stores//v3/channels/{channel_id}/site
X-Auth-Token:
Content-Type: application/json
Accept: application/json
You can locate your channel ID by:
- going to Channel Manager > Storefronts in the control panel, clicking on ... next to your headless storefront, and selecting Edit settings from the dropdown
or
- sending a
GETrequest to the Get All Channels endpoint.
To create a recover_abandoned_cart site route, send a POST request to the Create a Site Route endpoint.
POST https://api.bigcommerce.com/stores//v3/sites/{site_id}/routes
X-Auth-Token:
Content-Type: application/json
Accept: application/json
{
"type": "recover_abandoned_cart",
"matching": "*",
"route": "/my-abandoned-cart-page/"
}To test the route creation, send a GET request to the Get a Site's Routes endpoint. The response will contain all of the routes associated with your headless storefront's domain.
Leveraging the Abandoned Carts API
The Abandoned Cart Saver email link contains a token in the form of a t parameter that you can use to call the Abandoned Carts API to get the corresponding cart ID. A headless storefront can then use this cart ID to request the cart details from the Carts API.
Abandoned Cart Saver email link example:
http://commerce-zr8y-teststore-bigcommerce.vercel.app/my-abandoned-cart-page/?t=305c6c15f6f0a3c0929770a538cf1ff7
To get the abandoned cart ID, send a GET request to the Get an Abandoned Cart endpoint.
The response will contain the corresponding cart ID.
GET https://api.bigcommerce.com/stores//v3/abandoned-carts/{token}
X-Auth-Token:
Content-Type: application/json
Accept: application/json
To retrieve the cart details, send a GET request to the Get a Cart endpoint.
GET https://api.bigcommerce.com/stores//v3/carts/{cartId}
X-Auth-Token:
Content-Type: application/json
Accept: application/jsonThe response will contain the cart details.
Implementing cart recovery on headless storefronts
To trigger the abandoned cart recovery sequence, the cart must be associated with a channel ID and be aware of the shopper's email address. Headless storefronts using custom checkout solutions can leverage BigCommerce's Customers and Carts APIs to initiate the abandoned cart recovery sequence.
The following example demonstrates how a headless storefront can recover abandoned cart details without relying on Optimized One-Page Checkout.
-
Link your headless storefront to your sales channel by sending a
POSTrequest to the Create a Site endpoint.Example request: Create a sitePOST https://api.bigcommerce.com/stores//v3/sites X-Auth-Token: Content-Type: application/json Accept: application/json { "url": "http://commerce-zr8y-teststore-bigcommerce.vercel.app", "channel_id": 773240 } -
Using the Site Routes endpoint, create a
recover_abandoned_cartroute.Example request: Create a site routePOST https://api.bigcommerce.com/stores//v3/sites/{site_id}/routes X-Auth-Token: Content-Type: application/json Accept: application/json { "matching": "*", "route": "/my-abandoned-cart-page/", "type": "recover_abandoned_cart" }
Create cart with customer
-
To create a customer, send a
POSTrequest to the Create Customers endpoint. In the request body, setaccepts_product_review_abandoned_cart_emailstotrueto enable Abandoned Cart Saver notifications. This will create a customer account optimized to receive Abandoned Cart Saver emails.Example request: Create customersPOST https://api.bigcommerce.com/stores//v3/customers X-Auth-Token: Content-Type: application/json Accept: application/json [ { "email": "test_user@bigcommerce.com", "first_name": "Jane", "last_name": "Doe", "addresses": [ { "address1": "123 Main St", "address2": "", "address_type": "residential", "city": "Austin", "country_code": "US", "first_name": "Jane", "last_name": "Doe", "phone": "512-111-0000", "postal_code": "78701", "state_or_province": "Texas" } ], "accepts_product_review_abandoned_cart_emails": true, "origin_channel_id": 773240, "channel_ids": [ 773240 ] } ] -
Send a
POSTrequest to the Create a Cart endpoint to create a cart. Include the customer ID and channel ID in the request body so that the URL inserted in transactional emails contains the correct site and routes.Example request: Create a cartPOST https://api.bigcommerce.com/stores//v3/carts X-Auth-Token: Content-Type: application/json Accept: application/json { "base_amount": 25, "cart_amount": 25, "channel_id": 773240, "currency": { "code": "USD" }, "customer_id": 2, "discount_amount": 0, "line_items": [ { "coupon_amount": 0, "coupons": [], "discount_amount": 0, "discounts": [], "extended_list_price": 25, "extended_sale_price": 25, "id": "5572bddf-f24d-4f4a-a1b6-29d4519494a6", "image_url": "https://cdn11.bigcommerce.com/s-hg3tj17dfi/product_images/attribute_rule_images/8_thumb_1629748882.png", "is_mutable": true, "is_require_shipping": true, "list_price": 25, "name": "Short sleeve t-shirt", "parent_id": null, "product_id": 114, "quantity": 1, "sale_price": 25, "sku": "5F6D82D6569C0_8579", "taxable": true, "url": "https://next-storefront2.mybigcommerce.com/ladies-short-sleeve-t-shirt/", "variant_id": 85 } ], "locale": "en", "tax_included": false }
Create cart with guest customer
-
Send a
POSTrequest to the Create a Cart endpoint to create a cart.Example request: Create a cartPOST https://api.bigcommerce.com/stores//v3/carts X-Auth-Token: Content-Type: application/json Accept: application/json { "channel_id": 773240, "line_items": [ { "quantity": 5, "product_id": 191 } ] } -
Send a
POSTrequest to the Add Checkout Billing Address endpoint to add checkout billing address. Include the email address in the request body so that the abandoned cart saver notification could be triggered.Example request: Add checkout billing addressPOST https://api.bigcommerce.com/stores//v3/checkouts/{checkoutId}/billing-address X-Auth-Token: Content-Type: application/json Accept: application/json { "first_name": "Jane", "last_name": "Doe", "email": "jane@example.com", "address1": "123 Main Street", "address2": "", "city": "Austin", "state_or_province": "Texas", "state_or_province_code": "TX", "country_code": "US", "postal_code": "78751", "phone": "1234567890" }
This request creates a cart associated with the headless storefront without using BigCommerce's Optimized One-Page Checkout. Because the checkout is incomplete, the store treats this cart as abandoned and initiates the abandoned cart recovery sequence.
Resources
- Building Storefront Channels
- Open Checkout Quick Start
- Selling Everywhere with Channel Manager (opens in a new tab)
- Using the Abandoned Cart Saver (opens in a new tab)