MilkGo
/User Guide
User Guide

06. Subscriptions — Recurring Orders

A subscription is a customer's standing order: "2 litres of Buffalo Milk every morning".

Once you set this up, MilkGo creates today's delivery row automatically every day. You don't enter "Ramesh, 2L Buffalo" by hand each morning — the app does it for you.

Before you start

You need:

  1. 03-products.md — at least one product
  2. 05-customers.md — the customer who's subscribing

Where to find it

Two ways:

  • From the customer's profile → Subscriptions tab → + Add Subscription
  • From the Subscriptions menu (if your nav has it) → + New Subscription → pick the customer

The first way is more common — you usually add a subscription right after creating the customer.

Adding a subscription

  1. Tap + Add Subscription.
  2. Fill in:
FieldExampleRequired?
CustomerRamesh (C103)
ProductBuffalo Milk
Quantity2
Rate₹70 (auto-filled from product default)✓ — can override per customer
FrequencyDaily / Alternate / Weekly / Custom
Custom daysMon, Wed, Fri (only if Custom)conditional
ShiftMorning / Evening / Both
Start dateToday (auto)
End dateblank for ongoingoptional
StatusActive
  1. Tap Save.

From tomorrow morning (or right now if you tap Generate on Deliveries), this subscription will create a delivery row.

Frequencies — what they mean

FrequencyDelivery happens on
DailyEvery day
AlternateEvery other day from the start date — Mon, Wed, Fri, Sun…
WeeklyOnce per week, same day of week as the start date
CustomPick specific days — e.g. Mon, Wed, Fri only

Shifts

ShiftWhen deliveries appear
MorningOn the morning shift only
EveningOn the evening shift only
BothTwo delivery rows per applicable day — morning and evening

Use Both when a customer takes 1L morning + 1L evening, or 2L morning + 1L evening (you'd add two separate subscriptions instead — one per shift, with different qty).

Multiple subscriptions per customer

A customer can have many subscriptions running at once:

  • Buffalo Milk · 2L · Morning
  • Cow Milk · 1L · Morning
  • Curd · 500g · Mon Wed Fri only

Each is independent — pause one without affecting the others. The Deliveries screen groups them per customer so the driver sees one card with all three products.

Pausing & resuming

Going on holiday? Festival shutdown?

  1. Open the subscription.
  2. Tap Pause.
  3. Set the date range — From today, To when you'll resume (or leave open).
  4. Save.

For the paused dates:

  • No delivery row is generated.
  • The customer still exists, still appears in lists.
  • You can resume any time by ending the pause early.

To resume early: open the pause entry → End now → save.

Pro tip: for festival days when all customers pause, use the Subscription Pauses bulk screen if your role has it. Pause every active subscription for 1 day in one tap.

Editing a subscription

Open the subscription → change quantity / frequency / rate / shift → save.

What changes, and when:

  • Future deliveries use the new values from the next generation.
  • Today's already-generated row stays unchanged (it's its own delivery record).
  • Past deliveries are untouched.

So if you edit at 6am before generating today's deliveries, today reflects the change. If you edit at 8pm, it kicks in tomorrow.

Ending a subscription

When a customer stops their order:

  1. Open the subscription.
  2. Set End date = today (or yesterday).
  3. Save.

Or simpler:

  1. Toggle StatusCancelled.
  2. Save.

No more deliveries are generated. Past deliveries stay.

Daily delivery generation

Subscriptions don't deliver milk — they're just templates. The actual delivery rows are created when you tap Generate on the Deliveries screen each morning/evening.

This separation is intentional:

  • You can review and adjust the day's list before going out
  • A subscription change doesn't retroactively create or delete deliveries
  • Each delivery is its own record with its own status, quantity, time, photo

Tips

  • Use the customer's defaults. If you set their default product = Buffalo Milk, default qty = 2, default shift = Morning on the customer profile, the subscription form pre-fills these. One tap to save.
  • One subscription per shift. If a customer takes morning + evening with different products or quantities, add two subscriptions, not one with shift=Both.
  • Snapshot the rate at subscribe time. The subscription stores the rate as of that day. Even if you raise the product's default rate later, this customer keeps the old rate until you edit their subscription. Useful for grandfathering loyal customers.
  • End instead of delete. If a customer pauses temporarily, use Pause; if they stop permanently, set End date. Don't delete — you'll lose the history.

Common mistakes

MistakeFix
Customer says "I want both shifts" — added one subscription with shift=Both, but qty differs morning/eveningEdit to one shift, then add a second subscription for the other shift.
Forgot to set frequency to Custom — got daily by accidentEdit, change frequency to Custom, pick days.
Pause didn't take effect todayIf you'd already tapped Generate before pausing, today's row exists. Manually skip it on the Deliveries screen.
Customer code on subscription is wrongSubscription is tied to a customer ID, not their code. The code is just for display. Edit the customer if needed.

What's next?

You're set up. Daily deliveries will now flow automatically.

07-deliveries.md — your every-morning screen

Related