Skip to main content
You’re moving to Soundcheck with a season already on the books — thirty gigs in a spreadsheet, a folder of signed contracts, a CRM you’re leaving behind. Don’t re-type any of it. This recipe covers the three intake paths and when to use each.

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.
Import venues-and-customers-heavy data early. Once your venue directory is populated, every future gig at those rooms auto-fills its logistics, and the season you just imported can be grouped into tours for per-run financial roll-ups.

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:
  1. Create (or open) the gig and drop the files on it — a batch can hold several documents.
  2. CheckAI reads each file and proposes structured records: schedule items, crew with fees, ledger items, leads, and event fields.
  3. 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.
  4. Optionally merge across files (two documents about the same show get deduplicated, conflicts flagged).
  5. Commit what you selected. Nothing is written until you approve the plain-language summary.
This pairs naturally with the spreadsheet path: import the season’s skeleton from the export, then drop each gig’s contract on it to fill in schedules, fees, and money.

Common pitfalls

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.
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.
The importer requires the CRM manager capability. Owners always have it; admins can be granted it through roles & permissions.
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.
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.

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.