RekomiRekomiBlogPricing
Rekomi Docs
Rekomi Docs
Welcome to Rekomi
Quickstart for brandsPlans and trialsIntegrationsStripe Connect (sales tracking)Organization settingsTeam managementNotifications
Migrations from other platformsMigrating from RewardfulMigrating from TapfiliateMigrating from FirstPromoterMigrating from PartnerStackMigrating from Dub PartnersMigrating from Tolt

Campaigns and commissions

CampaignsCommission modelsPay per click or lead (CPC & CPL)Coupon-code attributionSub-affiliate recruitingTracking and attribution

Affiliates

Recruit affiliatesManage affiliatesAI co-pilotApply to the curated network

Money flow

SalesPayoutsMulti-currencyTax formsReports

Email

Sending domainBroadcasts
For brandsMigrate from another platform
|Brands|

Migrating from FirstPromoter

Move your FirstPromoter affiliate roster onto Rekomi. The self-serve importer handles both v1 (status / cust_ref) and v2 (state / ref_id) export formats, preserves every existing ?fpr= link, and notifies your promoters with a one-click claim invite.

This guide is for brands switching from FirstPromoter to Rekomi. The importer handles both FirstPromoter's v1 CSV format (legacy status and cust_ref columns) and v2 format (new state and ref_id columns) seamlessly, so it works regardless of where your account sits in the v2 redesign rollout.

Existing brand.com/?fpr=alex links are preserved automatically. Migration is on Starter or higher; auto-notify is on Growth or higher.

What the importer brings across

FieldSource columnNotes
EmailemailRequired. Lowercased + trimmed. Primary dedup key.
First namefirst_nameJoined with last_name.
Last namelast_nameJoined with first_name.
Statusstatus (v1) OR state (v2)Whichever column is present; mapping below.
PayPal emailpaypal_emailOptional. Preserved as the affiliate's payout destination.
Tracking slugcust_ref (v1) OR ref_id (v2)Direct slug column. No URL parsing needed.

The importer fuzzy-matches header names case-insensitively and accepts either v1 or v2 columns interchangeably. Other columns from FirstPromoter's export (id, default_ref_id, promo_code, created_at, country) are silently ignored.

Status mapping

FirstPromoter's v2 rollout renamed several states. The importer unifies both vocabularies:

FirstPromoter (v1 status / v2 state)Rekomi
approved / acceptedApproved
pending / not_setPending
denied / rejectedRejected
blocked / inactiveBanned
anything else, blank, or missingPending

The match is case-insensitive. If your CSV has both columns (transitional accounts during the v2 rollout), the first one the parser sees wins.

How slug preservation works

FirstPromoter's tracking URL is brand.com/?fpr={cust_ref}. Rekomi recognizes fpr as one of the 16 default attribution params, so no additional config is required - every existing FirstPromoter link works on Rekomi out of the box once you swap the snippet.

The importer reads cust_ref (v1) or ref_id (v2) from every row and tries to register that exact value as the affiliate's new Rekomi slug. Preservation succeeds when:

  1. The value is a valid alias: 3-64 characters, alphanumeric plus hyphen, no leading or trailing hyphen.
  2. The slug is not already taken globally.

FirstPromoter's slugs are usually short, lowercase, and well-formed, so collision rates are low. The job detail panel lists any rows that fell back to fresh random slugs.

Step-by-step cutover

1. Export from FirstPromoter

In FirstPromoter, open the Promoters tab (NOT the Reports tab). Click Export to download a CSV directly.

Important: the Reports tab's export excludes promoters who haven't yet made a referral. If you export from Reports instead of Promoters, you'll lose your inactive promoters. Always use Promoters → Export.

2. Upload the CSV

Open /dashboard/settings/migrate. Pick FirstPromoter as the source, select your destination Rekomi campaign, and upload the CSV. The importer detects v1 vs v2 automatically based on which columns are present.

3. Opt into auto-notify (Growth+ only)

Check Notify affiliates after import and compose a personal note. Click Send a sample to myself to fire a preview, then let the bulk dispatch run at 1 email/sec.

4. Swap the tracking snippet

