Subscribr for Craft CMS

Installation

Requirements

  • Craft CMS 5.3 or later
  • Craft Commerce 5.0 or later
  • PHP 8.2 or later
  • A payment gateway that can store a payment method — or one that can't, see below

Install

composer require justinholtweb/craft-subscribr
php craft plugin/install subscribr

Will it work with my payment provider?

Ask it before you commit to anything:

php craft subscribr/gateways
GATEWAY                  RENEWS       SOURCES  PURCHASE   NOTE
Stripe                   automatic    yes      yes        also a Commerce subscription gateway
Braintree                automatic    yes      yes
Bank transfer            manual       no       yes

  Bank transfer: This gateway cannot store a payment method, so renewals are raised as unpaid
  orders and the subscriber is emailed a link to pay them.

Subscribr never asks whether a gateway "supports subscriptions". It asks whether it can charge a stored token with nobody present — supportsPaymentSources() plus supportsPurchase() — which is true of very nearly every gateway written for Commerce.

A gateway where that is false is not shut out. It renews manually: the renewal is raised as an incomplete order and the subscriber gets a link that drops it into your own checkout. The same screen is in the control panel at Subscribr → Gateways.

Cron

Nothing renews until something sweeps. Three jobs:

*/5 * * * *  php craft subscribr/renewals/run
0    * * * *  php craft subscribr/dunning/run
0    8 * * *  php craft subscribr/gifts/deliver

renewals/run takes --queue, which fans out to Craft's queue with one job per subscription. Use it once you are past a few hundred subscribers, so one slow gateway call cannot hold up the sweep.

The schedule does not drift if a sweep runs late. The next payment date is computed from the date that was due, never from the moment the sweep happened to run — a queue that was busy until 03:07 does not push everybody's billing date seven minutes later every month.

Before you wire up cron, see what a run would do:

php craft subscribr/renewals/due

That takes no money. It lists what is due, what each one would be charged, and whether it would renew automatically or be invoiced.

Your first plan

  1. Subscribr → Plans → New plan. A name, a handle, and a cadence is enough to start.
  2. Pick a recurring price mode. "Locked" is what a subscriber means by price for life; "inherit" means a catalogue price rise reaches existing subscribers at their next renewal.
  3. Add the plan to a product page as an option key on an ordinary add-to-cart form — see Usage.

Permissions

Five, under Subscribr in the user group settings:

PermissionAllows
subscribr-viewSubscriptionsSee the subscriptions index and any subscription
subscribr-manageSubscriptionsPause, resume, cancel, skip, change plan, edit a subscription
subscribr-billSubscriptionsTake a payment: "renew now", retry a declined card
subscribr-managePlansCreate and edit plans and boxes
subscribr-manageDunningCreate and edit dunning sequences

The last two are separate from the first three on purpose: the person who handles a customer's billing question is usually not the person who should be able to change what every plan costs.

More in Commerce

Pairs well with Subscribr

For the storefront side of Craft Commerce. Checkout, subscriptions, bundles, loyalty, B2B and the product feeds that bring shoppers in.