Manage affiliates
Approval queue, per-affiliate commission overrides, status flow, and archiving.
Once applications start coming in, /dashboard/affiliates is where you live. Three top-level tabs: All, Pending, and Invites.
Pending tab
The Pending tab shows everyone with Status = Pending (renamed from "Applications" in May 2026). For each row you see:
- Their answers to the application form (email, full name, website, audience, why interested, optional custom alias)
- A timestamp of when they applied
Two actions on each row:
- Approve: moves them to
Approved, generates their tracking slug, sends an approval email (templateapplication_approved). The email includes a single-use "Get your link" button that signs the affiliate straight into/awith no signup form. The magic-link expires in 14 days. - Reject: opens a confirmation dialog. Optionally include a reason and choose whether to notify the applicant. Notify is on by default; uncheck for spam or abusive applicants where a reply would invite retry. The email template (when notify is on) is
application_rejected. The audit log captures both the notify decision and the reason regardless of choice, so silent rejections are still fully traceable.
If your campaign has autoApprove = true, you will rarely see this tab populated. Applications skip Pending and land directly in Approved.
All tab
Lists every affiliate in every campaign your org owns. Filter by campaign and status. Each row:
- Affiliate slug (their public referral identifier)
- Full name + email
- Status (Pending, Approved, Paused, Removed)
- Lifetime clicks
- Lifetime sales
- Lifetime earnings (pending + approved + paid)
Click any row to open the affiliate detail.
Affiliate detail
Per-affiliate view shows their full sales history, their custom commission (if any), their tracking link, and admin actions:
- Pause: temporarily stop crediting them. Their existing pending sales stay; no new ones are credited. Use this for affiliates you want to revisit later.
- Remove: terminate. Future tracking clicks return 410 Gone. Existing approved commissions still pay out per the schedule.
- Set custom commission: override the campaign default and any tier match. Useful for negotiated deals with top creators.
The detail view opens on the Payouts tab, where you manage everything money: what they're owed, their Due/Pending/Paid commissions, and the ability to mark selected commissions as paid or pay all due in one click, plus their full payout history. See Per-affiliate payouts.
Status flow
Pending → Approved → Paused → Approved
↓ ↓
Rejected RemovedPending is the initial state for applications when autoApprove = false. Approved is the working state. Paused is a soft hold. Removed is terminal. Rejected means the application never got off the ground.
Tax form prompts
If an affiliate earns more than $600 in a calendar year and is U.S.-based, the IRS requires you to file a 1099-NEC. Rekomi prompts the affiliate to upload a tax form before they can withdraw payouts above the threshold. Non-U.S. affiliates get prompted for W-8BEN or W-8BEN-E during Stripe Connect onboarding.
See Tax forms for the full compliance flow.
Bulk operations
Bulk operations work from both the dashboard and the API. The affiliates table at /dashboard/affiliates has row-level checkboxes; once you select two or more rows, a toolbar appears with Approve, Pause, and Delete actions. Bulk requests fan out to /api/affiliates/bulk-action and are throttled at the backend so a 500-affiliate bulk approve doesn't hammer Resend or the DB.
Notifications affiliates receive
For each lifecycle event, Rekomi sends the affiliate a transactional email:
- Application received (when they apply and
autoApprove = false) - Application approved (when you approve, or instantly if
autoApprove = true) - Application rejected (when you reject; optional reason)
- Tracking link ready (with their slug)
- First sale (a welcome-to-earnings email)
- Payout sent
All transactional emails go through Resend with DKIM-signed delivery from mail.rekomi.com.
Sub-affiliate recruiting income
If your campaign has sub-affiliate recruiting enabled, override income shows up on the recruiter's affiliate-detail view as a separate line per sale. Override rows have amountCents = 0 and a positive commissionCents, with attributionMethod = "sub_affiliate_override". Refunds on the parent sale proportionally claw back the override automatically. Override income counts toward the recruiter's 1099-NEC threshold.