Pick your path
All three land in the same normalized data via the Universal Event Format, so mixing paths is safe — a gig imported from a spreadsheet and one extracted from a contract behave identically afterward.
The spreadsheet season
1
Shape the export
One row per gig (or per crew member per gig — see grouping below) with columns for name, date, venue, customer, and crew contacts. If your old system has stable IDs, keep the ID column: mapped external IDs make re-imports update in place instead of duplicating.
2
Parse
Go to Imports, upload the file (
.xlsx/.csv, up to 25 MiB) or paste CSV/TSV. Soundcheck normalizes the headers and samples the rows.3
Map
Review the proposed column → field mappings and adjust. Several crew rows for the same gig? Set row grouping so they collapse into one event with multiple members. Save the mapping as a template if you’ll import this shape again.
4
Preview — the dry run
The preview shows exact create-vs-update counts for events, venues, customers, and invitations, plus row-level errors (missing dates, crew without an email or phone). Nothing is written yet. The numbers you see here are exactly what commit will do.
5
Commit
Write the records. Every row gets an outcome — imported, updated, duplicate, or failed — so you can audit the run. Re-running the same file later produces updates, not duplicates.
The paperwork pile
For the gigs that exist only as documents — a signed contract, a forwarded email thread, a call sheet PDF — use AI file ingestion:- Create (or open) the gig and drop the files on it — a batch can hold several documents.
- CheckAI reads each file and proposes structured records: schedule items, crew with fees, ledger items, leads, and event fields.
- Review the proposals — each row is marked new or a match against data you already have, so re-ingesting an updated contract won’t fork your roster.
- Optionally merge across files (two documents about the same show get deduplicated, conflicts flagged).
- Commit what you selected. Nothing is written until you approve the plain-language summary.
Common pitfalls
Crew rows were skipped during commit
Crew rows were skipped during commit
An invitation needs a way to reach the person — each crew row must have an email or a phone number. Rows without either are skipped, and the Preview counts reflect that before you commit.
I imported the same file twice and worried about duplicates
I imported the same file twice and worried about duplicates
The importer is idempotent: rows matched by external ID or natural key (like title + date for events) update in place. Re-importing a corrected file is the intended fix loop, not a hazard.
I can't see the Imports page
I can't see the Imports page
The importer requires the CRM manager capability. Owners always have it; admins can be granted it through roles & permissions.
My spreadsheet has gigs, but the fees are only in the contracts
My spreadsheet has gigs, but the fees are only in the contracts
Use both paths: import the gigs from the spreadsheet first, then drop each contract onto its gig and let ingestion propose the ledger items and crew fees.
Past seasons — should I import those too?
Past seasons — should I import those too?
If you want history and reporting, yes — imported past gigs can be marked Completed/Settled so your books reflect them. If you only care about what’s ahead, importing just the upcoming season keeps things lighter.
Related
Operator data imports
The four-step wizard in full detail.
AI file ingestion
Extract records from contracts and call sheets.
Universal Event Format
The shared schema behind every intake path.
n8n CRM sync
Recurring sync for sources with a webhook.