Migrating from another affiliate platform
Move your affiliate program to Rekomi without changing affiliate URLs. The 16-platform compatibility matrix, the bulk-invite flow, and the custom-param config for niche cases.
The single biggest fear about switching affiliate platforms is having to email every affiliate to update their links. With Rekomi, you almost never have to.
Rekomi natively recognizes the attribution query params used by 20+ major affiliate platforms. As long as your previous platform used one of the 16 query-param conventions in the table below, your affiliates' existing links keep working unchanged when you swap out the JavaScript snippet on your site. Same slugs, same URLs, no affiliate outreach.
How affiliate URLs actually work (the boring truth)
Almost every affiliate platform on the market produces links that look like one of these:
https://your-brand.com/?via=alex
https://your-brand.com/?ref=alex
https://your-brand.com/?fpr=alex
https://your-brand.com/?aff=alexThe platform's JavaScript snippet on your site reads the query param (via, ref, fpr, aff, etc.) and persists the slug (alex) as the referring affiliate. The slug + the param name are the only two things that determine whether the link still attributes after migration. So the migration math is:
- Same slug + same param convention → link works as-is, no affiliate sees any difference.
- Same slug + different param → one redirect line on your reverse proxy fixes it.
- Different slug → affiliates need a new link.
Most migrations are case 1.
Native compatibility matrix
| Platform | Their query param | Works on Rekomi as-is? |
|---|---|---|
| Rewardful | ?via= | Yes |
| Tapfiliate | ?ref= | Yes |
| FirstPromoter | ?fpr= | Yes |
| Refersion | ?rfsn= | Yes |
| Affiliately | ?aff= | Yes |
| LeadDyno | ?aff= | Yes |
| Tolt | ?aff= | Yes |
| Post Affiliate Pro | ?a_aid= | Yes |
| AffiliateWP | ?ref= | Yes |
| UpPromote | ?ref= | Yes |
| Goaffpro | ?ref= | Yes |
| Friendbuy | ?ref= | Yes |
| Reditus | ?via= | Yes |
| Dub Partners | ?via= | Yes |
| iDevAffiliate | ?idev= | Yes |
| Talkable | ?mbsy= | Yes |
| Awin | ?awc= | Yes |
| ShareASale | ?sscid= | Yes |
| CJ Affiliate | ?cjevent= | Yes |
| Impact | ?irclickid= | Yes (post-redirect URL persistence) |
| PartnerStack | ?partner_key= (query mode) | Yes for query mode; path-based mode needs a redirect rule |
| Voluum / generic CPA | ?affid= | Yes |
| Cellxpert | ?affcode= | Yes |
If your platform is not in this list but uses a recognizable query-param convention, you can add it as a custom param under Settings > Attribution in the Rekomi dashboard.
The 3-step migration
Assuming your previous platform uses one of the 16 recognized params:
1. Import affiliates with slugs preserved
Two ways to bring your existing affiliates over with their slugs intact:
Option A: CSV import (Settings > Migrate). Pick your source platform (Rewardful, Tapfiliate, FirstPromoter, Dub Partners, or Tolt), upload the CSV, hit Import. Our parser reads the source-platform's slug column automatically:
| Source | Slug column we read |
|---|---|
| Rewardful | token (or extracted from link URL) |
| Tapfiliate | referral_code |
| FirstPromoter | cust_ref (v1) or ref_id (v2) |
| Dub Partners | partner_link (parsed ?via= value) |
| Tolt | referral_code or ?aff= link (best-effort; Tolt keeps codes on its Links resource) |
| PartnerStack | Not supported (path-based URLs) |
A green "Affiliate links preserved automatically" badge appears next to the platform name on the upload screen when the parser will read slugs. Every imported affiliate keeps their existing slug; their existing public referral URL (e.g. brand.com/?via=alex) continues to attribute on Rekomi unchanged.
Option B: Bulk invite with slugs (Affiliates page > Invite > Bulk). Toggle the paste format to email, slug, name and paste one row per affiliate:
alex@example.com, alex, Alex Example
jamie@example.com, jamie-r, Jamie RecommendsWe send each invite as usual; the accept flow uses the slug you supplied. If a slug is taken or invalid, that affiliate still gets an invite but with a fresh random slug. The response surfaces those rows in a slugConflicts array so you can re-send or re-think.
Option C: MCP install assistant. Ask the connected AI assistant: "I'm migrating from FirstPromoter. Here's my affiliate list." Hand it the CSV; the assistant calls bulk_invite_affiliates with the recipients shape (per-row email + slug + name) under the hood and reports back per-row outcomes.
Single invites are free on every plan including Trial. Bulk invites and CSV imports require Starter or higher with an active paid subscription.
What happens when a slug is taken
Affiliate slugs are globally unique across Rekomi. If you try to migrate an affiliate with slug alex and another brand somewhere on Rekomi already has an affiliate with slug alex, your import:
- Still creates the invite / affiliate row.
- Falls back to a fresh random 12-char slug for that one affiliate.
- Reports the row in the
slugConflicts(bulk) orslugFallback(CSV) response field so you know which one to re-send under a different slug, or to ask that affiliate to update their link.
In practice this is rare for migrating brands because most affiliate slugs are name-based and the global namespace is sparse. Brands with very generic slugs (e.g. an affiliate literally named affiliate1) are the most likely to hit a conflict.
2. Swap out the JavaScript snippet on your site
Replace your old affiliate-platform script tag with the Rekomi loader. The snippet is shown on every install recipe page (/dashboard/setup/install/platforms/...).
3. Connect Stripe (or set up coupon attribution)
If your previous platform was Stripe-webhook-driven (most are), connect Stripe in the Connect payment processor step (/dashboard/setup/connect-sales) and conversion attribution flows automatically. If you were using coupon-code attribution previously, mint per-affiliate Stripe promotion codes under each affiliate's detail page.
4. (Optional) Import historical earnings
Under Settings > Migrate > Step 2, upload your platform's referrals/commissions export to bring over each affiliate's past conversions and commissions so their stats are not reset to zero. Already-paid commissions import as locked history (never paid again); unpaid ones are queued for a Rekomi payout only if you explicitly authorize it on the preview screen. When the export includes a customer's Stripe customer/subscription id and your Stripe is connected, we seed the attribution so existing subscriptions keep paying the same affiliate on renewals. Every history import shows a dry-run preview (including exactly how much, if anything, Rekomi would pay) before you commit, and re-running is safe. See the migrations overview for details.
That's it. Affiliates never had to update a single link, and their history comes with them.
When you DO need a redirect rule
A few cases need one extra line on your server:
Niche query-param platforms
If your previous platform used a param not in the recognized 16 (e.g. an internal tool that used ?our_aff_id= or similar), add it as a custom param in Settings > Attribution:
- Comma-separated additional params, each 2-32 chars, lowercase letters / digits / underscore / hyphen
- Up to 10 custom entries, 256 chars total
After saving, the new params are recognized by the loader on the next page load. No snippet re-paste, no affiliate outreach.
Path-based platforms (PartnerStack legacy, Impact)
PartnerStack and Impact often produce path-based links like partner.brand.com/refer/alex or offers.impact.com/c/12345/alex. These can't be migrated by query-param recognition alone because the slug is not in the URL's query string. Options:
- CNAME the old subdomain to your origin + add a path rewrite. Example for Cloudflare Workers:
addEventListener("fetch", (event) => {
const url = new URL(event.request.url);
const m = url.pathname.match(/^\/refer\/([a-z0-9-]+)\/?$/);
if (m) {
return event.respondWith(
Response.redirect(`https://your-brand.com/?via=${m[1]}`, 302),
);
}
});- Email affiliates once with new links. For high-volume affiliates this is friction, but if you only have a few partners on a path-based platform, it can be the cleanest solution.
Custom platforms with completely different conventions
If your old platform did something exotic (POST-based attribution, fingerprinting, etc.), reach out to support@rekomi.com and we'll help you scope a custom integration path.
Why your previous platform pushed friction at you
Most affiliate platforms have a financial incentive to make leaving them feel painful. Rewardful's docs say drop-in migration is supported. Impact's "media partner migration team" is a sales-friction tax built into the product. PartnerStack's "Concierge migration" service is the same thing in different packaging.
We don't have that incentive. The more brands that switch in, the better Rekomi gets. Drop-in compatibility with the 16 most-common params is a one-time engineering cost we paid up front so you never have to.
Programmatic migration via the MCP install assistant
If you have an AI client connected to Rekomi via MCP (Claude Desktop, Claude Code, Cursor, Continue, Zed, ChatGPT Connectors), ask it:
"I'm migrating from FirstPromoter. Here's my affiliate list as a CSV. Help me move everything over."
The assistant calls:
get_billing_stateto confirm your plan tier covers bulk-invite.get_attribution_paramsto confirm your source platform's param is in the defaults (FirstPromoter's?fpr=is).bulk_invite_affiliatesto send the branded invite emails.- Optionally
update_attribution_paramsif you need a custom param.
The entire migration runs in chat. No CSV upload UI, no copy-paste between tabs.
See also
- MCP server: the AI install assistant + 32 other tools
- Pixel tracking: the loader script behavior + recognized params
- Bulk affiliate invites API: the underlying endpoint the install assistant uses