Import / export classes

Download classes as CSV, edit offline, then preview and commit updates. Columns match the staff round-trip format below (UTF-8 CSV or first sheet of Excel). The separate class report export is for reading only — instructor, enrolment and member price are not import fields.

View Import History

Export classes

Two files, both scoped by the filters below. Download CSV for re-import uses the staff import column layout — edit it and upload it back. Download class report adds instructor, enrolled/waitlisted and member price with separate date and 12-hour time columns, and is for reading only.

The class report cannot be uploaded back

Its instructor, enrolment, member price and split date/time columns are not import fields. The importer ignores unknown headers without complaining, so editing the report and uploading it would report “0 errors” and change nothing. Use Download CSV for re-import for any edit you intend to save.

Import classes (upsert)

Preview changes from CSV or Excel, then confirm to create or update classes by class_code.

Staff CSV / Excel column reference

Header row should use these column names (snake_case). Easiest path: use Export classes above, edit, then Preview import. You can also start from sample CSV.

Tip: Exports are UTF-8 with a byte-order mark (BOM) — that is what makes accented names read correctly in Excel and Numbers. Leave it in place: re-uploading an unmodified export works as-is, because the importer strips the BOM before matching headers. For Excel uploads, only the first sheet is read.

ColumnRequiredDescription
class_codeNoStable upsert key. Leave empty only for new rows; must match an existing class to update. Export fills this for you.
nameYesProduct / class display name.
languageNoe.g. Spanish, French.
levelNoe.g. A1, B2 (CEFR-style labels).
termNospring, summer, or fall (aliases: sp, su, fa).
semester_nameNoMust match an existing semester name, or use a creatable pattern like "Spring 2026" for new semesters. Required when creating a class without an existing class_code.
session_numberNoInteger session index.
session_nameNoe.g. Session 1.
days_of_weekNoComma-separated: Mon, Wed or Tuesday, Thursday.
start_datetimeNoISO-8601 recommended (matches export). Other strings are parsed with JavaScript Date where possible.
end_datetimeNoSame as start_datetime; must be after start when both set.
location_typeNoIn-Person, Online, Hybrid (inferred from text if fuzzy).
roomNoRoom or space name.
capacityNoMax seats (integer).
min_capacityNoMinimum enrollment (integer).
base_price_centsNoPrice in cents (integer), e.g. 35000 for $350. Alias header: price (mapped to cents in some parsers).
member_discount_percentNoLegacy percent field. NOT used for class pricing — member price for classes comes from the fixed per-class session rates. Leave blank. (Existing non-blank values on older classes are dead data and are ignored at checkout.) To see the member price a class actually charges, use the class report export.
intensityNoregular or intensive (partial text match).
activeNotrue/false, yes/no, 1/0.