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 ToltMigrating from Lemon SqueezyMigrating from GumroadMigrating from impact.comMigrating from PromoteKitMigrating from LeadDynoMigrating from TrackdeskMigrating from Partnero

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 formsInsights

Email

Sending domainBroadcasts
For brandsMigrate from another platform
|Brands|

Migrating from PromoteKit

Move your PromoteKit program onto Rekomi with one API pull. Rekomi imports your affiliates (with ?via= referral codes, payout emails, and click counts), your signed-up leads, and your commission history directly from PromoteKit's API.

This guide is for brands switching from PromoteKit to Rekomi. PromoteKit is a Stripe-native affiliate platform for SaaS. The primary path is a one-key API pull: paste your PromoteKit API key and Rekomi imports your affiliate roster (with each affiliate's ?via= referral code, payout email, and lifetime click count), your signed-up leads, and your commission history in one run.

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)

PromoteKit's dashboard exports are payout files only (PayPal and Wise mass-payment shapes), so the API pull is the complete migration path. PromoteKit's API is available on their Pro plan or higher; the Free plan has no API key.

  1. In PromoteKit, open Settings → API Keys and copy your API key.
  2. Open /dashboard/settings/migrate, pick PromoteKit, choose your target Rekomi campaign, and paste the key. It is used once, in memory, and never stored, logged, or shown again.
  3. Leave the Import leads and Import commission history toggles on (or switch either off) and click Pull from PromoteKit.

The PromoteKit import step in Rekomi with the API key field, the leads and history toggles, and the Pull from PromoteKit button

What the pull imports:

  • Affiliates: email, first and last name, payout email (PayPal or Wise), and status. PromoteKit models status as two booleans: banned affiliates import as Banned, approved affiliates as Approved, and unapproved applications as Pending.
  • Referral codes: each affiliate's first link code (the ?via= value) is preserved as their Rekomi slug when it passes the standard slug checks (3-64 characters, letters, digits, and hyphens, not already taken). Links carrying the preserved code keep working unchanged, since via is one of Rekomi's built-in attribution params. Affiliates with several PromoteKit links get one Rekomi link; the import summary reports how many that affected.
  • Click counts: each affiliate's lifetime clicks aggregate carries over into their Rekomi click counter, so leaderboards and EPC math don't reset to zero.
  • Leads: referrals in PromoteKit's signed_up state (signed up via an affiliate, never started paying) import as zero-money lead records attributed to their affiliate, with the customer email and, when present, the Stripe customer id, which rides along for recurring attribution.
  • Commission history: commissions with the sale amount, commission amount, per-row currency, and date. PromoteKit reports money in decimal major units ("99.0" means $99.00); Rekomi converts with the currency's real minor-unit scale, so zero-decimal currencies like JPY stay correct. Rows PromoteKit marked paid import with a paid date; everything imports as settled, locked history: nothing becomes payable from the API pull.

What the pull cannot import: payable balances (use the Step 2 CSV flow with its preview if you want open balances made payable), promo-code (coupon) attribution rails (mint fresh Rekomi coupon codes instead), campaign structure, and click-level logs (PromoteKit only exposes aggregates). Each list is fetched up to 5,000 rows; 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 PromoteKit's own ids.

The CSV fallback

There is no roster export in PromoteKit's dashboard, but a support-provided or API-derived file works with the CSV importer below.

What the CSV importer brings across

FieldSource columnNotes
EmailemailRequired. Lowercased + trimmed. Primary dedup key.
Full namename, or first_name + last_nameIf name is present it wins; otherwise the two parts are joined with a space.
Statusapproved + banned booleans, or statusSee mapping table below.
Payout emailpayout_email or paypal_emailOptional. Preserved as the affiliate's payout destination when present.
Tracking slugref_code, referral_code, code, or ?via= extracted from a link columnSee How slug preservation works.
Click countclicks or click_countOptional lifetime aggregate.

Status mapping

PromoteKit models affiliate status as two booleans rather than an enum:

PromoteKitRekomi
banned = trueBanned
approved = true (not banned)Approved
approved = falsePending
neither readablePending

PromoteKit campaigns can require approval (approval_needed), so an unapproved affiliate is treated as a pending application. You can reclassify any row with the bulk-status action in /dashboard/affiliates after import.

How slug preservation works

PromoteKit's referral links use the ?via= query parameter, for example brand.com?via=alex. via is one of Rekomi's built-in attribution params and works out of the box, so your affiliates' ?via= links keep attributing on Rekomi the moment you swap the tracking snippet, wherever the code was preserved as the slug (the conditions below).

