Overview
- AI-powered import - upload a CSV and let AI detect the record type and map your columns to 1Club fields, with a confidence score and reasoning.
- Manual import - pick the record type yourself and download a matching template.
- Per-type templates - download a CSV template with the exact expected columns for any record type.
- Validated preview - see total, valid, and invalid row counts and per-row errors before anything is written.
- Selective execute - only valid rows are imported; invalid rows are reported, not saved.
- Chained member import - a single member row can also create a transaction, a membership, a wallet credit, and household dependents.
- Idempotent re-runs - existing members (matched by email) are reused rather than duplicated.
The import wizard
The wizard has four steps, shown as a stepper across the top: Select Entity, Upload File, Preview, and Import.Recommended import order
Because records reference each other, import them in dependency order. The wizard states it on the first step:- Members (contacts)
- Plans
- Memberships
- Classes
- Bookings
- Invoices
Step 1 - Select entity
You have two paths on this step. AI-powered import. Upload a CSV into the AI card. The analyzer reads the headers and the first few rows, then proposes:- the detected record type, with a confidence percentage,
- a short reasoning line explaining the detection,
- a set of column-to-field mappings, shown as
"Your Column" -> fieldchips.
Step 2 - Upload file
If you uploaded through the AI card, your file carries over and the wizard notes it is already uploaded. Otherwise, upload the CSV here. Use Download Template to get a CSV with the exact expected column names for the selected record type; fill it in and upload it back. Only.csv files are accepted.
Step 3 - Preview
The preview validates every row against the selected record type without saving anything. You get three counts: Total Rows, Valid Rows, and Invalid Rows. Filter tabs let you view All, Invalid, or Valid rows, and each invalid row lists its specific validation errors. You can download the previewed rows (with their status and errors) as a CSV to fix them offline.Step 4 - Import
Executing writes the valid rows to your organization. The results screen reports Total Rows, Imported, Skipped, and Errors, and lists the first several row-level errors if any occurred. Use Import another to start a fresh import. For membership imports, executing first opens a short dialog asking whether to mark the associated transactions as paid. If you tick Mark as paid, you choose a payment type: Cash, Check, Bank Transfer, or Other.Field mapping and templates
Each record type has a fixed set of expected fields. The template download gives you those exact column headers.
Useful conventions the importer follows:
- Member name - use either
name(a full name that is split into first and last) orfirstNamepluslastName. At least one is required. - Custom fields - for member imports, any column whose header starts with
custom_is treated as a contact custom field automatically. Do not map those to standard fields. - Tags -
tagstakes a comma-separated list, for exampleOpen day, Lead. A tag that does not exist yet is created as a manual tag, so you do not have to set your tags up before importing. To tag a whole upload at once, put the same value in thetagscolumn of every row. - Dates - accepted formats are
dd.MM.yyyy,dd.MM.yyyy HH:mm:ss,yyyy-MM-dd,yyyy-MM-dd HH:mm:ss, and ISO-8601. A row with an unparseable date is flagged in the preview. - Transactions default to paid, using your organization currency when none is given.
Chained member import
A member import is more than contacts. When the extra columns are present on a member row, the same row can also create related records in one pass:- A transaction -
transactionAmount,transactionDate,transactionDescription,transactionPaymentStatus,transactionType,transactionCurrency,transactionTaxAmount,transactionTotalAmount. - A membership -
planName,membershipStartDate,membershipEndDate,membershipStatus,membershipPrice,membershipBillingFrequency,membershipAutoRenew,membershipSignupFee, plus session totalsmembershipMaxUses,membershipUsed,membershipUsesRemaining. - A wallet credit -
wallet, a decimal amount credited to the member’s wallet. - Household dependents -
dependent, a comma-separated list of dependent names (for example children or minors) added under this member’s household.
How duplicates are handled
Members are matched by email within your organization. If a row’s email already exists:- The existing member is reused, not recreated.
- The transaction, wallet credit, notes, tags, and custom fields on that row are skipped, so re-running an import does not double-charge or double-note anyone. This also means an import cannot add tags to members who are already in your organization - tag those from their profile instead.
- A membership or dependents on that row are still attached to the existing member. This is how you deliberately import several rows for the same member (one per membership) or add family members to an existing account.
Worked example: migrating from a legacy system
Suppose a padel and tennis club is moving off an old spreadsheet-based system and exports a members file,members.csv, with columns like Full Name, Email, Mobile, Join Date, Plan, Membership Start, Total Sessions, Sessions Used, and Kids.
- Go to Settings > Data Tools > Import.
- Drop
members.csvinto the AI-powered import card. The analyzer detects Members (Contacts) and proposes a mapping such as"Full Name" -> name,"Mobile" -> phone,"Join Date" -> createdAt,"Plan" -> planName,"Membership Start" -> membershipStartDate,"Total Sessions" -> membershipMaxUses,"Sessions Used" -> membershipUsed, and"Kids" -> dependent. - Confirm and continue to the Preview. Two rows are flagged: one has
Join Dateas31/13/2023(an impossible date) and one is missing an email. The counts read 48 valid, 2 invalid. - Download the invalid rows, fix the date and add the missing email in your source, and re-upload. The preview now reads 50 valid, 0 invalid.
- Execute. Because these rows carry a plan and a start date, each member is created together with a session-based membership, and any names in the
Kidscolumn are added as household dependents under the parent. Session usage imports so remaining sessions are correct from day one.
Other vertical examples
- Martial arts gym - import a
plans.csvfirst (belt-progression memberships withmaxUsesper grading block), then a members file that references those plans byplanNameso each student lands on the right package. - Pilates and yoga studio - import class-pack memberships with
membershipBillingFrequencyset toone_timeandmembershipMaxUsesfor the pack size, so class credits carry over. - Climbing gym - import
transactions.csvof past day-pass sales keyed bycontactEmail, leavingpaymentStatusblank so they default to paid in your organization currency.
Tips and best practices
- Let the AI analyzer go first. It maps most legacy exports correctly, and you can still override the record type manually.
- Import in dependency order (members, plans, memberships, classes, bookings, invoices) so references resolve.
- Set up clubs, areas, and instructors before importing classes and bookings, which reference them by name or email.
- Use the preview as a linter. Download the invalid rows, fix them in your source file, and re-upload rather than editing inside 1Club.
- Re-running is safe for members. Email matching means a second run reuses members and only adds missing memberships or dependents.
- For member imports, prefix custom columns with
custom_so they map to contact custom fields automatically. - Tag the batch as you import it. Add a
tagscolumn with the same value on every row (for example the source or campaign the list came from) so you can filter and message that group afterwards. Tags only apply to members the import creates, so do this on the first run.
Troubleshooting
Related
Data export
Export your records back out to CSV.
Members overview
Contacts, custom fields, and how imported members behave.
Memberships
The membership catalog and checkout that chained imports create against.
Plans
Plans that membership imports reference by name.