Oak Cliff Coffee Roasters Subscription checkout: solution overview

Back to shop

Solution overview

A simple subscription shop. Customers build a box of anything sold on subscription, choose how often each item arrives, see exactly what they'll be charged and when, and check out on Stripe's secure page.

The customer journey

  1. Build a boxPick coffees, a cadence for each (e.g., Rosemont Crest every week, a single origin every 4 weeks), and 1–4 bags of each.
  2. See the scheduleBefore paying, the box shows today's total and each upcoming charge date, with what's included on each date.
  3. Check out with StripeStripe's hosted checkout collects the email, shipping address and card. The card number never touches our site.
  4. ConfirmationToday's charge is taken, a receipt is emailed, and the confirmation page shows the real schedule from Stripe.
  5. Self-serviceCustomers sign in to Stripe's customer portal with an emailed link to update their card or address, view invoices, or cancel.

What it's built on

Stripe is the single source of truth

Products, prices, customers, addresses, cards, subscriptions, invoices and receipts all live in Stripe. The app has no database of its own.

Catalog managed in Stripe

Any active product with a recurring price appears on the site automatically. There's no second catalog to keep in sync.

Stripe-hosted screens

Checkout and the customer portal are built and maintained by Stripe, including card security (PCI), 3-D Secure, Apple Pay and receipts.

Very little to maintain

One small app (a web page plus a few server functions) hosted on Vercel. No plugins, no server, no database.

The catalog: mirrored from today's site

The test catalog matches oakcliffcoffee.com/subscribe. It was imported automatically, and the same import will set up the live catalog.

Blends

Rosemont Crest, Hidden City Espresso, Victor Prosper's Dark Roast, O.C. Decaf. $25 per bag.

Single Origins

Full Roaster's Choice, Sweet Choice, Tangy Choice. $30 per bag.

Every coffee comes in 12oz bags, 1 to 4 per delivery, every 1, 2 or 4 weeks, exactly as today. Bags are a flat price each, plus a flat delivery fee (see Delivery fee below).

Cadences: why everything is in weeks

Stripe can combine items with different cadences into one subscription, as long as each cadence is a multiple of the shortest one in the box. Stripe never combines weekly with monthly. Today's cadences all fit this rule:

1 wk2 wk4 wk

So every box becomes a single subscription with one charge on each billing day, even a box that mixes cadences. That's something the current site can't do. If longer cadences are added later, 8, 12 and 24 weeks also work. The only combination that splits into two subscriptions is 8 weeks with 12 weeks and nothing more frequent. "Every 4 weeks" means 13 deliveries a year, not 12. Worth labeling clearly.

Delivery fee

Delivery is a flat $9, and it's charged once per delivery schedule, not once per item and not once per interval.

Shorter and longer schedules ship together

An every-2-weeks or every-4-weeks item can travel in the same package as a weekly item, so it doesn't need a delivery of its own. When a box has a 1-week item and a 2-week item, the customer pays one $9 delivery fee (billed weekly). The 2-week item simply rides along with every other weekly delivery.

Weekly + every 2 weeks

One delivery fee: $9 per week. The 2-week item ships with every second weekly delivery.

Weekly + every 2 + every 4 weeks

Still one delivery fee: $9 per week. Everything lines up with the weekly delivery.

Every 2 weeks + every 4 weeks

One delivery fee: $9 every 2 weeks.

More bags on one schedule

No change. Three bags every week is still one $9 delivery fee.

The fee follows the same rule Stripe uses to combine items into one subscription: a schedule joins another when it's a multiple of the shorter one. In the shop, the box shows "Included with weekly delivery" on the longer schedule, so there's no surprise on the total.

Remaining to-do items

Must = needed before go-live. Should = strongly recommended. Later = nice to have.

How to operationalize

Day-to-day tasks, side by side. The left column describes a typical WooCommerce Subscriptions + Stripe setup; adjust anything that differs from how Oak Cliff runs today.

Task
Today: WooCommerce Subscriptions + Stripe
New: Stripe-native subscriptions
Where the data lives
WooCommerceSplit: subscriptions, schedules and orders live in WordPress; cards and payments live in Stripe.
NewStripe only. One place to look.
Add a product or cadence
WooCommerceCreate or edit a subscription product (or its variations) in WordPress admin.
NewStripe Dashboard → Products. Add a recurring price (interval: week, count 1/2/4/8/12/24). It appears on the site immediately.
Change a price
WooCommerceEdit the product price. Existing subscriptions keep their original price unless changed one by one.
NewAdd a new price and archive the old one. New customers get the new price; existing subscribers stay on the old price until moved (can be done in bulk).
Retire a product
WooCommerceUnpublish or mark it out of stock.
NewArchive the product or price in Stripe. It disappears from the site; existing subscriptions keep running until changed.
Know what to ship
WooCommerceRenewal orders appear under WooCommerce → Orders, often with label-printing plugins.
NewPaid invoices in Stripe list the items and shipping address. The exact daily workflow is a to-do item.
Customer updates card or address
WooCommerceMy Account page on the website.
NewStripe customer portal ("Manage my subscription"), signed in with an emailed link.
Customer cancels
WooCommerceMy Account, or staff cancel in WordPress admin.
NewCustomer portal, or staff cancel in the Stripe Dashboard.
Customer changes items or cadence
WooCommerceSubscription switching in My Account (if enabled), or staff edit the subscription.
NewStaff edit the subscription in the Stripe Dashboard (add, remove or change items), or the customer builds a new box.
Failed payments
WooCommerceWooCommerce retry rules and emails, using the Stripe plugin.
NewStripe Smart Retries and automatic "update your card" emails, set up once in Stripe's Billing settings.
Refunds
WooCommerceRefund the order in WooCommerce (which refunds through Stripe).
NewRefund the payment directly in the Stripe Dashboard.
Customer emails
WooCommerceWooCommerce email templates.
NewStripe receipts and billing emails, branded with your logo and colors in Stripe settings.
Customer support lookup
WooCommerceSearch subscriptions and orders in WordPress, then cross-check payments in Stripe.
NewSearch by email in the Stripe Dashboard: subscriptions, invoices, payments and address in one view.
Reporting
WooCommerceWooCommerce Subscriptions reports.
NewStripe Billing analytics (recurring revenue, subscriber counts, churn) plus CSV exports.
Sales tax
WooCommerceWooCommerce tax settings or a tax plugin.
NewStripe Tax, if needed (a to-do item).
Software upkeep
WooCommerceRegular WordPress, WooCommerce, Subscriptions and Stripe plugin updates, compatibility testing, and WordPress hosting.
NewNo routine upkeep. One small app on Vercel; occasional library update. Stripe maintains checkout, the portal and billing.
Costs
WooCommerceAnnual WooCommerce Subscriptions license, WordPress hosting, and Stripe card processing (2.9% + 30¢ per charge).
NewStripe card processing (2.9% + 30¢), plus the Stripe Billing fee (0.7% of subscription revenue), plus Vercel hosting on the existing Simplefield plan.

Stripe rates are Stripe's published standard US pricing as of September 2026; negotiated rates may differ.