The importer preserves the slug itself when:

  1. The pull (or file) carries the affiliate's link code.
  2. That value is a valid alias: 3-64 characters, alphanumeric plus hyphen, no leading or trailing hyphen.
  3. The slug is not already taken in the global Rekomi namespace (slugs are platform-wide unique, not per-org).

When all three hold, the affiliate keeps their exact slug. Otherwise they get a fresh 12-character random slug; their account still imports cleanly.

Step-by-step cutover

1. Run the API pull

Copy your API key from Settings → API Keys in PromoteKit and run the pull under /dashboard/settings/migrate (see Import via API above). One run brings your roster, referral codes, leads, and history.

2. Attribution params: nothing to configure for via

via is one of Rekomi's built-in attribution params and is always recognized, so existing PromoteKit links resolve to the right affiliate on Rekomi with zero configuration.

3. Check the import result

The import runs synchronously and shows a row-by-row result: imported, skipped (duplicate or missing email), or errored. 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. Click Send a sample to myself to preview before the throttled bulk send (one email per second).

5. Swap the tracking snippet

Install Rekomi's tracking snippet on your marketing site, then remove PromoteKit's script tag and its Stripe metadata stamping. The moment the new snippet is live, every existing brand.com?via=alex link attributes to Rekomi instead of PromoteKit. Keep PromoteKit active for a 24-48 hour shadow period if you want belt-and-suspenders confidence; then cancel.

What is NOT imported

DataStatusWorkaround
Historical click countsAPI pull onlyLifetime clicks aggregates import via the API pull; click-level logs are not portable.
LeadsAPI pull onlyPromoteKit has no referrals export; the pull brings signed_up referrals as zero-money lead records.
Promo-code attributionNot importedPromoteKit's coupon rail rides on Stripe promotion codes; mint fresh Rekomi coupon codes instead.
Which balances are openPartiallyEverything imports as locked history; PromoteKit's paid flag decides which rows carry a paid date. Making open balances payable needs the Step 2 CSV flow with its preview.
Custom commission rulesNot importedConfigure Rekomi's commission models directly.

Common gotchas

My PromoteKit plan has no API key. API access starts on PromoteKit's Pro plan. On the Free plan, ask PromoteKit support for a data export and use the CSV fallback, or upgrade for one month to run the pull.

An affiliate had several links. They import once with their first link's code; links using that preserved code keep attributing, while links carrying their other codes stop resolving after cutover (a recognized param name cannot resolve an unregistered code).

Refund adjustments. Negative commission rows (refund adjustments) are skipped on import rather than imported as negative history.

Verifying the import landed clean

  1. Open /dashboard/affiliates and spot-check 3-5 rows against the PromoteKit source.
  2. Open one affiliate's detail page and confirm the preserved ?via= slug (or a fresh slug otherwise).
  3. Click an affiliate's existing ?via= link with the new snippet installed; confirm a click row appears under that affiliate within a few seconds.
  4. Send a sample notification to yourself before firing the bulk send.

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 want open balances made payable on Rekomi: only the CSV flow previews the exact unpaid balance and asks you to authorize it. A Step 2 file for PromoteKit uses the generic columns (affiliate email, amount, commission, currency, date, paid). See the migrations overview for the full reference.

Where to go next

  • Tracking and attribution: the via param, cookie window, and stickiness.
  • Migrating from other platforms: the broader URL-preservation matrix.
  • Plans and trials: what each tier includes and how the 14-day free trial behaves.

Migrating from impact.com

Move your impact.com partner roster onto Rekomi. Rekomi pulls partners, up to 3 years of conversion history, and lifetime click totals via the impact.com Advertiser API; nothing to export.

Migrating from LeadDyno

Move your LeadDyno program onto Rekomi with one API pull. Rekomi imports your affiliates (with ?afmc= codes, PayPal emails, and lifetime visitor counts), your Registered leads, and your commission history directly from LeadDyno's API.

On this page

Import via API (recommended)The CSV fallbackWhat the CSV importer brings acrossStatus mappingHow slug preservation worksStep-by-step cutover1. Run the API pull2. Attribution params: nothing to configure for via3. Check the import result4. Opt into auto-notify (Growth+ only)5. Swap the tracking snippetWhat is NOT importedCommon gotchasVerifying the import landed cleanImporting history and earningsWhere to go next