· Djangify Updates ·Article

Abandoned Cart Emails in Djangify: Why I Added Them and Why They Start Switched Off

Abandoned Cart Emails in Djangify: Why I Added Them and Why They Start Switched Off
Reading time9 min
Length1,900 words
Last updatedOctober 24, 2026
LevelAll levels

Someone adds your product to their cart, enters their email address at checkout, and then the tab closes. The phone rang, or they wanted to think about it. Whatever the reason, until recently a Djangify site let that person go and never said a word. Now it can send them one reminder email. This post covers what that email is, what the feature gives you as an owner, why it starts switched off, and how to switch it on.

Key takeaways
  • Djangify can send one reminder email to a shopper who leaves items in their cart, once the cart has sat untouched for the wait time you choose (4 hours to start with).
  • It covers logged-in customers and guests who have entered their email at checkout. A visitor who never gives an email address is not recorded.
  • It is off by default, and while it is off no carts are saved at all.
  • Switching it on is one tick box in Shop Settings. Self-hosted sites also need a scheduled job.
  • The email has no discount code and the feature has no recovery report. It is a plain reminder.

Why a cart reminder is worth having

Look at where that person got to. They found your site, read about the product, chose it and gave you their email address. That is most of a purchase. A digital product has no stock to hold and nothing to post, so a cart left behind usually means the buyer was interrupted or wanted a little longer. An email a few hours later puts the items back in front of them while they might have time to finish.

I do not have a recovery rate to quote you. The feature is days old, and I would be wary of anyone who gives you a figure for a site of your size. What I can say is what it costs: nothing per email, no app to install, and no second company holding your customers' email addresses. The saved carts sit in your own site's database, and the email goes out through the same email setup as your order emails.

That fits the reason I built Djangify in the first place. If you sell digital products on your own site, the sales you lose to a closed tab are yours to chase, and the tool for chasing them should belong to you too.

What I added

Here is what happens, in order, from the shopper's side and yours.

  1. The cart is savedA logged-in customer's cart is saved when they add to it. A guest's cart is saved when they type their email address at the guest checkout step. The cart itself is never changed.
  2. The waitNothing happens until the cart has been left alone for the wait time. The default is 4 hours and you can change it.
  3. One emailIt lists the items that are still for sale, at today's prices, with the total. It has a Go back to my cart button and a link to stop cart reminders.
  4. The buttonIt puts the saved items back into the cart in whatever browser the shopper opens it in. It does not log anyone in. A guest lands at checkout with their email already filled in.
  5. A purchase closes the cartThe moment the shopper pays, the saved cart is closed, so nobody gets a reminder for something they already bought.
1Reminder per cart
4 hoursDefault wait
0Carts saved while off

Every email carries a link at the bottom to stop cart reminders. It opens a page that asks the shopper to confirm, so an email scanner that opens the link cannot switch reminders off by accident. Once they confirm, that address never gets a cart reminder again. Email apps that show their own unsubscribe button do the same thing. Stopping cart reminders does not touch order emails or newsletters.

What it does for you as an owner

You get a list to look at. Go to Shop, then Abandoned carts. It is read only. Each row shows the email address, the cart total and a status: Open (saved, still waiting), Reminder sent (with the time, and the time the shopper used the button), Bought, or Skipped. Saved carts are removed after 90 days.

You also get a feature that tries not to annoy people, which matters more than it sounds. It checks before it sends, and it stays quiet in these cases.

Who gets a reminder

A reminder goes out when

  • The shopper is logged in, or gave their email at guest checkout
  • The cart has been left alone for your wait time
  • At least one product in it is still for sale

No reminder when

  • They have bought one of the items since
  • They used the stop link in an earlier email
  • They are unsubscribed from your newsletters
  • The cart was last touched more than 3 days ago
  • Cart reminders are switched off

The 3 day limit is deliberate. If you switch the feature on later, or your schedule stops for a while, nobody gets an email about a cart from last month. If an email fails to send, for example because your email setup has a problem, the cart stays open and the next run tries again. One address gets at most one reminder in a single run, even if it has two saved carts.

Why it is off by default

