What you can move
Import lives in Settings → Data import, and only the club owner and administrators can run it. Four kinds of data move:
- “Members”: people with their email, phone, date of birth, gender, city, notes, join date and the ID from the old system.
- “Plans”: what you sell, with price, billing period, signup fee, number of sessions, validity in days and a description.
- “Memberships”: who holds which plan, from when to when, at what price and in what status.
- “Products”: what the Register sells, with price, SKU, barcode, cost price, category and stock.
Under “Where from” choose “My own file” for any export or spreadsheet, or “Perfect Gym Manager” for the member and contract reports of that system. The profile knows its column names, the semicolon separator, day-first dates and the different ways its reports write yes and no.
Prepare the file
- Save the export as CSV; in Excel, choose CSV UTF-8 when saving. The first row must hold the column names.
- Columns may be separated by commas, semicolons, tabs or vertical bars: easygym detects which.
- Dates are read day first, so 01.02.2026 is 1 February. The form 2026-02-01 works too. Write the year with four digits: 01.02.26 is rejected.
- Numbers such as 1 250,50 and 1250.50 are both read correctly. With “My own file” a dot before exactly three digits separates thousands, so 1.250 is 1250; a value that cannot be thousands, such as 0.001, is marked as ambiguous instead of being guessed. A currency or unit next to the amount (AED, Dhs., ₴, “days”) is ignored, and a minus can be written as −5 or (5); letters inside a number (1e5) or a multiplier such as 1.5k make the cell an error rather than a guess. “Column mapping” shows how a sample number or date was read.
- Values are checked before anything is written: prices and fees from 0 to 1,000,000 with at most two digits after the separator, sessions and validity days as whole numbers, a date of birth not in the future and a membership that does not end before it starts.
- Yes and no can be written as yes/no, true/false, 1/0 or the same words in Russian. Placeholders such as “-” or “n/a” count as empty.
- One file holds up to 20,000 rows; split a bigger export into parts.
Required columns
- “Members”: the first name, plus an email or a phone number.
- “Plans”: the name and the price.
- “Memberships”: the member, the plan and the start date.
- “Products”: the name and the price.
Column names in English and Russian are recognised in many spellings: First Name, Surname, Mobile, Date of Birth and so on. The card “How to prepare the file” on the import page lists the required and optional columns for each kind of data, and a file with exactly those column names is matched without manual mapping.
Import in the right order
- Members first. If the old system numbers its members, keep that column as “ID in the old system”: it is how memberships find their owner later, even when an email has changed.
- Then plans. A plan whose name already exists in easygym counts as a duplicate and is skipped.
- Then memberships. Each row finds its member by the ID from the old system, the email or the phone, and its plan by name; letter case, spaces and punctuation don’t matter. A plan you created by hand in Plans & products → Plans works too, as long as the name matches.
Run the import
- Open Settings → Data import.
- Choose the source in “Where from” and the data in “What to import”, or leave “Detect from columns”.
- Open the CSV file in a text editor, copy everything and paste it into “Or paste the file contents”.
- Press “Preview”. You see how many rows are “Ready”, “With errors” and “Already in the base”, and how the columns were matched.
- Check “Column mapping”: for each column in the file pick a field under “Our field”, or “Don't import” for a column you don’t need, and press “Preview” again.
- Press “Import”. The result shows how many rows were imported and how many skipped, and the run is added to “Past imports”.
Preview as often as you like
A preview changes nothing in your base. Fix the file and preview again as many times as you need: only “Import” writes data, and the button becomes active once a preview has found ready rows. Changing the file, the source or the data type clears the result; changing the column mapping keeps the mapping but hides the counts. Either way “Import” waits for a new preview.
Errors and duplicates
- A row with an error is never imported, not now and not later. The list under the preview shows each such row with its number in the file and what is wrong: not a date, not an email, no such plan and so on.
- If a required column is missing, the whole file is rejected rather than every row: most likely the wrong report or not all columns were exported.
- A row with more or fewer values than the header is rejected, so a stray comma cannot shift data into the wrong columns.
- Duplicates are skipped, not counted as errors: a member with the same email or phone, a plan with the same name, a membership with the same member, plan and start date. Phones are compared by their last nine digits, so a number with and without the country code matches. Duplicates inside the same file are caught too.
- All ready rows are written in one go, or none are. Running the same file again is safe: what is already there is skipped.
What imported data looks like
- Imported people arrive as contacts. They become members as soon as their memberships are imported.
- Imported plans are hidden from the website: “Who can see it” is set to “Staff only”. Check each one in Plans & products → Plans and switch it to “Everyone” if the website should sell it.
- Imported products go on sale at the Register in every branch. A category that doesn’t exist yet is created; the same name in different letter case is the same category. A product with a number in the stock column tracks stock, and that number goes to the branch chosen in “Stock goes to” as opening stock; a product without it is always available. A product with the same name, SKU or barcode as one already in easygym is a duplicate.
- A membership takes its status from the file. Without a status column it follows the dates: not started yet, active, or expired.
- A membership keeps the terms of its plan at the moment of import and the price from the file, if the file has one.
What is not imported
Only members, plans, memberships and products
Classes, bookings, invoices and payments are recognised in a file but not imported: the list marks them “This data cannot be imported yet”. Payment history and cards saved in the old system do not move either.
Imported memberships don’t renew
easygym never renews or charges an imported membership, so nobody pays twice right after the move. Renewal from a saved card works only for memberships bought in easygym itself; when an imported one ends, sell the plan again.
Related guides
- Getting startedCreate your club from an email link, go through the setup wizard, learn the Home page and the admin menu, and set things up in a sensible order on day one. The live demo lets you look around first.Read the guide
- Members and client cardsThe client base in “Members”: search, types and worklists, adding, editing and deleting a person, the member card, the website signup form and what Home flags about members.Read the guide
- Plans and membershipsCreate plans, bill them monthly or every 4 weeks, charge a yearly membership fee, sell memberships and let them renew from a saved card through the club’s own Stripe.Read the guide
- Front desk and the RegisterSell products at the Register for cash, on your bank terminal or by card through a QR code the guest pays on their own phone, add products with stock, and sell memberships from the member card.Read the guide
- Club settingsWhat lives in Settings: the club name, branches, time zone and currency, seller details and website contacts, the website address and custom domain, billing cycle, self-service, the signup form and the assistant.Read the guide