The Migration Center
The Migration Center is where your old platform's data becomes a live TrainOS academy. You upload your exports, correct anything that needs correcting, decide who is on which plan, connect each member to the card they already pay with, and then promote all of it to your real roster in one move.
Open it at www.trainos.site/dashboard/migration-center and bookmark it — a migration usually runs over several sittings, and it picks up exactly where you left off. Owners and admins can use it; see Roles & permissions.
Upload your files
CSV exports of your members and your sales history, staged safely away from your live roster.
What each column means
Every column TrainOS reads from your export, and what it becomes.
Match members to Stripe customers
Attach each member to the Stripe customer holding the card they already pay with.
Complete the migration
Promote everything to your live academy and hand out claim codes.
Before you start
Connect your Stripe account first. The wizard has a Payments step for it, and plans, customer matching, and subscriptions all run through that account — see Connect payments.
Your academy runs one migration at a time. While one is open it shows as Active Migration with a Continue button, and completed migrations stay listed underneath with a Done badge.
Start a migration
Click New Migration, then pick your old platform on the Source step.
MindBody runs end to end today: upload the two CSV exports and every step after that is built around them. For any other platform, pick it, then book a migration call or email [email protected] and we will run the import with you.
The wizard has eight steps, plus the finished screen:
Source
Which platform you are coming from.
Import
Upload your CSV exports.
Review
Preview and edit everything you imported.
Payments
Connect your payment provider.
Plans
Create membership plans and assign members to them.
Customers
Match Stripe customers to members.
Subscriptions
Create each member's subscription in Stripe.
Finalize
Complete the migration and collect your claim codes.
The stepper across the top is clickable, so you can jump back to any step to check or change something. Your progress is saved as you go.
Upload your member and sales files
On the Import step, drag your files onto the upload box or click it to choose them. Files are CSV, up to 5 MB each. For MindBody that is Exported Memberships (your member list) and Exported Transactions (your sales history) — Migrating from MindBody has the export steps.
Each upload reports what it did: how many records are new, how many were updated, and what share of your transactions attached to a member.
Fixed something in a file and want to send it again? Upload it — a row with a BarcodeID is matched on it and updated in place. A row with no BarcodeID is added again each time, so keep BarcodeID in your file if you plan to re-upload. Upload order does not matter either: transactions attach to their members as soon as both files are in.
Nothing you upload touches your live roster. Everything sits in staging until you complete the migration at the end. When both files are in, click Continue to Review.
What each column means
TrainOS finds these columns whatever way they are capitalized in your file. Any other column your export happens to include is ignored.
Your member file
Your sales file
Transactions with no matching member
A transaction whose client ID does not match anyone still imports, and still counts toward your revenue history. It is not attached to a member profile.
Review and fix your data
The Review step is your member list before it is real, and everything on it is editable. Open any row to change the name, email, phone, stripes, status, membership tier, pricing option, next payment date, next payment amount, and the member's rank (rank system and level). The imported belt sits alongside as a read-only reference.
Setting each member's rank
Pick each member's rank system and level in Review so they are ranked from day one. Anyone left blank finalizes as Unranked, and you can promote them any time from your roster. See Ranks & promotions.
Create plans and assign members
The Plans step has two tabs: Assign to Members and Create Plans & Coupons.
Click Auto-Suggest Plans and TrainOS reads your import: it groups your active members by membership tier and pricing option, takes the median next payment amount in each group, and suggests a plan named after the tier and option with that price. Click Create Plan on a suggestion to open the normal create-plan dialog with the name and price already filled in.
Plans you create here are real membership plans, live in your academy immediately — the same ones covered in Membership plans. That is deliberate: a migration can run for weeks, and your plans are ready for organic signups the whole time. Coupons work the same way, for anyone whose price needs a discount attached.
On Assign to Members, give each member their plan and, if they need one, their coupon. Selections save as you make them. Tick several members and use the toolbar to assign a plan to all of them at once. The list shows every active, included member who has a next payment date — those are the members the wizard can start subscriptions for.
Match members to Stripe customers
The Customers step connects each member to the Stripe customer holding the card they already pay with. TrainOS matches to customers that already exist in your Stripe account and never creates new ones, which is why the card transfer runs first — see Transfer cards to Stripe.
Click Refresh Stripe Customers to pull in the current list, including everything your old processor has just delivered. Then click Auto-Match, which works down three keys in order:
BarcodeID
For MindBody migrations, the BarcodeID from your export against the BarcodeID stored on the Stripe customer. It is an exact match, which is why TrainOS tries it first, and capitalization does not matter.
The member's email address against the Stripe customer's email.
Name
The member's name against the Stripe customer's name.
If a key is shared by more than one Stripe customer — two customers on the same email, say — Auto-Match leaves that one for you rather than guessing. Everything it did not match is one click away: open Match on the member's row, search the customer list by name, email, Stripe ID, or any of the customer's own fields, and pick the right one. Each Stripe customer is assigned to one member, and if you deliberately want two members on one customer — a parent paying for two kids — TrainOS asks you to confirm and then allows it.
The step shows three lists as you work: matched members, unmatched members, and Stripe customers nobody is using yet. Once subscriptions have been created, matching locks, so that a live subscription is never separated from the customer paying for it.
Create the subscriptions
The Subscriptions step turns your matches into real Stripe subscriptions.
Click Prepare Subscriptions to line them up. Every active, included member who has a matched Stripe customer, an assigned plan, and a next payment date gets one, with their billing anchored to that next payment date. If the date has already gone by, TrainOS rolls it forward by whole months and keeps the day of the month, so nobody pays twice for a cycle your old platform already collected.
Then click Create Subscriptions. They are created in Stripe in small batches, and the screen keeps count as it goes. Each subscription runs as a free trial until its billing date, so the first charge lands on the member's normal day and not a moment earlier. Anything that fails can be retried from the same screen.
Three things to handle before you click Create:
Where to switch off Stripe's trial-ending emailOne setting in your Stripe dashboard, before you create subscriptions.
Complete the migration
The Finalize step opens with a checklist of where things stand: members imported, plans assigned, customers matched, subscriptions created. Members imported is the one that has to be ticked — the rest are there so you can see what you are about to finish with. If any subscription is still being created, finish those first and come back.
Click Complete Migration, confirm, and TrainOS promotes the whole staging area into your academy at once:
Completing a migration is a one-way step, so give the checklist a read first. From then on your migrated members are ordinary members — edited from Members, billed from Payments, exactly like everyone who signs up from here on.
Hand out the claim codes
The finished screen shows your new members with their claim codes, and a Download CSV button that gives you the whole list as a file with each member's name, email, and code.
Send each member their code. They enter it in the TrainOS app to claim their profile, which links their login to the record you just imported and brings their history with it — see Claim a profile with a member code. Their subscription is already running either way; claiming is how they get the app, the schedule, and their own progress.
See also
- Migrating from another provider — the four steps of any migration
- Migrating from MindBody — the exports this page reads
- Transfer cards to Stripe — getting your members' cards into your Stripe account
- Membership plans — the plans you assign here
- Subscriptions & policies — managing subscriptions once the migration is done
- Join an academy — what your members do with their claim code