Subscriptions

Views: 71

Results 1 to 6 of 6
4 Oct 2026, 4:54 AM
#1
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Subscriptions

Subscriptions v1.0.0: subscribe-and-save products with pay-link renewals, for Zen Cart 1.5.8 through 3.0.0, as an encapsulated plugin

GitHub: https://github.com/dbltoe/Subscriptions

Download: https://github.com/dbltoe/Subscriptions/releases/tag/v1.0.0 (also free at https://myzencartzone.com/index.php?main_page=product_info&products_id=34)

Zen Cart: 1.5.8a, 2.0.x, 2.1.0, 2.2.x, 2.3.x and 3.0.0, one package

PHP: 7.4 through 8.5

License: GPL-2.0

What it does

Sell anything your customers buy again and again, on a schedule that fits: coffee every two weeks, great jerky every two months, balsamic vinegar every quarter, oil filters every six months. Zen Cart has had no current subscription plugin for any 2.x release; this is one.

  • Product page: the customer picks One-Time Purchase or an interval you offer (Every 2 Weeks, Every Month), with an optional subscribe-and-save discount shown beside each one.

  • Checkout: a required consent checkbox with your subscription terms, on both the standard checkout and One Page Checkout. The exact terms, time, and IP are saved with each subscription, and the signup email repeats them. Subscriptions need a customer account; guest checkout still works for everything else.

  • Renewals by pay link: before each delivery, the customer gets a Renew Now email. The link fills their cart with the same items and options, and they check out as usual at that day's prices and shipping, with any payment module you have. Nothing is ever charged automatically.

  • My Subscriptions in My Account: Renew Now, skip, pause, resume, change the interval or quantities, cancel.

  • Customers > Subscriptions in the admin: search, status filters, the full history with who did what, the consent record, and your own actions (skip, pause, resume, change date, cancel).

  • A renewal not placed in time is skipped, and the next one is reminded; three missed in a row pause the subscription and the customer is told.

  • Five emails (signup, reminder, paused, canceled, paused after missed renewals), each previewable in the free Preview Email plugin.

Encapsulated. One folder under zc_plugins/, installed from Plugin Manager. No core or template file is changed: the delivery choice is an ordinary product option the plugin manages, so every template already shows it. Uninstalling takes it off every product page.

Installing

  1. Upload zc_plugins/Subscriptions/ so it lands at <store root>/zc_plugins/Subscriptions/v1.0.0/.

  2. Admin > Modules > Plugin Manager > Subscriptions > Install.

  3. Set up the scheduler (below).

  4. Write your terms in Configuration > Subscriptions > Subscription Terms.

  5. Edit a product: in the new Subscription panel, choose Optional or Required, tick its intervals, set a discount if you like, and save.

The scheduler

Zen Cart has no scheduler of its own, so the reminders go out from an address that a cron job opens every 6 hours. Customers > Subscriptions shows the exact command for your store (Scheduler Setup) and when it last ran. In cPanel's Cron Jobs: Minute 17, Hour */6, and * for Day, Month, and Weekday, with a command like:

curl -fsSL "https://www.example.com/index.php?main_page=subscriptions_cron&key=YOUR-KEY" >/dev/null

Any outside cron service that opens a web address works too. Run Renewals Now on the admin page runs it on demand; it's safe to run anytime.

Auto-renewal laws

Several US states, California the strictest, require clear terms before purchase, affirmative consent, a confirmation that repeats the terms, and a way to cancel online. The plugin gives you all four. What your terms say is up to you; the readme has pointers. This isn't legal advice.

Zen Cart 3.0

3.0's cart currently fails on attribute price factors, which is how the discount works on 1.5.8 through 2.3; on 3.0 the plugin applies the same discount another way, automatically. Disabling the plugin in 3.0's Plugin Manager takes the delivery choice off product pages.

The full documentation (readme.html) is inside the plugin and linked from the Plugin Manager panel: configuration, product setup, renewals, the admin page, emails, customizing, translating, upgrading, uninstalling, and troubleshooting.

More with Subscriptions Pro

For stores that want more, there's a paid add-on, Subscriptions Pro, from myzencartzone.com. It renews automatically by charging the card saved at Authorize.Net, and it adds deliveries on a date each year: flowers on her birthday, your anniversary, and Valentine's Day, ordered once. The free plugin stays up to date on its own, and everything above is free.

Reporting a problem

Please include your Zen Cart and PHP versions, your checkout (standard or One Page Checkout), and what you saw. If reminders aren't going out, check when Customers > Subscriptions says the scheduler last ran. For anything else, look in logs/ for a myDEBUG- file from that moment and attach it.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

4 Oct 2026, 7:20 AM
#2
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Re: Subscriptions

Subscriptions Pro v1.0.0 is out

For stores that want more than pay-link renewals, Subscriptions Pro is now on sale at myzencartzone.com. It adds two things to the free plugin and changes nothing in it. The free plugin stays complete on its own, and everything in the first post is still free.

