Moving from another app
Everything a move needs is in Settings › Import. Each tab takes the export from the app you are leaving, as a CSV or as the Excel file most of them hand back: UpPromote's own "Export affiliates" is an .xlsx, and it can be dropped in as it downloads, with nothing to convert. Pick that app under The app you are moving from first: UpPromote, GoAffPro, Refersion, BixGrow, Social Snowball, LeadDyno, Tapfiliate, Shopify Collabs, or Another app. The picker decides which column names are recognised. You can still set any column by hand before importing, every tab lists the columns its file needs, and every import shows a preview of what it will write.
The order to import in
The tabs run in the order a move happens, and the page opens on the first one.
- Programs, because every affiliate belongs to one.
- Affiliates, each into the program named on their row.
- Coupons, the affiliates' coupon codes, when the affiliate file did not carry them.
- Past earnings, the commission history, and anything still owed.
Programs come first because the affiliate import will not start without them. If a row names a program this store does not have, the import stops and says which name it could not match, rather than inventing the program: it would have to invent the commission too, and an affiliate export usually carries no commission column at all. Import your programs and everyone lands in the program they were already in, on its real commission, discount, cookie window, and tiers. Every row has to name its program: a row that leaves it blank stops the import too, because there is nothing to decide it but the file.
BixGrow and GoAffPro have no export of their programs. With either picked, the Programs tab says so: fill in the sample CSV under Tips instead, or create each program on the Programs page.
When imported affiliates start earning
The moment you import them. An imported affiliate's Sprout Affiliate link works as soon as they have it, and every order that uses one of their imported coupon codes is credited here from the import on.
Most stores keep the old app installed for a while, to pay out what it still owes. A coupon code is the one thing both apps can credit: the code is the same discount in your Shopify admin, and both apps see the orders that use it. So when you import, remove these affiliates' coupons from the old app, but keep the discount codes themselves in Shopify, because Sprout Affiliate uses the same codes. If the old app asks whether to delete a coupon from Shopify too, choose to remove the coupon from the app only: the other choice deletes the code your customers use. Only you can do this, in the old app's own admin; neither Sprout Affiliate nor your affiliates can reach it. A link posted under the old app is only ever credited by the old app, so links never pay twice. Nothing here can remove the coupons from the old app for you, and nothing here can see whether it happened, so it is the one step of a move that is yours to make.
The welcome email
The affiliate import can email everyone it brings in. It sends the Affiliate Service Migration email, which is its own template in Messaging › Email › Automatic emails, in each affiliate's language: it says the programme has moved, and above its button it says how to get in, which depends on the password type the import uses. With a password, it asks them to sign in with their email address and that password, and gives the password. With a sign-in link, it asks them to set a password with the button and never mentions one they were not given. You write the rest of the wording; those lines are added when it sends. There you can pick a password type on the left to preview either version, and the link on the Import page opens it on the type you have chosen there. The import offers three password types: a sign-in link, one password generated for each person, or one password you set for everybody. A sign-in link or a generated password reaches an affiliate only in this email, so with the notification email switched off the import offers the default password alone, and you tell your affiliates what it is. With either password, the email's button signs them in straight to the Security tab, where they can change it. With no password, the email carries a one-time sign-in link instead, which lands on the page where they choose a password and works for seven days. Somebody in the file who already has a Sprout Affiliate account, from another store or another of your programs, keeps it whatever password type you pick: your program is added to that account, no password is made or sent for them, and their email says the program has been added to the account they already have and to sign in with the email address and password they already use. Its button opens your sign-in page.
Pending affiliates get it too, since their application was still waiting in the old app. The portal opens to an affiliate only once you approve them, so their version has no button and no sign-in: it says the programme has moved and that the application is still being reviewed, and it gives the password if the import set one, for use once approved. The approval email is then their way in. For an affiliate with no password yet, its button is a one-time link to set one, which works for seven days. Affiliates marked inactive in the file get no email.
The notification email is on by default and goes out right after the import. It hands the affiliate a link that already works. The email goes to up to 300 affiliates a day. A bigger file is still imported all at once: the first 300 emails go out that day and 300 more each day after, in the order of the file, and the Import page says before you import which day the last one goes out. While any are waiting, a progress card at the top of the Affiliates tab shows how many have gone, when the next ones go, and any that could not be delivered. It stays for a week after the last one goes, with the final count, and if your store's sending is paused for bounces or spam complaints it says so: the rest wait in the queue until Sprout Affiliate support lifts the pause. A single file can carry 5,000 affiliates.
Click the card to see everyone it covers: when each email went, or the day it goes, whether it was delivered, bounced, or marked as spam, whether that affiliate has opened the portal since, on the web or in the app, and which version went out: with a password, with a sign-in link, for an affiliate who already has a Sprout Affiliate account, or the one telling a pending affiliate the application is still being reviewed. View email shows the email as that affiliate got it, in their language. The password is not kept once it is sent, so it shows as dots, and if the wording has changed since, the email is shown as it reads now and says so.
This welcome counts as an announcement rather than as one person's application being answered, because that is what it is: bulk mail to a list carried over from somewhere else. So it carries a one-click unsubscribe, it skips anyone who has already unsubscribed from your announcements, it stops if your store is paused for bounces or spam complaints, and its own bounces and complaints count towards the rates that decide that pause.
Before any mass email, check which address it comes from. Sending from your own domain has to be set up first, and the import says so when it applies.
Programs
A program file brings the name, the commission (a percentage or a flat amount per order), the cookie window, the customer discount, and the status. A discount comes across whether it is a percentage, a fixed amount, or free shipping. Commission tiers written in words, like 1-10: 10%; 11+: 15%, are read into a real tier ladder where your plan includes tiers. A program that already exists here is left exactly as it is. A program whose file gives no customer discount arrives with coupon codes turned off.
Every program brought over is listed under Imported programs on the Programs tab, with the app it came from, its commission, discount, cookie window, and status, with an Edit button that opens it, and a Delete button for one imported by mistake. Delete warns first: the program stops, its settings are deleted and cannot be brought back, and it says how many affiliates it would leave without a program. Check each one: a file carries only those settings, and everything else, such as payout methods, approval, and which products earn commission, starts at Sprout Affiliate's defaults.
Affiliates
An affiliate file needs a first name, a last name, an email address, and a program. It can also carry the commission rate, a coupon code, the PayPal address, the payout method, the status, and contact details such as company, phone, website, address, and VAT number. Sample columns are a download on the tab.
- Anyone still waiting for approval in the old app arrives as an application here, for you to approve.
- A coupon already used by another affiliate is left off, and the import names who it was.
- An affiliate with a coupon code can only join a program that has coupon codes turned on. If their program has them off, the import stops, names the program, and links to its Coupon codes switch. Turn them on there, or take the codes out of the file.
- Anyone already here is skipped, so importing the same file twice adds nobody twice. The one thing a later file adds to them is a coupon code: an affiliate already here with no code gets the one on their row.
- Affiliates keep the payout method they were on, where their program offers it.
Coupons
Discount codes the old app created in your Shopify admin keep working, and Sprout Affiliate credits the affiliate who owns the code. Codes in your file that Shopify does not have are created for you and attached to the right affiliate. Up to 500 codes are created per upload, in the background, and each one's result is listed on the Coupons tab.
Codes come across in either order. Import the affiliates with a coupon column, or import them without one and bring their codes here afterwards. On either tab, a code Shopify already holds is attached to its affiliate as it is, keeping the discount the old app gave it, and nothing is created in Shopify; a code Shopify does not have is created and attached. Each row's result says which happened. The discount, products, and collections columns below shape only the codes that are created. The affiliate a code belongs to earns on it here from the import on, so remove the coupon from the old app at the same time, keeping the discount code in Shopify, as above.
Two columns are enough, five let the sheet decide the discount. email, code, the affiliate's email address and the code, creates each code on the program's own customer discount and product scope. Add a header row naming discount, products, or collections and each code is built from what that row says: 15%, $10, or free shipping, and the products or collections it applies to, written as their handles or their titles. A blank cell falls back to the program. A number with no symbol is read as a percentage. A row naming a product your store does not have is skipped and says which name it was, rather than creating a coupon that applies to everything.
Past earnings, and money still owed
One file can hold every affiliate's history, matched by email address, link name, or a name only one affiliate has. Rows are dated, so they land in the right tax year.
What an old app has already paid is recorded as paid history. It shows on the affiliate's own pages as paid before Sprout Affiliate, and it is kept out of this app's performance reporting, out of payouts, and out of the 1099-NEC total, because it was paid and reported elsewhere.
Where the file has a paid status, commission the old app has not paid yet comes in as still owed, and joins that affiliate's next payout here. It is named on the payout statement the way the old app named it. Pay it in one app or the other, never both. The import says so before it writes anything, and it shows the total still owed in the preview. If a later file says the old app has since paid it, the balance comes off again, and the import's Remove button takes back anything unpaid.
A status the importer does not recognise is read as paid, so a word nobody understood never becomes money you pay a second time.
Tax forms
Tax forms are not imported. Each affiliate fills in their own W-9, or a W-8BEN outside the US, on the Tax tab of their portal and signs it there by typing their legal name. To have every moved affiliate do that before their first payout here, turn on Require a tax ID before payouts in Settings. A tax ID column in the file, such as BixGrow’s Tax ID, is not read either, because a tax ID is only kept on the signed form, locked with your tax passphrase.
What does not come across
- Old referral links. A link an affiliate posted while they were on the old app carries that app's own tag, which stops working when the old app does. Their coupon code keeps working, and their new link is in their portal. Link replacer finds where the old link is still posted.
- Passwords. Nothing here can read them. Affiliates arrive either with a password the import set, or with a one-time link in their migration email that lands on the page where they choose one. An affiliate given a password by the import chooses their own at their first sign-in (in the phone app, through Forgot password). An affiliate who already has a Sprout Affiliate account keeps that account's password.
- Settings in the old app, such as pixels or mailing-list keys. Those are set up again in this app's own settings, and no import does it for you.
When the files are in, two things are left, and both are yours: remove the imported affiliates' coupons from the old app, keeping the codes in Shopify, and tell the affiliates. Every affiliate an import brings in is tagged with the app they came from and saved as a segment, so Messages can write to exactly the people who moved, whenever you are ready.
Link replacer
An old referral link stops earning when the old app stops, and affiliates rarely remember every place they posted one. Link replacer, at the bottom of the Links tab in each affiliate's portal and phone app, finds those places. The affiliate pastes the link they used with the old app, adds their YouTube channel, their website, or both, and taps Check links.
- YouTube: the channel's description, the links listed on the channel, and the description of every public video, newest first, up to 1,000 videos. Each video found has a button that opens it in YouTube Studio to edit.
- Website: up to 200 pages, starting from the address typed and following the site's sitemap and its own links. An address with a folder stays inside that folder, so a link-in-bio page such as
linktr.ee/sarahis checked as that one page. A blog's feed is read to find its articles, and the article is listed, never the feed. - Short links: a bit.ly or TinyURL link found on the channel or the website is followed, so an old link hidden behind one is found too.
Each place found shows the old link as it is written there and the link to paste instead. The place's name opens it: a web page opens scrolled to the old link with every copy of it on the page highlighted. That is the affiliate's Sprout Affiliate link, or, when the old link went to a particular page of your store and the affiliate can build page links (the link builder), a link to that same page. Instagram, TikTok, Facebook, X, Pinterest, and LinkedIn can't be checked, because those sites show their pages only to someone signed in.
Link replacer is on every plan. Each affiliate can run 5 checks a day, and the latest check stays on the page so they can work down the list. YouTube checks share a daily allowance with the rest of the app; if a busy day uses it up, the YouTube part waits until midnight Pacific time and the website part still runs.