How to migrate from Rewardful without breaking a single affiliate link
A step-by-step move from Rewardful to Kickrail: import, swap the script, connect Stripe, and turn Rewardful off in the right order so no sale is lost or paid twice.
The risk in moving an affiliate program is not the import. It's the week after: links that stop working, renewals credited to nobody, and payments that earn a commission in both tools. This is the order that avoids all three.
Before you start
- Your Rewardful API secret, from Company settings in Rewardful.
- A Kickrail program. New programs get 14 days of the Growth plan, which covers every step here.
- If your campaigns use Stripe coupons for affiliate codes, Kickrail needs Starter or higher to keep them. On Free, every affiliate joins one default campaign.
1. Run the import
In Kickrail, open Settings → Import from Rewardful, paste the secret and start it. Large programs take a few minutes; Rewardful allows about 8,000 records a minute. The secret is used for that run and never stored or shown again.
What comes over:
| Rewardful | Kickrail |
| Campaigns | Campaigns, with rate, month limit, hold, minimum payout, coupon and link URL |
| Affiliates | Affiliates, approved or rejected to match |
| Links | Links with the same tokens |
| Coupons | Codes, tied to the same Stripe promotion codes |
| Leads and conversions | Referrals, with email and Stripe customer |
| Commissions | Commissions, unpaid ones still owed |
| Paid payouts | Payout history |
Visitors who never signed up aren't copied, and payouts not yet paid in Rewardful aren't either: those commissions show as owed in Kickrail instead.
Nothing is emailed and no webhooks fire during an import, so you can run it, look around and decide later.
2. Check a few affiliates by hand
Open two or three of your biggest affiliates and compare their referral counts and unpaid balances with Rewardful. Every imported record keeps its Rewardful id, so if something looks off you can re-run the import and it updates in place.
3. Swap the tracking script
Replace Rewardful's script with Kickrail's tag from Settings → Install:
<script async src="https://kickrail.com/api/kr.js?k=YOUR_PUBLIC_KEY"></script>Kickrail listens for ?via= by default, which is Rewardful's link format, so every link your affiliates have already posted keeps working. If you reported signups to Rewardful from your server, make the same call to Kickrail.
4. Connect Stripe, then disconnect Rewardful
Connect Stripe in Kickrail's settings so new payments and renewals earn commissions. Then turn off Rewardful's Stripe integration. Do both on the same day: in between, a payment either earns in both tools or in neither.
5. Run the import one last time
Right before you remove Rewardful completely, run the import again. It picks up the signups and commissions from the last few days and updates what's there instead of adding copies. A commission you've already paid through Kickrail is never changed by a later import.
6. Tell your affiliates
Passwords can't be moved out of Rewardful, so imported affiliates have a Kickrail account without one. When you're ready, tick Email imported affiliates a link to set their password. Each person gets that email once, with their link and code. It's off by default so you can announce the move yourself first.
7. Pay from one place
From here, pay affiliates from Kickrail only. If you do pay something in Rewardful after the import, run the import again and it's marked paid in Kickrail too.
If you'd rather an agent did it
The import is also available over Kickrail's MCP server. Ask Claude Code or Cursor to "import my Rewardful program into Kickrail and swap the tracking script", and it can run the import, edit your codebase and verify the new script on your live site. Stripe approval and payouts stay with you. See setting up with an AI agent.
And if you ever leave Kickrail, the Affiliates, Referrals and Commissions pages each export everything as CSV.