Automatic renewal through Authorize.Net. When a subscription order is paid by Authorize.Net (the Accept.js Payments module or core's AIM), the card is saved at Authorize.Net, never in your store. Each renewal is then created and charged on its due date, with a notice before and a receipt after. A declined card is retried on the days you choose, and if it still won't go through, that subscription goes back to the free plugin's Renew Now emails. A charge whose reply never arrives is looked up by its invoice on the next run, so nobody is charged twice.

Occasions: a delivery on a date every year. Flowers on her birthday, your anniversary and Valentine's Day, ordered once. You keep a list of occasions: fixed dates like Valentine's Day, rules like Mother's Day (the second Sunday in May), and ones where the customer gives the date, like a birthday. A product offering yearly delivery gets an Occasion choice, with month and day lists for the dates customers give. Each occasion becomes its own subscription, and every order notes what to ship by when.

Timing you control. Each delivery ships the number of business days ahead you set, for the whole store or per product: the roses the day before, the balsamic vinegar a week ahead. When the date falls on a weekend, it aims at the Friday before. The customer is told when their order will ship.

Requirements: Zen Cart 1.5.8 through 3.0.0, PHP 7.4 through 8.5, and the free Subscriptions plugin 1.0.0 or later, installed and enabled. Automatic renewal needs Authorize.Net; Occasions work with any payment module.

Price: $59.95 for a Single Store License, with Five Store and Developer tiers. Each includes a year of updates and support, renewable.

https://myzencartzone.com/index.php?main_page=product_info&products_id=35

Questions about Pro are welcome here or through the Support button in its Plugin Manager panel.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

5 Oct 2026, 12:28 AM
#3
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Re: Subscriptions

Subscriptions Pro v1.0.1 is out

This is a small fix for Occasions. When a customer typed an occasion date straight into the text field, it went into the cart, the order and the emails exactly as typed ("3/12", "12th march"), and a date could stay on an occasion that doesn't take one, such as Valentine's Day. That only happened when the month and day lists didn't show, for example with JavaScript turned off or on a template that doesn't run the product page script. Delivery dates, the cart messages, the checkout check and the ship-by notes always read the date correctly, so nothing was delivered on the wrong day. Now the date is written the one way ("March 12") and dropped where it doesn't belong.

For the curious: Zen Cart adds products to the cart before it starts a plugin's usual observers, so the step that tidies the date never heard a product-page add. It now has its own small observer, started in time by the plugin's auto_loader.

Upgrading: upload the v1.0.1 folder beside v1.0.0 in zc_plugins/SubscriptionsPro, then in Modules > Plugin Manager select Subscriptions Pro and click Upgrade. Your settings, saved cards and occasions stay as they are, and Clean Up removes the old folder afterward. Nothing changes in the free Subscriptions plugin.

https://myzencartzone.com/index.php?main_page=product_info&products_id=35

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

5 Oct 2026, 12:29 AM
#4
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Re: Subscriptions

We posted this announcement twice by mistake. Please see the post above.

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

5 Oct 2026, 1:34 AM
#5
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Re: Subscriptions

Subscriptions Pro v1.0.2 is out

This release fixes the scheduler, and we'd recommend it to everyone running Pro. We found these problems in our own testing, not from a report, and haven't seen any of them on a live store, but each one could give you the wrong result:

  • Stock: when one scheduler run renewed the same product more than once (two subscribers due the same day, or everyone who picked Mother's Day), only the last renewal came off that product's stock. Each renewal now takes its own quantity.
  • Saved cards: if the scheduler saved a card (one that wasn't saved at checkout, or on the first run after adding Pro to a store with existing Authorize.Net subscriptions) and that subscription was due the same day, it was moved back to Renew Now emails instead of being charged. Now it's charged. Any subscription that already moved this way goes back to automatic renewal the next time the customer pays a Renew Now email by card.
  • Occasions: a yearly occasion subscription that the customer switched to another interval could be charged one last time as if it were still dated, which put its next delivery a year out. It now renews on its new interval.
  • Overlapping runs: the free plugin lets go of its scheduler lock before Pro starts charging, so if a second run started during that time (a cron service retrying after a timeout, for example), both could charge the same delivery. Pro now holds the lock for its own part. A run that finds it taken says so and leaves the work to the run that has it.

If you had several renewals of the same product on one day since installing Pro, it's worth checking that product's stock count.

For the curious: on every release from 1.5.8 through 3.0.0 the storefront remembers each SELECT for the rest of the page load, and an INSERT, UPDATE or DELETE doesn't clear it. A scheduler run is one page load, so anything that read a row, changed it and read it again got the old row back. Pro now reads those rows with $db->Execute($sql, null, false, 0, true), the fifth argument that skips the cache. If you write plugins, it's worth a look in your own code.

Upgrading: upload the v1.0.2 folder beside your current one in zc_plugins/SubscriptionsPro, then in Modules > Plugin Manager select Subscriptions Pro, click Upgrade, and click Upgrade again on the confirmation screen. Your settings, saved cards and occasions stay as they are, and Clean Up removes the old folder afterward. Nothing changes in the free Subscriptions plugin.

https://myzencartzone.com/index.php?main_page=product_info&products_id=35

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com

5 Oct 2026, 5:30 AM
#6
dbltoe avatar

dbltoe

Totally Zenned

Join Date:
Jan 2004
Location:
N of San Antonio TX
Posts:
9,864
Plugin Contributions:
18

Re: Subscriptions

Subscriptions v1.0.1 (free) is out

This one is for the free plugin. Pro users need it too, since Pro runs on top of it.

It fixes upgrading in Plugin Manager. An Upgrade could stop with "Cannot redeclare class", because Plugin Manager runs the new version's installer while the old version's classes are still loaded. The plugin now loads each class only when it isn't already loaded, so this upgrade and every later one go through cleanly. Nothing else changed: your settings, subscriptions and emails are exactly as they were.

You don't have to upgrade today, since 1.0.0 is working as it is, but doing it now means future upgrades won't trip over this. Pro v1.0.2 runs on either version.

Upgrading: upload the v1.0.1 folder beside your current one in zc_plugins/Subscriptions, then in Modules > Plugin Manager select Subscriptions and click Upgrade, then Upgrade again on the confirmation screen. Clean Up removes the old folder afterward.

The download link in the first post still points to 1.0.0. The current release is here:

https://github.com/dbltoe/Subscriptions/releases/tag/v1.0.1

It's also free at https://myzencartzone.com/index.php?main_page=product_info&products_id=34

Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com