Importing from your old system
Bring people, leads and memberships over from MyStudio, ABC Fitness, or any CSV or JSON — preview first, nothing saved until you confirm.
Open Account → Imports → New import, pick where the data is from and what it is, and paste the file's contents (or a link to it). Monody checks the file and shows a preview of what would be imported; nothing is written until you choose Import now. Every run is logged with what it inserted, updated, skipped and refused, and every refused row carries its reason.
Sources. MyStudio and ABC Fitness exports are mapped for you from their standard column names. For any other system export a CSV or JSON and give the column mapping yourself — {"firstName":"FName","lastName":"LName","email":"Email"} — with {"source_id_field":"customer_id"} under Advanced options naming the column that identifies each record, so a second run updates instead of duplicating. HubSpot, GymSales and LineLeader have no mapping of their own yet; export them as CSV.
What imports, and in what order.
- People — first name and last name are required; email, phone and date of birth come along. A MyStudio export is read from
StudentId,FirstName,LastName,Email(orParentEmail),Phone,DOB; ABC fromMemberID,FirstName,LastName,Email,MobilePhone,DOB. Imported people who have an email receive an invitation to set up their portal. - Leads — name, email and phone; they land as leads with no marketing consent recorded (consent is never assumed from an export).
- Memberships — run after People from the same system, so each row's member id resolves to the person it belongs to. The plan comes from a mapping you give under Advanced options:
{"plan_map":{"CREATE after school":"After school"},"default_plan":"After school"}maps each program name in the file to a plan you have created under Billing & Plans (by name or by id). The membership's state, start and end dates come from the file; an active membership whose end date has passed lands as expired.
What is refused, and why. The preview resolves what the run would resolve. A membership row whose person was not imported is refused with member_not_imported; a program with no mapping with plan_unmapped (the message names the program and the exact option to add); a mapped plan that does not exist with plan_not_found; a state Monody does not know with state_unknown. A People row without both names is refused with missing_name. Nothing is skipped in silence: a row is inserted, updated, or listed under Row errors with its reason.
Idempotency. Every imported record remembers its source id. Running the same file again updates the records it already created and inserts only the new ones, so a migration can be rehearsed on a play workspace and re-run on the day.