Skip to content

Comp a subscription

Comping is the “give this user a free month of TwistCue+” action. It creates a complimentary Subscription row with the standard shape: the mobile app treats it identically to a paid subscription. There’s no wallet coin movement.

  • VIP retention: a high-spend user is churning. 30-day comp buys goodwill.
  • Apology: refund isn’t enough for a big outage; comp on top.
  • Partner grants: press, streamers, external testers.
  • Winback campaigns: bulk-comp lapsed subscribers via a promo, not the User 360.

User 360 → Actions → Comp subscription opens the form:

FieldTypeNotes
Daysint, 1–365Length of the comp. Common values: 7, 30, 90.
Product IDstring, optionalIf blank, defaults to twistcue_plus_web_monthly marker (the “comp” SKU).
Reasonstring, 3–500Required for audit.
  1. New Subscription row inserted:
    • platform='comp'
    • product_id as chosen
    • status='active'
    • auto_renew=false (comps never auto-renew)
    • current_period_start=now(), current_period_end=now() + days
    • price_cents=0, currency='USD', region=null
  2. Bonus coins per month: comp subs currently do not grant the 200 bonus coins that paid TwistCue+ gets. This is intentional: comp = free access, not free coins. If you want to also grant coins, use Adjust coins separately.
  3. AuditLog entry: action='user.comp_subscription', after includes days and product_id.
  4. Mobile app picks up the new subscription on next /subscriptions/status refresh (or immediately on cold start).
  • Wait it out: current_period_end is respected. On that date the subscription flips to expired.
  • Manually cancel: no dedicated UI action in v2. Delete the subscription row via a superadmin wallet:adjust scoped tool, or wait for expiry.
  • Overlapping comps: comps stack additively. Comping 30 days on top of a user with 12 days remaining does not add to 42; it starts a new Subscription. The mobile app renders the one with the latest current_period_end.
  • Comp on top of a paid sub: same story. The comp Subscription row lives alongside the paid one. When the paid one auto-renews or expires, the comp is still there.
  • Refunds don’t affect comps: comping is not a purchase, so nothing to refund.
Terminal window
curl -X POST https://api.twistcue.local/v1/admin/users/{userId}/comp-subscription \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"days": 30,
"reason": "Retention: high-value churning user (ticket #9021)"
}'

Full details in API: Users.