Administration
Partner referrals
How the partner referral program works—referral links, tenant registrations, conversion, and payouts.
This platform supports a partner referral program with two attribution flows:
- Self-serve referrals via a referral link (
/register?ref=...) - Partner-provisioned tenants via a one-time claim link (
/register?tenantClaim=...)
Admin setup
Path: Admin → Partners (/admin/partners)
Platform admins can:
- Create partners (creates a dedicated partner portal workspace and a default referral code)
- Attach partner users (by email) so they can log in to the partner portal
- Configure commission rules per subscription plan (percent or flat amount)
- Review pending payouts and mark payouts as paid
Commission rules
Commissions are stored as either:
- Percent in basis points (bps), where
10_000=100.00% - Flat in USD cents
If a partner has a plan-specific rule, that rule is used. Otherwise the partner’s default commission is used.
Partner portal
Paths: /partners/*
Partner users can:
- Create and copy referral links under Referral Links
- Provision tenants under Tenant registrations (and copy a one-time claim link)
- Track Referrals and Payouts as tenants progress
Referral links (self-serve)
- Create a referral code in
/partners/links. - Share the link
/register?ref=<code>. - The customer registers, then creates a workspace in
/onboarding/workspace. - The workspace is attributed to the partner at creation time (first-touch).
Tenant registrations (partner-provisioned)
- Create a tenant registration in
/partners/tenants(choose plan, optionally restrict to an intended admin email). - Copy the generated claim link immediately — the token is only shown once.
- The customer admin opens the link, registers/logs in, and the tenant is claimed.
Conversion and payouts
A referral is considered converted when the tenant’s subscription becomes ACTIVE.
- Conversion is triggered by admin subscription updates.
- When conversion happens, the platform creates a payout ledger entry automatically.
Payout math
Percent payouts are calculated from the subscription plan list price:
payoutAmountCents = round(plan.priceMonthlyCents * commissionBps / 10_000)
Flat payouts use the configured amount directly:
payoutAmountCents = commissionValueCents