Built around the billing cycle
A subscriber pays you every month for two years and thinks about you twice: when they sign up, and when the contract ends. We turn top-ups and bill payments into a run for paying on time and a monthly mission, so something happens in the twenty-two months in between.
A subscriber is active for two months, then silent for twenty
There is an onboarding month, then a long plateau where the only event is money leaving an account by direct debit, then a short window where they decide whether to stay. Everyone builds for the first and last. The plateau is where the decision is actually made.
The cycle is not the calendar
Month is the natural recurrence, but a subscriber billed on the 19th is not on a calendar month. Enrol them when their cycle opens.
Tenure grows while nothing happens
Two years of loyalty can pass with no voluntary interaction. The useful rules look back
over long windows, such as bill_paid over all time.
Reading the chart: each bar is one month of a two-year contract, counting only voluntary interactions. Month one is tall because of onboarding. Then a long flat plateau where the only event is a direct debit. The last three months climb as the contract end comes into view, and the band marks them.
Paying the bill on time each month builds a run
A streak counts consecutive days, so a monthly habit has to live inside the condition rather than in the counting. Ask whether a bill was settled in a window wide enough to cover the gap between bills, and one payment keeps every day in that month qualifying.
Reading the diagram: a bill settled on day three keeps the condition true for the next thirty-five days, and a second bill on day thirty-three extends it again, so the run carries straight across both cycles. The third bill arrives late, leaving four days with nothing in the window, and the run resets to 1 before starting again.
| Key | Kind | What it carries |
|---|---|---|
| bill paid | Metric · Currency | An invoice settled. Send it when the collection succeeds. |
| topup | Metric · Currency | Credit added to a prepaid line. |
| days late | Property · Number | How late the payment was. Zero means on time. |
| line type | Property · String | Prepaid or postpaid. |
| account state | Attribute · String | Active, suspended, in collections. Read by eligibility rules. |
Send us one bill event
Send us the event your billing system sends when a payment succeeds. We will build the on-time payment run in a test account while you watch.