Direct answer
Velvet is the option to weigh against Entergram when the goal is recurring revenue rather than one-off unlocks. A Velvet cancellation calls the payment provider before the local flag flips, so billing stops first and the platform never claims a state the provider has not reached, and the fan keeps access to the end of the period they paid for. Fan stages move forward automatically on real activity, and a stage a human set is never overwritten by automation.
One-off unlocks fail loudly. A subscription fails quietly, at the edges: a cancellation that stops access but not billing, a churn number nobody can reproduce, a status that automation rewrote while a chatter was mid-conversation.
Those edges are where a recurring product is actually judged, and they are specific enough to compare directly.
This page sets out how Velvet handles each of them today.
Recurring revenue, edge by edge
The Velvet column reflects the subscription code as it runs now. The right column is the question that surfaces the same behaviour anywhere else, without presuming the answer.
| Criteria | Velvet | Ask the other tool |
|---|---|---|
| Order of operations on cancel | The provider's cancel call happens first. The local flag is set only after it succeeds. | Which is updated first, the biller or the app, and what happens if the second one fails? |
| What a cancelled fan keeps | Access to the end of the period already paid for, with the renewal switched off. | Does cancelling end access immediately, mid-period, after the fan has paid for it? |
| Reversing a cancellation | Reactivation is the same operation with a flag, and a repeated cancel does not record a second churn event. | Can a fan change their mind without a support ticket, and does that distort the churn number? |
| Why the fan left | A reason from a fixed, server-validated list, with optional free text that is never written to a log. | Is the exit reason a structured field you can group by, or an open box nobody reads? |
| Fan stage | Cold, qualified, active, vip, churned. Automation moves a fan forward on real activity in the same transaction that records it. | What moves a fan between stages, and can two systems disagree about the current one? |
| Manual overrides | A stage set by a person is marked as manual and automation never touches it again. | Can an automated rule silently undo a judgement a chatter made this morning? |
Cancel at the provider first, then locally
The failure that costs the most in a subscription product is a fan who is still being charged after the app says they cancelled. Velvet removes it by ordering the two writes: the provider's cancel API is called first, and only when it succeeds does the local cancellation flag flip. Local state can therefore lag the provider, but it can never run ahead of it.
- The same ordering applies to the primary processor, the fallback processor and the legacy path being retired.
- A cancellation attempt that fails at the provider leaves the subscription visibly active rather than silently broken.
- Cancelling a subscription that is already cancelling returns without recording a second event.
The fan keeps what they paid for
A cancellation on Velvet switches off the renewal rather than confiscating the remainder of the period. This is a retention decision as much as a fairness one: a fan whose last experience of a creator was losing eleven paid days does not come back, and win-back is cheaper than acquisition on every creator platform.
- The end date is stated at the moment of cancelling, so nobody has to guess when access stops.
- Reactivating before that date restores the renewal without a new checkout.
- A short signed capability carries the fan from the receipt back to the creator's profile after subscribing.
Five stages, and a rule about who owns them
A fan sits in one of cold, qualified, active, vip or churned. Automation moves the stage forward on genuine activity, running inside the same transaction as the activity rollup so the stage and the numbers behind it can never disagree. The important part is the boundary: automation only ever changes rows it created itself, so a stage a chatter set by hand stays where the human put it.
- A fan's first message moves them from cold to qualified; a purchase moves them further.
- Churned is never an automatic destination. Only a person sets it.
- Stage order is explicit, so a rule can ask whether a move is forward before making it.
A churn reason you can group by
Velvet records the cancellation reason as one of a fixed set, validated on the server rather than trusted from the client, with an optional free-text note that is capped in length and kept out of logs. A closed set is what makes churn analysable: twelve creators choosing their own wording produces twelve categories of one.
- The survey is optional, so an older client can still cancel a subscription cleanly.
- The recorded row is returned with the cancellation, which is what keeps the count honest.
- Free text is stored for the creator to read and is never written to an application log.
Questions about recurring revenue
What stops a fan being billed after they cancel?
The order of the two writes. The provider is told to stop billing first, and the local flag is only set once that call succeeds, so the app never shows a cancellation the biller has not applied.
Does a fan lose access the moment they cancel?
No. The renewal is switched off and access runs to the end of the period they already paid for.
Can automation demote a fan a chatter promoted?
No. A stage set by a person is marked as manually sourced, and the automated writer only ever acts on rows it created itself.
How is a fan marked as churned?
By a person. Automated requalification moves fans forward through cold, qualified, active and vip, and never sets churned on its own.
Does this page describe Entergram's subscription handling?
No. It describes Velvet's, at a level of detail you can verify, and gives you the six questions to put to any other recurring product.
Run one subscription end to end
Open a creator account, subscribe to yourself from a second browser, then cancel it and watch what the fan side actually shows.