Install Rekomi's tracking snippet, remove FirstPromoter's snippet. fpr is already in Rekomi's default attribution params, so every existing brand.com/?fpr=alex link starts attributing to Rekomi from the moment the swap is live.

5. Cancel FirstPromoter

Keep FirstPromoter active for a 24-48 hour shadow period if you want to compare numbers, then cancel.

v1 vs v2: which one am I on?

FirstPromoter was acquired by SpringWater Capital in September 2025. The v2 UI redesign started rolling out late 2025 and continued through early 2026. You can tell which export format you have by opening the CSV:

  • v1 format has a status column (approved / pending / denied / blocked) and a cust_ref column.
  • v2 format has a state column (accepted / not_set / rejected / inactive) and a ref_id column.

You don't need to do anything different in the Rekomi importer - it auto-detects. The reason this matters is for verifying the import landed correctly after the fact: if your CSV is v2, expect rejected affiliates to show "rejected" in the source column and not "denied".

What is NOT imported

DataStatusWorkaround
Historical clicksNot portableFirst-party cookie data is platform-specific.
Historical sales and commissionsSelf-serve (Step 2)Import them via the referrals/commissions CSV under Settings, Migrate, Step 2. See Importing history and earnings.
Historical commission rulesNot importedConfigure commission models directly; Rekomi's are more expressive.
Multi-program structureNot importedSet up Rekomi campaigns first; map at upload time.
Promoter custom fieldsSilently ignoredContact support if you need specific fields preserved.
Promo codesNot importedUse Rekomi's coupons feature; codes auto-attribute to affiliates.

Common gotchas

My export from Reports has fewer rows than I expected. You exported from Reports instead of Promoters. The Reports tab excludes promoters without referrals. Re-export from Promoters → Export.

Some rows have status and others have state. This happens during the v2 rollout if FirstPromoter migrated only part of your account. The importer handles it - both columns get parsed correctly.

Promo codes in promo_code aren't carrying over. Correct - the importer doesn't currently bring across promo codes. Recreate them in Rekomi's coupons UI; Rekomi auto-attributes coupon redemptions to the affiliate they were minted for.

My PayPal emails are different from the affiliate emails. That's fine. paypal_email is preserved separately from email. Payouts use the PayPal address; the account login uses the regular email.

Verifying the import landed clean

After the job completes:

  1. Open /dashboard/affiliates and spot-check 3-5 rows.
  2. Confirm one affiliate's tracking link is brand.com/?fpr={cust_ref} matching the source.
  3. Send a sample notification to yourself.
  4. Click your own test link with the new snippet live; confirm a click row appears.

Then fire the bulk auto-notify and cancel FirstPromoter.

Importing history and earnings

To bring over each affiliate's past performance, export your referrals / commissions CSV from FirstPromoter (Promoters, Referrals, Export) and upload it under Settings, Migrate, Step 2 (separate from the affiliate roster above).

  • 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 FirstPromoter 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.
  • If your export includes a customer's Stripe customer/subscription id and your Stripe is connected, existing subscriptions keep paying the same affiliate on renewals.
  • A dry-run preview shows what will import (and exactly how much, if anything, Rekomi would pay) before you commit. Re-running is safe. Denied and refunded rows are skipped.

See the migrations overview for the full reference.

Where to go next

  • Tracking and attribution: fpr and the other 15 default params.
  • Coupons: recreate FirstPromoter promo codes with per-affiliate Stripe coupon minting.
  • Migrating from other platforms: URL-preservation matrix.
  • vs FirstPromoter: side-by-side comparison if you are still evaluating.

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.

Migrating from PartnerStack

Move your PartnerStack affiliate roster onto Rekomi. The self-serve importer handles PartnerStack's loosely-documented CSV format via header fuzzy-matching. Tracking links use path-based URLs that need a redirect rule for full preservation; the importer handles roster, status defaults, and notifications.

On this page

What the importer brings acrossStatus mappingHow slug preservation worksStep-by-step cutover1. Export from FirstPromoter2. Upload the CSV3. Opt into auto-notify (Growth+ only)4. Swap the tracking snippet5. Cancel FirstPromoterv1 vs v2: which one am I on?What is NOT importedCommon gotchasVerifying the import landed cleanImporting history and earningsWhere to go next