Cart tracking
Choose which carts are recorded, how guests are asked at checkout, which carts are never tracked, when a cart counts as abandoned, and how long records are kept.
- Cart Tracking card: Enable Cart Tracking, Guest Carts, Abandoned After
- Consent card with the three Consent Mode choices
- Tracking Status and Reset to Defaults in the sidebar
Cart Tracking
The master switch. When off, no new carts are recorded and nothing is loaded on your storefront. Carts already recorded are kept, and their emails and links still work.
Also records carts of shoppers who are not signed in, once they type their email at checkout (and, depending on the consent mode, agree). Nothing is recorded for a guest who hasn't given an email.
How long a cart must go without activity before it counts as abandoned. Any change to the cart, or the shopper coming back, restarts the clock.
The sidebar card Tracking Status confirms whether carts are being recorded, and after how many minutes they count as abandoned.
Consent at checkout
The Consent card controls what guests see at checkout about their cart being saved, on both the classic and the block checkout. Signed-in customers are not asked.
Notice: tell guests their cart is saved.
Notice + "No thanks": guests can stop tracking, and their saved cart is deleted.
Checkbox required: nothing is saved until the guest ticks a box.
Default: "We save your cart and email address so we can remind you if you don't finish your order." Leave it empty to show nothing in Notice mode.
Used in the Notice + "No thanks" mode. Default: "No thanks, don't save my cart."
Used in the Checkbox required mode. Default: "Save my cart and email me a reminder if I don't finish my order"
What guests see
| Mode | On the checkout | When is the cart recorded? |
|---|---|---|
| Notice | The notice in small print. Nothing, if the notice is empty. | As soon as the guest types an email. |
| Notice + "No thanks" | The notice, then a "No thanks, don't save my cart." link. | As soon as the guest types an email, unless they click "No thanks". |
| Checkbox required | A checkbox with your label, then the notice. | Only after the box is ticked. Unticking works like "No thanks". |
On the classic checkout this appears under the billing details; on the block checkout, above the checkout block. A short status line confirms the choice: "Thanks, your cart will be saved." or "Okay, your cart is not being saved."
- Signed out, billing details filled in
- Notice and the "No thanks" link
- Signed out, block checkout
- The consent checkbox above the checkout
What "No thanks" does
- The choice is kept in the shopper's WooCommerce session, so the plugin sets no cookie of its own.
- The name and email they typed are forgotten, and their open cart record is deleted (never one that already has an order).
- Nothing more is recorded for the rest of their visit.
Exclusions
Carts that match any exclusion are never recorded, so they are never emailed or counted.
Carts of signed-in users with any of these roles, for example your staff (Administrator, Shop manager), are not recorded.
Product IDs separated by commas, e.g. 12, 34. Hover a product under Products to see its ID. A cart containing any of them is not recorded. Variation IDs work too. Under the field, "Currently:" lists the matching product names, so you can check your IDs. Unknown IDs are dropped when you save.
Tick categories. A cart containing a product from any of them, or from their subcategories, is not recorded.
- Excluded User Roles checkboxes
- Excluded Products with the "Currently: none" line
- Excluded Categories list
Recovery Links
Recovery links restore a cart in one click. They can't be guessed, work only for their own cart, and stop working once the order is paid. See Recovery links.
After this many days a recovery link no longer restores the cart, and the shopper sees a friendly "link has expired" message instead. Links also stop working once the cart's order is paid (or put on hold for offline payment), or the cart expires.
Data & Privacy
Records older than this are deleted automatically every day. Carts that became an order are anonymized instead (email, name and account link removed), so recovered-revenue totals stay correct.
An open cart with no activity for this long expires, so it is no longer chased. A cart never expires while its recovery link still works.
Numbers outside the allowed range are adjusted to the nearest limit when you save. Reset to Defaults in the sidebar restores every setting on this tab.
How guest emails are captured
A tiny script loads on the checkout page only. It reads the billing email and first name fields as the shopper types (about 800 ms after they stop), and also when a field changes, loses focus or is filled in by the browser. The same values are never sent twice, and requests are limited to 20 per minute per visitor. In Checkbox required mode nothing is sent until the box is ticked, and never after "No thanks". This rule is enforced on the server too.
WooCommerce's Store API saves the email on the customer as they type, and the plugin reads it from there when it records the cart. When consent controls are shown, the plugin adds them above the checkout block with a small script.
What is recorded
| Recorded | Never recorded |
|---|---|
| Email address and first name Products, variations, quantities and line totals (incl. tax) Cart total and currency (incl. tax and shipping) Shopper's language Status, dates and a short event timeline | Card or payment details Postal addresses Phone numbers IP addresses (only a keyed hash is used for rate limiting) |
When a cart is saved
- A cart is recorded only when it has products and an email, guest carts are allowed (for guests), consent allows it, and no exclusion applies.
- Changes are collected during a page request and saved once, at the end of it.
- An unchanged cart is re-saved at most every 5 minutes, to keep "last activity" accurate without extra database writes.
- Carts are never recorded from wp-admin pages, cron or WP-CLI. They are also skipped while the plugin itself is restoring a cart.
- Emptying a cart that is still Active and was never emailed deletes its record. Emptying one that was already abandoned or emailed marks it Expired. A cart that already has an order is left alone.
Excluding carts in code
For rules the Exclusions card can't express, developers can skip any cart with one filter. It runs last, after consent and the exclusions:
// Don't track carts under 5.00.
add_filter( 'siteryn_abandoned_cart_should_track', function ( $track, $snapshot ) {
return $snapshot['total'] < 5 ? false : $track;
}, 10, 2 );