Migrating from Rewardful
Move your Rewardful program onto Rekomi with one API pull. Rekomi imports your affiliates (with ?via= tokens and click counts), your leads, and your commission history directly from Rewardful's API; a support-provided CSV remains as a fallback.
This guide is for brands switching from Rewardful to Rekomi. The primary path is a one-key API pull: paste your Rewardful API secret and Rekomi imports your affiliate roster (with every existing ?via= token preserved and lifetime visitor counts carried over), your leads, and your commission history in one run. A CSV upload remains as a secondary path for support-provided files.
Most teams complete the cutover in a single afternoon. Migration is on Starter or higher; auto-notify is on Growth or higher.
Import via API (recommended)
Rewardful has no self-serve CSV export for affiliates, referrals, or commissions (only the due-payouts file downloads from the dashboard; everything else is support-mediated), so the API pull is both the easiest and the most complete path.
- In Rewardful, open Company Settings and copy your secret API key.
- Open
/dashboard/settings/migrate, pick Rewardful, choose your target Rekomi campaign, and paste the key. It is used once, in memory, and never stored, logged, or shown again. - Leave the Import leads and Import commission history toggles on (or switch either off) and click Pull from Rewardful.
What the pull imports:
- Affiliates: email, name, status (
activeimports as Approved,disabledas Banned,suspiciousas Paused for review), PayPal/Wise payout email, and the?via=token preserved as the Rekomi link slug so existing links keep working. Affiliates with several Rewardful links get ONE Rekomi link (their first token); the import summary reports how many that affected. - Click counts: each affiliate's lifetime
visitorsaggregate carries over into their Rekomi click counter, so leaderboards and EPC math don't reset to zero. - Leads: referrals in Rewardful's
leadstate (signed up, never bought) import as zero-money lead records attributed to their affiliate, with the customer's name, email, and Stripe customer id, so your funnel and lead counts are populated from day one. - Commission history: each commission's amount and sale amount (Rewardful reports integer cents; they import 1:1), currency, date, and state.
paidcommissions import as settled history;pending/duecommissions also import as locked records (nothing becomes payable from the API pull);voidedcommissions are skipped. Stripe customer ids ride along so existing subscriptions keep paying the same affiliate on renewals.
What the pull cannot import: payable balances (use the Step 2 CSV flow with its preview if you want unpaid commissions made payable), campaign structure, per-affiliate commission rates, and click-level logs (Rewardful only exposes aggregates). Each list is fetched up to 5,000 rows and Rewardful rate-limits its API (roughly 45 requests per 30 seconds), so a large pull can take a minute or two; the result tells you if a fetch was cut off.
Re-running the pull is safe: affiliates dedupe by email and history rows dedupe on Rewardful's own ids.
The CSV fallback
If Rewardful support already emailed you a data export (hello@getrewardful.com provides one on request), the CSV importer below still accepts it.
What the CSV importer brings across
| Field | Source column | Notes |
|---|---|---|
email | Required. Lowercased + trimmed. Primary dedup key. | |
| Full name | name or first_name + last_name | If name is present it wins; otherwise the two parts are joined with a space. |
| Status | status | See mapping table below. |
| PayPal email | paypal_email | Optional. Preserved as the affiliate's payout destination. |
| Tracking slug | token (primary) or ?via= extracted from link | If both are missing, a fresh 12-character random slug is generated. |
Anything else in the affiliate CSV (campaign ids, custom fields, sales totals) is silently ignored by the roster importer. To bring over historical sales and commissions, use the separate Referrals CSV in Step 2 (see Importing history and earnings).
Status mapping
Rewardful's status vocabulary maps to Rekomi's 4-state enum:
Rewardful status | Rekomi |
|---|---|
active, approved | Approved |
pending | Pending |
rejected | Rejected |
banned | Banned |
| anything else, blank, or missing | Pending |
The match is case-insensitive. Approved imports get an ApprovedAt timestamp set to the import time so payout eligibility math works correctly.
How slug preservation works
This is the part that matters for most Rewardful migrations: your affiliates do not need to share new links.
Rewardful's tracking URL is brand.com/?via={token}. Rekomi's default tracking URL is also brand.com/?via={slug} once you configure via in attribution params. The importer reads the token column from every CSV row and tries to register that exact string as the new affiliate's Rekomi slug.
The slug is preserved iff:
- The
tokenvalue is a valid alias: 3-64 characters, alphanumeric plus hyphen, no leading or trailing hyphen. - The slug is not already taken in the global Rekomi namespace (slugs are platform-wide unique, not per-org).
If both conditions hold, every existing brand.com/?via=alex link keeps working on Rekomi the moment you swap the tracking snippet. If the token field is missing on a row, the importer falls back to extracting the slug from the link column (it parses out the ?via= query param). If both are missing, the affiliate gets a fresh 12-character random slug - their old link breaks, but their account is still imported.
Collisions are logged per-row in the import job result. If the same token exists across two Rewardful workspaces being migrated into one Rekomi org, the second arrival falls back to a fresh slug. You can see which slugs were preserved versus regenerated in the job detail panel.
Step-by-step cutover
1. Run the API pull
Copy your secret API key from Company Settings in Rewardful and run the pull under /dashboard/settings/migrate (see Import via API above). One run brings your roster, leads, and history. If you have a support-provided CSV instead, upload it via the collapsed CSV option on the same card.
2. Set your attribution param to via (or add it to your custom list)
via is one of Rekomi's 16 built-in attribution params and works out of the box. If you have already swapped to a different param (e.g. ref), open /dashboard/settings/attribution and add via to your custom list before importing. This is what makes the imported links resolve to the right affiliates.
3. Check the import result
The import runs synchronously and shows a row-by-row result: imported, skipped (duplicate or missing email), or errored (parse failure). Every job is listed under Import history with a per-row detail panel and an Undo button.
4. Opt into auto-notify (Growth+ only)
Check Notify affiliates after import and compose a short personal note in the rich-text editor (~500 visible characters). The note renders inside a brand-accent blockquote at the top of every notification email, above a single Claim your account button that takes the affiliate to a pre-filled Clerk sign-up.
Click Send a sample to myself to fire a preview to your own verified email before the bulk send kicks off. The bulk dispatch is throttled to one email per second with up to 200ms jitter; a 500-row import takes about 8 minutes end to end.
5. Swap the tracking snippet
Install Rekomi's tracking snippet on your marketing site, then remove the Rewardful snippet. The moment the new snippet is live, every existing brand.com/?via=alex link attributes to Rekomi instead of Rewardful. Your affiliates do not need to know about the change.
Keep Rewardful active for a 24-48 hour shadow period to compare the two sides if you want belt-and-suspenders confidence; then cancel Rewardful.
What is NOT imported
| Data | Status | Workaround |
|---|---|---|
| Historical click counts | API pull (or a CSV with a visitors column) | Lifetime visitors aggregates import via the API pull; a support-provided CSV carries them only when it happens to include a Visitors/Clicks column. Click-level logs are not portable. |
| Leads | API pull only | Rewardful has no leads export; the API pull brings lead-state referrals as zero-money lead records. |
| Historical sales and commissions | API pull or Step 2 CSV | The API pull imports them as locked history; the Step 2 CSV flow additionally lets you make unpaid balances payable after a preview. |
| Campaign structure | Not imported | Create your campaigns in Rekomi first; map imported affiliates to them at upload time. |
| Custom commission rules | Not imported | Configure Rekomi's commission models directly; they are more expressive than Rewardful's. |
Historical sales and commissions are no longer white-glove only: import them yourself via Step 2 (paid rows lock as history, unpaid pay out only if you authorize it).
Common gotchas
The token column is missing from my export. Older Rewardful exports omit token; the importer falls back to parsing ?via= out of the link column automatically. No action needed.
An affiliate's slug collided with another org's. Globally rare but possible. The row gets a fresh random slug; the affiliate's old link breaks. They are still imported and can be notified normally; just include a "your new link is at /a in your dashboard" note in your auto-notify message.
My affiliates use ?ref= not ?via=. Add ref to your attribution params before importing. The importer extracts both ?via= and ?ref= from the link column when token is empty.
I have archived Rewardful affiliates. They come across as Approved by default if status is missing. Use the bulk-status action in /dashboard/affiliates after import to mark them Rejected or Banned in one pass.
Verifying the import landed clean
After the import job completes:
- Open
/dashboard/affiliatesand spot-check 3-5 rows. Confirm name, email, and status match the Rewardful source. - Open one affiliate's detail page and confirm the tracking link is
brand.com/?via={original-token}. - Send a sample notification to yourself and confirm the Claim your account button lands on the pre-filled Clerk sign-up.
- Click your own affiliate test link with the new snippet installed; confirm a click row appears under that affiliate within a few seconds.
If steps 1-4 all pass, fire the bulk auto-notify and cancel Rewardful when comfortable.
Importing history and earnings
The API pull already imports your commission history (and leads) as locked, settled records. Use the Step 2 CSV flow instead when you have a support-provided referrals export, or when you want unpaid commissions made payable on Rekomi: only the CSV flow previews the exact unpaid balance and asks you to authorize it. Rewardful's referral data is the richest of any source: it includes customer email, stripe_customer_id, sale amount, commission, state, and created date.
- Past conversions and commissions are matched to the affiliate by email (or preserved slug) and recorded with the amount and date from your export.
- Commissions Rewardful already paid import as locked history (shown in lifetime totals, never paid again). Commissions still owed are queued for a Rekomi payout only if you authorize it on the preview screen.
- Because Rewardful exports the
stripe_customer_id, existing subscriptions keep paying the same affiliate on renewals once your Stripe account is connected. - A dry-run preview shows what will import (and exactly how much, if anything, Rekomi would pay) before you commit. Re-running is safe. Voided and refunded rows are skipped.
See the migrations overview for the full reference.
Where to go next
- Tracking and attribution: customize the attribution params, configure cookie window and stickiness.
- Migrating from other platforms: the broader URL-preservation matrix if you also have affiliates on other platforms.
- Plans and trials: see what each tier includes and how the 14-day free trial behaves.
- vs Rewardful: side-by-side feature comparison if you are still evaluating.
Migrations from other platforms
Move your affiliate roster onto Rekomi from Rewardful, Tapfiliate, FirstPromoter, PartnerStack, Dub Partners, Tolt, Lemon Squeezy, or Gumroad. Self-serve importers for all eight with slug preservation and optional auto-notify.
Migrating from Tapfiliate
Move your Tapfiliate affiliate roster onto Rekomi. Self-serve CSV import preserves every existing referral code so ?ref= links keep working, with the gotcha that Tapfiliate emails the export rather than offering a direct download.