Sales

Cart Recovery Rate: How to Calculate It Without Inflating Results

From formula to refunds: calculate your store’s cart recovery rate without inflating results, using an example of 400 checkouts.

By Published 10 min read
Recovered cart, weekly reconciliation, and a 9% rate under the title Cart Recovery Rate: How to Calculate It.

The cart recovery rate shows how many abandoned carts became paid orders after a recovery sequence. The calculation is simple: recovered carts divided by abandoned carts in the same group, multiplied by 100. The result depends on 3 choices made beforehand: which abandonments enter the base, how long a purchase can receive credit, and how canceled orders are handled.

This guide shows how to calculate the recovery rate with a fictional example, choose the base and attribution window, and avoid counting the same order twice. Finally, it explains how to separate attributed sales from sales the message actually generated.

ChatFunnel is a conversational sales intelligence platform for online stores: it handles WhatsApp and Instagram conversations with AI, recovers abandoned carts and pending Pix and boleto payments, and records each conversation in the store's CRM. In ChatFunnel recovery flows, the store reports abandonment and the sequence combines messages, waits, and conditions until the order is confirmed.

How to calculate cart recovery rate

The formula is:

Recovery rate = (recovered carts ÷ abandoned carts) × 100

Shopify describes this formula and counts a cart as recovered when it becomes a completed order within the recovery program's attribution window. If the store had 400 abandoned carts in the group and 36 became paid orders under the rule, the rate is 36 ÷ 400 × 100 = 9%.

Before calculating, write 3 rules:

  1. The base: which abandonments enter the group, such as all interrupted checkouts or only those eligible for WhatsApp.
  2. The window: how long after contact a purchase still counts as recovered.
  3. The adjustments: what happens to duplicate, canceled, or refunded orders.
Cart recovery rate formula: 36 recovered carts divided by 400 abandoned carts, multiplied by 100, equals 9%.
The rate divides recovered carts by abandoned carts in the same group.

Cart recovery rate versus abandonment rate: what is the difference?

The 2 rates measure different purchase stages:

RateWhat it measuresCalculation
Cart abandonment rateHow many carts do not become orders(carts created − completed orders) ÷ carts created × 100
Cart recovery rateHow many abandoned carts returned to purchase after contactrecovered carts ÷ abandoned carts × 100

The abandonment rate shows the size of the problem. The recovery rate shows how much the store reversed. For abandonment causes and the other calculation, read abandoned carts: causes, rate, and how to recover sales.

Which base should you use: all abandonments or only people who received a message?

Start with the event your store records. An anonymous cart may have no contact. An interrupted checkout may include a phone number and purchase number. For a WhatsApp flow, separately count total abandonments and checkouts eligible for the sequence.

To enter the sequence, the checkout needs the store's required data and contact permission. WhatsApp Business policy requires the person to have provided their number and agreed to receive messages. Leaving a phone number at checkout alone is insufficient. The steps for building a sequence are in how to recover carts on WhatsApp.

Consider a fictional week with 500 abandoned checkouts. Of these, 100 do not meet entry rules. The other 400 enter the group, but only 300 receive at least 1 message. At the end of review, 36 checkouts in the group have paid orders within the rule and without full cancellation.

Example measureCalculationResult
Recovery among eligible checkouts36 ÷ 400 × 1009%
Recovery among message recipients36 ÷ 300 × 10012%
Flow reach among eligible checkouts300 ÷ 400 × 10075%

The 9% includes the effect of delivery failures. The 12% measures only the reached portion. If a report switches bases between weeks, it shows an improvement caused only by the changed calculation.

Keep the 400 admitted under fixed rules in the base. Delivery failure or lack of response is not a reason to remove them. Record those outcomes in separate columns. The 100 excluded also need a reason so the team knows whether data, permission, or another condition was missing. When delivery failures rise, the unsent or delayed messages tutorial helps find the cause.

Fictional cart recovery rate: 36 recoveries equal 9% of 400 eligible checkouts and 12% of 300 that received a message.
The same recoveries produce 9% or 12%, depending on the base.

Attribution window: how long does a purchase count as recovered?

An attribution window limits how long a purchase can receive credit from a contact. It also needs a starting point: abandonment, send, click, or reply. Writing only "7 days" leaves the rule incomplete.

The period and accepted interactions vary by channel. That is why 2 dashboards can show different values for the same orders. Check each rule before comparing totals.

In this article's example, the rule is hypothetical: only a purchase linked to the same checkout, paid after a delivered message and within 168 hours of the sequence's first delivery, counts. Each checkout receives at most 1 conversion. The second message does not restart the clock. This window illustrates the calculation and is not a universal recommendation.

A checkout whose first message is delivered Monday at 10 a.m. remains under observation until the following Monday at 10 a.m. Payment at 9:59 a.m. falls inside the window. At 10:01 a.m., it falls outside. A purchase made before the message receives no flow credit.

Close the weekly group only after everyone has completed the period. Until then, mark the report partial. Also set a limit for ending failed delivery attempts so no checkout waits forever for the window to begin.

168-hour attribution window for cart recovery: only payment after the message and within the period counts.
The window starts at the first delivered message and does not restart.

How to avoid counting the same order twice

A store may receive 2 notifications for the same payment. A customer may also receive several reminders before paying. Neither case permits counting the order twice.

Use the checkout number in the abandonment base and the unique order number when checking purchases. Keep the link between them. If the customer creates another checkout, join records only when the platform shows a link or the team confirms it. A similar name and equal amount are insufficient.

