For admins
Export your workspace — CSV, JSON, or the lot
Three ways out. Full workspace as a single JSON envelope. Per-entity sheets — students, courses, orders — as CSV or JSON for Excel or another tool. And a media inventory listing every video, PDF and recording we hold for you, so you can reconcile it and pull the originals. Re-upload the envelope and you're back where you were.
Last updated Aug 21, 2026
Four flavours of export
- Full workspace JSON — every data slice in one file. Use for backup + cross-workspace migration. (Data, not media — see below.)
- Per-entity CSV — students, courses, or orders as a flat spreadsheet. Use for Mailchimp / Excel / Google Sheets.
- Per-entity JSON — same row data as the CSV, but as a structured array with format/version metadata. Use for scripting + tool integrations.
- Media manifest CSV — every video, PDF, image and recording we hold for you, with sizes and dates, so you can reconcile and retrieve the original files.
Export everything (full workspace)
Open /dashboard/settings → Workspace data → Export workspace. We scan every tenant-scoped slice in your workspace, package it into a single versioned JSON envelope, and trigger a browser download. Nothing leaves your machine — the file is generated client-side.
Your media files
In the same Workspace data card, click “List my media files”. We inventory everything we hold for your academy — every image, PDF, video and class recording — with its size, its type and when it was last changed, and give you a running total. “Download manifest (CSV)” saves that inventory as a spreadsheet.
This is the honest answer to “can I get my originals back if I leave?”. Your uploads are stored exactly as you gave them to us — there is no DRM container and no proprietary packaging to unwrap — so the manifest lets you reconcile what we hold against what you expect, and pull the files down. It is two steps rather than one, and it is worth asking every DRM-based platform on your shortlist the same question, because there the answer is usually longer.
What's in the file
- Courses, modules, lessons (including quiz definitions + drip schedules)
- Students, faculty, enrolments, completion + attendance history
- Quiz attempts + assignment submissions + grades
- Live sessions + past-class recordings + attendance
- Orders, entitlements, subscriptions, products, coupons
- Certificates + certificate batches + verification records
- Portal config, pages, blog posts, faculty showcase, testimonials
- Reviews, doubts (incl. guest enquiries), announcements, discussions
- Org settings (notification prefs, currency, brand attribution)
- Wall of Love entries, referral codes + conversions
File format
{
"format": "thebigclass.workspace-export",
"version": 1,
"exportedAt": "2026-05-19T08:42:13.521Z",
"sourceTenant": "snapied",
"sourceTenantName": "Snapied",
"counts": { "courses": 47, "students": 1243, "orders": 89, "posts": 12 },
"slices": {
"lms.courses.v1": [ /* … */ ],
"lms.users.v1": [ /* … */ ],
"store.orders.v1": [ /* … */ ],
"portal.config.v1": { /* … */ },
"portal.pages.v1": [ /* … */ ]
}
}Export by entity (CSV or JSON)
Same panel, the "Export by entity" row. Three entities, two formats each: Students, Courses, Orders × CSV or JSON. CSV is the universal spreadsheet format — Excel, Numbers, Google Sheets, Mailchimp, every CRM. JSON keeps the same shape but as a structured array with format + version metadata so a script can consume it.
- Students CSV columns — id, name, email, phone, enrolledCourses (pipe-separated), joinedAt.
- Courses CSV columns — id, slug, title, description, priceInr, status, facultyId, modulesCount, lessonsCount, createdAt. Curriculum trees don't fit a flat CSV — use the workspace JSON for those.
- Orders CSV columns — id, studentEmail, itemTitle, amountInr, status, createdAt.
Import a CSV (students or courses)
Same panel: "Import CSV →" → Students CSV / Courses CSV. The picker accepts any RFC 4180 CSV — same shape Excel and Google Sheets export by default. We parse client-side, show you the detected columns + first-row preview in a dialog, you confirm. Existing rows get updated, new rows get added. Unlike the full workspace import, CSV import is non-destructive.
- Students match on the email column (case-insensitive). Rows without an email are skipped + counted.
- Courses match on id first, then slug. Module + lesson trees from the existing course record are preserved — CSV import only touches flat metadata.
- Non-student users (admins, faculty) in your workspace are untouched by a student CSV import.
Reimport (full workspace JSON)
Same panel: "Import from a full workspace export" → Choose export file. We parse the file, validate the envelope, and surface a preview with row counts ("47 courses, 1,243 students, 89 orders, …") before anything writes. You confirm; we overwrite the target workspace and hard-reload so every store re-hydrates against the fresh state.
Cross-workspace import
The same file works in a different workspace — perfect for "I'm starting fresh, bring everything from the old account". Sign into the new workspace, open settings, pick the export file you downloaded earlier, confirm. Everything lands in the new workspace's storage.
Async + safe on big workspaces
Both export and import yield to the browser between every slice (setTimeout 0) so the dashboard never freezes — even on workspaces with tens of thousands of records. A live progress bar shows "reading lms.courses.v1 (47/89)" as it works. If browser localStorage quota is exceeded mid-import, we stop and tell you exactly where; partial writes leave the workspace in a consistent state because each slice is one atomic localStorage.setItem.
When to use this
- Switching to a new workspace (paid plan upgrade, multi-tenant setup, fresh account).
- Backing up before a major migration or template apply.
- GDPR / data-portability requests from your audit team.
- Moving everything off the platform — yes, including off our platform. Keep the file.
Related