A new site starts with cart reminders off, and off means off. No carts are saved and no email addresses are kept for it. I made that choice because turning it on means keeping a shopper's email address next to the items in their cart. That is your customers' data, so the decision is yours and I did not want it made for you.

There are practical reasons too. The reminder goes out in your name, through your own email setup, so that has to work first. The button in it uses the Site URL in your Site Settings, so that has to be your real address. And a self-hosted site needs a scheduled job before anything is sent.

If you switch it off again, the next scheduled run removes every saved cart. An address that asked to stop reminders stays on the list without its items, so that request is still respected if you switch reminders on again later.

Privacy

You are keeping a copy of a cart together with an email address so that you can send this reminder. Check that your Privacy Policy says so. The page on managing info pages and policies shows where to edit it.

How to switch it on and test it

The whole thing is one tick box, but a few checks first will save you a confusing afternoon. The guide below keeps your ticks in this browser, so you can come back to it.

Guide

Switch on cart reminders

  1. Check your email setupReminders use the same setup as your order emails.
    Where to look

    If your order emails reach you, the setup works. If you are not sure, read Account Email and Deliverability.

  2. Check your Site URLThe button in the email is built from it.
    Where to look

    Go to Pages, then Site Settings, and make sure the Site URL is your real address.

  3. Update your Privacy PolicyIt should say you keep a copy of a cart with an email address.
  4. Tick the boxShop, Shop Settings, Cart Reminder Emails.
    What to change

    Tick Send cart reminder emails. Leave Hours before the reminder at 4, or change it, then save.

  5. Check the schedule is runningManaged Hosting has nothing to do. Self-hosted sites follow the next section.
  6. Test it with your own cartSet the wait to 0 hours for the test, then put it back.
    The test, step by step

    In a private browser window, add a product to the cart, go to checkout and enter an email address you can read. Do not pay. Run the command by hand, or wait for the next scheduled run. Open the email in a different browser and click Go back to my cart. The items should be back in the cart. Then set Hours before the reminder back to 4.

The scheduled job

The emails are sent by a command, so it has to run on a schedule. Every 15 minutes works well, which means an email can arrive up to 15 minutes after the wait is over. Running it more often is safe, because a cart is only ever emailed once. Until the job is scheduled, carts are saved but no reminder is sent.

Managed Hosting

Nothing to set up. The schedule is already running for you, so ticking the box in Shop Settings is all it takes.

Self-hosted

Schedule the command send_abandoned_cart_emails to run every 15 minutes. You do not have to know how to do that yourself. Copy the prompt below into your AI assistant and let it add the job to your server, then check what it reports back.

Copy this to your AI Copy
Add a scheduled job to my Djangify site that runs every 15 minutes. The command is: python manage.py send_abandoned_cart_emails, run from my site folder using its virtual environment. If my site runs in Docker, use this instead: docker compose exec -T web python manage.py send_abandoned_cart_emails. When it is set up, run the command once by hand and tell me exactly what it printed.

Where it stops

It is one reminder, not a sequence. There is no second or third email, and no discount code in the one that goes out. A visitor who adds to a cart and leaves without giving an email address is not recorded, because there is nobody to write to. The Abandoned carts list shows statuses and times, but it is a list and not a recovery report, so you will be judging results by eye for now.

If you want to see how the other recent additions fit around it, the guest checkout that feeds it is explained in Guest Checkout and the First Password Email, and the full setup page for this feature is Cart Reminder Emails for Abandoned Carts.

Summary
  • One reminder email goes to a shopper who leaves items in their cart, after a wait you set (4 hours by default).
  • Logged-in customers and guests who gave their email are covered. Everyone else is not recorded.
  • The feature starts off, and while it is off no carts are saved. Your customers' data is your decision.
  • To start it: check your email setup, Site URL and Privacy Policy, tick the box in Shop Settings, and make sure the schedule runs.
  • Test it with your own cart before you rely on it.
Keep reading

The Last Changes I Made to Djangify, and Why I Am Stopping

Where cart reminders sit among everything added in September and October.

Read more →

For more on How the Djangify eCommerce Builder Works, click here.


Stay in touch with the latest updates

You are invited to sign up and stay in touch. Unsubscribe any time