The reconciliation spreadsheet can include checkout, group entry, first message delivery, order, payment time, and value after adjustments. Include a reason when a purchase is excluded. Another person can then reach the same total.

In the fictional example, reconciliation follows this path:

StageRemaining total
Payment records received50
After removing 4 duplicate records46 unique orders
After removing 6 orders outside the window40 attributed orders
After removing 4 canceled orders with full refunds36 orders retained

In this example, each order corresponds to a different checkout. The order total is therefore also the recovered cart total. If your store accepts multiple orders per checkout, count the checkout once in the rate and record orders separately.

When email and WhatsApp participate in the same purchase, record both interactions but count the order once in the store total. To divide credit by channel, use a written rule. Adding the full revenue each dashboard attributes to the same purchase inflates the result.

Fictional order reconciliation: from 50 payment records to 36 recovered carts and R$7,200 in attributed revenue.
Each adjustment has a reason recorded in the spreadsheet.

Recovered revenue: how to handle cancellations and refunds

The example's 40 attributed orders are R$200 each, after discounts and excluding shipping. Total paid is R$8,000. 4 receive full R$200 refunds. Attributed revenue after refunds is R$7,200, and the count falls to 36.

A partial refund requires different treatment. If the customer returns 1 item from an order that remains valid, subtract the refunded value from revenue. For the rate, retain or remove the checkout according to the rule written before analysis. One option is to retain it when some paid value remains and there was no full cancellation. Use the same rule every week.

State the date through which refunds were checked. If an order changes after closing, keep the prior report version and record the adjustment. The cart group remains the same.

The R$7,200 is not yet profit. To measure return, subtract applicable costs such as merchandise, messages, and payment fees. Discounts already removed from sale value are not deducted again. To estimate message costs, see the official WhatsApp API pricing guide.

Attributed recovery or incremental sales? How to measure the real effect

A customer may purchase after a reminder because they already intended to return. The attribution rule links the purchase to the flow but does not say how many orders would not exist without the message.

To measure the real effect, compare 2 similar groups: 1 receives the sequence and the other does not. Google describes this logic in Conversion Lift for ads. The reference explains the comparison principle. It does not indicate that ChatFunnel has an incrementality dashboard.

In a recovery test, maintain normal customer service for both groups and change 1 thing at a time. If message, discount, and shipping all change together, the result belongs to the combination. Small samples and differences in buyer profiles also limit conclusions.

Without that test, call the total revenue attributed under the stated rule. If the question concerns conversations before purchase rather than an abandonment-triggered sequence, how to measure AI-assisted sales covers that other group.

Fictional cart recovery test: 9% in the sequence group, 5% in control, and an effect of 4 percentage points.
The difference between groups is the sale the message generated.

Use the recovery rate to choose the next adjustment

The rate helps when you can explain why it changed. If reach fell, check sending failures before changing the text. If delivery held steady and few customers returned to buy, read replies and examine the path to checkout.

Compare groups with the same window and rules. A sequence can increase orders while losing margin to coupons or accumulating refunds. Look at values alongside the percentage before expanding sends.

In ChatFunnel, contact history and statuses received from the store help check the sequence and conversation. The Reports Center shows executions and conversion for each flow. With an identified order and written counting rule, the team separates delivery failure, customer questions, and confirmed purchase without turning every message into a sale in the report. To see this in your store, talk to an expert.

ChatFunnel banner: turn visitors into loyal customers with AI for ecommerce. Talk to an expert

Talk to an expert and see how to check cart recovery in your store

Frequently asked questions about cart recovery rate

How do you calculate cart recovery rate?

Divide recovered carts by abandoned carts in the same group and multiply by 100. With 36 recovered from 400 abandoned, the rate is 9%. Before calculating, define the base, attribution window, and treatment of canceled orders.

What is a good cart recovery rate?

No single number fits every store because each report uses a different base and window. A rate over all abandonments is always lower than one over message recipients. The most useful comparison is with your own store week by week using the same rules.

What is the difference between abandonment rate and recovery rate?

Abandonment rate measures how many carts did not become orders. Recovery rate measures how many of those abandoned carts returned to purchase after contact. The first shows the problem's size; the second shows how much the store reversed.

What is an attribution window in cart recovery?

It is the period in which a purchase still receives credit from a recovery message. The rule must state the starting point, such as the first delivered message, and duration, such as 168 hours. Without this, 2 dashboards may give different results for the same orders.

Does a canceled order count in recovery rate?

No, when cancellation is full and refunded. Remove the order from the count and its value from attributed revenue. For a partial refund, subtract only the refunded value and follow the rule written before analysis.

How do I know whether cart recovery generated incremental sales?

Compare a group receiving the sequence with a similar group that does not. The difference between purchase rates is the message effect. Without this test, call the result attributed revenue.

How do I measure WhatsApp cart recovery?

Separate checkouts eligible for WhatsApp, with a number and contact permission. Track how many received the message and how many paid within the window. Record reach alongside the rate to see whether a decline came from delivery or customer response.

Turning Visitors into Loyal Customers 🩵

Spotted something that needs a correction? Let the ChatFunnel team know. Our editorial standards are in Portuguese: Critérios editoriais (in Portuguese).

AI and automation for your store

See how ChatFunnel runs your store's customer service and sales on WhatsApp, with fast replies and conversations that turn into orders.

Meet ChatFunnel, the No. 1 AI for online stores

Search the blog

Type at least 2 characters. Use the arrow keys to choose and Enter to open.