Skip to main content

Dual-Strategy Abandoned Cart and Checkout Recovery in Brevo

Nayan Kulshreshtha avatar
Written by Nayan Kulshreshtha
Updated yesterday

Understanding Abandoned Cart and Abandoned Checkout Workflows and How to Set Them Up in Brevo PushOwl

A full-coverage abandoned cart recovery strategy requires two separate automations that work together, leveraging specific E-commerce and Custom Events captured from Shopify by PushOwl and fed into Brevo.

1. Understanding the Customer Journey and Identification

The core difference between the two flows is Identification. A new visitor is typically only identified (and therefore available for email capture and abandoned cart recovery automation trigger) after submitting their email address at checkout and clicking the marketing acceptance checkbox. Here are the events that are tracked by Brevo from Shopify:

  • E-commerce Event: cart_updated

    • Role: The primary trigger for the Cart Abandonment Flow and tracks content updates in the cart.

  • Custom Event: checkout_started

    • Role: The primary trigger for the Checkout Abandonment Flow.

  • Custom Event: checkout_contact_info_submitted

    • Role: Crucial for identifying new subscribers and contacts who submit their email address during the checkout process for the first time.

  • E-commerce Event: placed an order or Custom Event: order_completed

    • Role: The Mandatory Exit Condition for both recovery flows (stops subsequent emails).

2. The Dual Automation Setup (with Exit Conditions)

The automations must use complementary Exit Conditions to ensure customers move logically through the funnel and do not receive redundant emails.

Automation A: Abandoned Cart (cart_updated based)

  • Trigger: E-commerce Event: cart_updated.

  • Restart Condition: E-commerce Event: shopping_cart_updated (Ensures the clock resets if the customer changes their mind and updates the cart).

  • Exit Conditions:

    • placed_an_order OR order_completed (having both in place is suggested)

    • Cart_deleted to ensure the contacts exit the automation if they remove all the articles from their cart

    • Custom Event: checkout_started (Key: Forces the user to exit the cart flow and enter the more precise checkout flow).

Automation B: Abandoned Checkout (Identification Events)

  • Trigger (Multiple): Custom Events: checkout_started OR checkout_address_info_submitted (Captures users identified late in the funnel).

  • Restart Condition: Custom Event: checkout_started (Resets the timer if the user re-enters the checkout page).

  • Exit Conditions:

    • placed_an_order OR order_completed

    • E-commerce Event: shopping_cart_updated (Key: Forces the user to exit the checkout flow and enter the Cart flow if they go back and update their cart again).

    • Cart_deleted to ensure the contacts exit the automation if they remove all the articles from their cart

3. Configuring Dynamic Email Content (The Variables)

Dynamic blocks are necessary to display the abandoned products using data variables pulled from the triggered event.

  • Workflow Data Source (Automation Settings):

    • Selection: Always choose "Latest instance of an event" for flows that include restart conditions.

    • Purpose: Ensures the dynamic email content reflects the final, most recent state of the abandoned cart/checkout.

Within the email design, add a dynamic content block and select checkout_started form the custom event if creating the checkout_started automation:

  • "Complete Checkout" Button Link:

    • Variable Path: Event Data > Custom Events > checkout_started > checkout_url.

    • Action: Redirects the user directly to their pre-filled checkout page.

  • Dynamic Product Block Data Source:

    • Selection: Event Data > Custom Events > checkout_started > items.

    • Purpose: Sets the dynamic block to loop through the array of abandoned product items.

  • Add images and text elements to the dynamic block

  • Product Title Formatting

    • Variable Path: Event Data > Custom Events > checkout_started > items > title

  • Product Price Formatting (In the price field):

    • Variable Path: Event Data > Custom Events > checkout_started > items > line_price.

    • Technical Tip: Use the filter number_format:2 to limit the displayed price to two decimal places.

  • Product Image Link:

    • Variable Path: Event Data > Custom Events > checkout_started > items > variant > image > SRC > .

    • Purpose: Ensures the image corresponds to the correct product variant.

4. Configuring Dynamic Email Content (The Variables) for Cart updated automation:

  • Within the email design, add a dynamic content block and select cart_updated from the Ecommerce event if creating the cart updated automation.

  • "Complete Checkout" Button Link:

    • Variable Path: Event Data > Ecommerce Events > Cart_updated > checkout_url.

    • Action: Redirects the user directly to their pre-filled checkout page.

  • Dynamic Product Block Data Source:

    • Selection: Event Data > Ecommerce Events > Cart_updated > items

    • Purpose: Sets the dynamic block to loop through the array of abandoned product items.

  • Add images and text elements to the dynamic block

  • Product Title Formatting

    • Variable Path: Event Data > Ecommerce Events > Cart_updated > items > name >

  • Product Price Formatting (In the price field):

    • Variable Path: Event Data > Ecommerce Events > Cart_updated > items > price

    • Technical Tip: Use the filter floatformat:2 to limit the displayed price to two decimal places.

  • Product Image Link:

    • Variable Path: Event Data > Ecommerce Events > Cart_updated > items > image

    • Purpose: Ensures the image corresponds to the correct product.

5. Localizing Abandonment Emails with Event Filters

To localize the abandonment emails, you must create duplicate automations for each language and apply an Event Filter directly to the trigger.

  • The Strategy: Use the product's URL path associated with the abandoned item to segment the audience.

  • Example (German Automation):

    • Add an Event Filter to the cart_updated trigger.

    • Filter Condition: product_url contains the full language path (e.g., abc.com/de).

  • Example (French Automation):

    • Add an Event Filter to the cart_updated trigger.

    • Filter Condition: product_url does not contain /de, /en, /es, etc.

  • Result: This results in multiple, highly targeted, localized automations that work concurrently without clashing.

By implementing this dual-automation strategy, you ensure that your recovery efforts are both comprehensive and contextually relevant, capturing potential lost revenue at every stage of the funnel without overwhelming your customers. Success lies in the precise configuration of exit conditions—ensuring a seamless transition from cart to checkout flows—and the use of dynamic variables to provide a personalized, frictionless return to the shopping experience. Furthermore, by leveraging event filters to localize your content, you can maintain a globally consistent brand voice that respects the specific needs of your diverse audience. Ultimately, this technical synergy between Shopify and Brevo PushOwl transforms stagnant data into an active, high-converting recovery engine.

Did this answer your question?