
Drop a spreadsheet, map columns, preview counts, then commit
Re-importing the same file is safe. Rows matched by natural key (or external ID, when the target
supports it) update in place instead of duplicating. Staffing already on a gig (draft, open, or
filled job offers) is skipped when the title, position, day, seats, and call window all match.
Expired or cancelled offers leave openings a later import can still fill. Zero new rows on a
second pass is your confidence check.
Before you import
- Be an organization owner or admin on the org you are loading. Settings → Connected apps → Import & export shows for owners and admins when imports are enabled for your workspace.
- Select that organization in the web app. Imports always write into the active org.
- Confirm imports are available. If you do not see Import & export under Settings → Connected apps, ask your contact to enable it.
- Download the target template from the wizard when you need a known-good column set (especially for Leads). Prefer the in-app template over guessing headers from an old CRM export.
Where to go
In the web app, open Settings → Connected apps → Import & export. Empty-state Imports is drop-first: drop files on the empty state, then review detected targets. Do not lead with an older pick-target-first wizard. There is no Organized / Processing / Queued UI.Older links to
/imports still work; they redirect into Settings → Connected apps →
Import & export.- Upload a file:
.xlsx,.csv,.tsv, or.txt(up to 25 MiB) - Paste CSV, semicolon-separated, or TSV text (up to 8 MiB)
- Drop several files at once for a season-style queue (the importer orders them: crew and rooms before gigs)
- Drop paperwork such as PDFs, Word or PowerPoint files, and photos in the same drop. Imports does not write records from paperwork; those files are set aside while the spreadsheets import.
- Drop a
.zipof those files. Each zip can be up to 256 MiB, and the zips in one drop can add up to 50 files and 256 MiB unzipped between them. It is unzipped in the browser, and files Imports can’t read, such as JSON or nested zips, are left out with a notice. Zips from Google Drive or Dropbox are not supported yet; download and drop them instead.
What to import, in order
Drop files first. The Imports page reviews each file’s target from the filename and headers, then you confirm and continue into map / review / commit. A single file whose name and headers agree on the type skips that confirmation and opens the mapping page directly. Import foundational lists first, then gigs:
Optional extras (any time after the lists they depend on):
An Events file can also list each gig’s gear (item name, quantity, and notes) in Gear item columns.
When several crew rows share one gig, set row grouping to
group_by_external_id on the Events mapping step so those rows collapse into one event with multiple members.
Coming from another system
There is no native Planning Center, Back On Stage, Master Tour (Eventric), Stagera, or LASSO / Shoflo connector. Export a CSV from that product (or reuse the Google Sheet you already used to load it), then import through Settings → Connected apps → Import & export using the order below. There are no in-product Coming-from cards. Full migration checklist and mapping traps: Coming from another system.Planning Center (churches / house of worship)
There is no Planning Center connector. Export CSVs from Planning Center, then import through Settings → Connected apps → Import & export.
There is no plan / order-of-service CSV from Planning Center. Build Setlists and Events (services as gigs) from the lists and schedules you already keep, or enter them after Crew and Songs are in.
Import order: Crew (Services People) → Songs → Setlists → Events.
Practice shape:
docs/sample-imports/customers/house-of-worship/ in the repo (volunteer team, worship songs, service schedule).
Back On Stage (bands, bookings, members, setlists)
Back On Stage has no native export and no public API. Leaving BOS usually means reusing the Google Sheet templates you (or they) used to load the product. Download or copy those sheets (File → Make a Copy), then import through Settings → Connected apps → Import & export. Template URLs ondocs.google.com may require a Google account (not public). Full Coming-from detail: Coming from Back On Stage.
Verified Leader / Members headers (htmlview):
Import order: Crew → Songs → Events. Academy/help path (not live BOS product UI): Import bookings, Build and share smart setlists.
The BOS expense CSV is payouts history, not the gig calendar. Do not treat it as your Events file.
Master Tour / Eventric (touring)
There is no Master Tour connector. Export from Eventric, then import through Settings → Connected apps → Import & export.
Map the tour-details CSV as Events, plus Venues and Clients (promoters). Import Crew from the Export Personnel CSV when you have it; use the personnel PDF only as a fallback to rebuild a Crew sheet by hand.
Practice shape:
docs/sample-imports/customers/touring-artist/ in the repo (tour personnel, routing, setlist).
Full Coming-from detail: Coming from Master Tour / Eventric.
Stagera (AV / production)
There is no Stagera connector. Prefer UI CSV / XLSX (Crew, Jobs, warehouse inventory template). OpenAPI dumps are a customer export aid, not a Soundcheck connector. Full detail: Coming from Stagera.LASSO / Shoflo (labor + rundowns)
There is no LASSO / Shoflo connector. LASSO ops CSVs have no fixed public column dictionary (use customer headers, Zapier, or swagger). Shoflo: rundown Export → CSV (Default Rundown headers documented on the Coming-from page). Full detail: Coming from LASSO / Shoflo. ShowOps / Umbrella stay BYO until a dump exists.Wizard steps
1
Parse
Upload or paste. The wizard detects the format, normalizes headers, and samples rows for
mapping. While a commit is in flight, the job is locked. Re-parses wait until commit finishes.
2
Map
Mapping is required before review. Each Soundcheck field is one row with the column it reads
and two sample values. The wizard proposes column → field mappings (heuristic match, or optional
AI mapping with PII scrubbed before any model call). Required fields that still need a column
stay at the top, and Continue to Review stays off until each one has a column or a default.
Open Options to change the import type, save the mapping for the next file with the same
columns, or, for Events with one gig across several crew rows, set Row grouping =
group_by_external_id. On Inventory, Venues, and Clients, a column you leave unmapped is
saved with each record as extra data. On Crew, Events, Leads, Songs, and Setlists, it is not
imported, and the Review step lists it. Crew columns are not kept because every crew member can
see the roster.3
Review
Dry-run before anything is written. The left panel lists Errors, Warnings, and
Creates: every row whose action is create, plus the venues, clients, or positions those rows
name that do not exist yet. The table shows every row with its action: create, update,
duplicate, error, or skipped. You can search, filter, change the
visible columns, edit a row, and uncheck rows you do not want. Notes such as “crew without email
or phone” do not block the gig itself. The invitation is simply skipped. Commit writes
the checked rows.
4
Results
Shows what was written. Each row gets an outcome you can audit (
IMPORTED, UPDATED,
DUPLICATE, FAILED, and related statuses). Imported gigs keep the status from your file. A
row with no status, or one Soundcheck doesn’t recognise, imports as Active, unlike gigs you
create in the app, which start as drafts.When a row is bad
One bad row doesn’t block the whole file.- Valid rows commit even when other rows fail validation. Commit stays available as long as at least one row can be written.
- Rows the review flagged as errors are skipped, and the job still finishes as committed. The Results step shows how many rows were imported, skipped, and failed.
- The job finishes as PARTIAL only when a row the review accepted could not be written during the import. A PARTIAL job cannot be imported again; its written rows stay as they are.
- You can download an error CSV with the original cells plus a reason, fix those rows, and upload it as a new import with just the corrections.
Possible duplicates
Two systems often name one show differently: “Harbor Night” in one export, “Harbor Night Live” in another. Soundcheck does not guess. When a row has no exact match and your org already has a gig on the same date at the same venue under a different title, the review flags the row as a possible duplicate and lists those gigs.- Merge the row into one of the listed gigs when it is the same show. The gig keeps its title, and the row’s other details update it the way an exact match would. A merge does not link the row’s external ID to the gig, so importing the same file again asks about that row again.
- Create a new gig when it is a different show, such as a matinee and an evening show in the same room.
- A row you leave unanswered is skipped. The rest of the file still imports, and the job still finishes as committed.
duplicate_answers on preview and again on commit. A commit must send the answers its preview ran with, or it is refused with 409. An import file (UEF) import sends duplicate_answers in its one request. An unanswered possible duplicate returns 400 listing each unanswered row with the event_id and title of every gig it could be, so the caller can answer without another lookup.
Each possible_duplicates entry lists the source rows of its gig in row_indexes. An answer on one of those rows answers the whole gig. If two rows of one gig carry different answers, the gig stays unanswered.
Dates in your file
Date columns accept these layouts:- Year first:
2026-07-11,2026/07/11,2026.07.11. - Dotted day first:
11.07.2026,11.07.26. - Slashes or dashes:
7/11/2026,07-11-26,11/07/2026(see the day-first rule below). - Month names in English, full or three letters, any case, with an optional weekday:
July 11, 2026,11 Jul 2026,11-Jul-2026,11-Jul-26,Jul-11-2026,11/Jul/2026,Sat, 11 Jul 2026. - Excel date cells in any display format. The day comes from the cell’s value, not from how it is shown.
9:00 PM) and two-digit years as Excel writes them (7/11/26 21:30). Two-digit years use Excel’s pivot: 00 to 29 are 2000 to 2029, and 30 to 99 are 1930 to 1999.
A workbook clock keeps its seconds when the cell’s number format shows them: hh:mm:ss, h:mm:ss AM/PM, [h]:mm:ss, or a date-time format with :ss. A time cell in one of those formats reads as 21:30:15, and a date-time cell reads as 2026-07-11T21:30:15. A format that shows only minutes reads as 21:30, and a date-time cell in one reads as 2026-07-11T21:30.
Day first or month first. A slash or dash date such as 06/07/2026 can be read either way. Soundcheck reads every date in each column together, and each column has its own order. A cell is read in the order of the column it comes from, so a second column mapped to the same field cannot flip the first: a fallback column holding 25/07/2026 leaves a 06/07/2026 in the primary column as June 7. Every uploaded row of a column counts toward that column’s order, including a row you uncheck, so unchecking a row never changes another row’s date:
- A cell whose first number is over 12 (
25/07/2026) makes the column day first. - A cell whose second number is over 12 (
07/25/2026) makes the column month first. - A column that shows neither reads these dates month first, so a lone
06/07/2026is June 7. - A column that shows both is refused for its ambiguous cells (
06/07/2026). The preview names the conflict. Cells that are clear on their own still import. - Only a cell that is a real date in the order it implies counts toward that order.
31/02/2026,99/07/2026and15/13/2026imply day first but are not real dates in that order, and06/31/2026implies month first but is not a real date in that order, so none of them can flip the column. Each is reported on its own field. - A date column mapped with a
parse_dateorparse_datetimehint (set by AI mapping or the API) first reads each value as that exact layout, soparse_date(YYYYMMDD)andparse_datetime(YYYYMMDD)read20260711as July 11 andparse_date(MM-DD-YYYY)reads07-11-2026as July 11. A shift call column with aparse_datetimehint that names a clock reads a call in that layout too:parse_datetime(YYYYMMDDHHmm)reads202607112130as 21:30 on that day, and a value that states only a day keeps the call on that day with no call time. Two-digit years in a hint follow the same pivot. A value that is not in that layout reads by the general rules in the hinted order, and a value that fits neither is an error on its field.
2026 or 12 in a date column is an error, not a date. A value Soundcheck cannot read with certainty is reported on its field in the preview instead of being guessed. Lead and ledger dates in an ingested file are read by the same rules.
Money, currency and numbers in your file
Fee, performance fee, shift fee, replacement cost and daily rate cells accept:- Plain numbers:
1200,1200.50,-450or(450)for a negative. - Grouping with a comma, dot, space, no-break space, thin space or apostrophe:
1,200.50,1.200,50,1 200,50,1'200.50,1.250.000. - A decimal comma after one or two digits:
450,50is 450.50. A comma before exactly three digits is grouping:1,250is 1250. A comma or dot before four or more digits is refused, because1,2000could mean 1.2 or 12000. - A dot before exactly three digits in a money cell is refused, because
1.200could mean 1.2 or 1200. Write1200or1.2. - A currency sign or code before or after the amount:
$1,200.50,€1.200,50,450,50 EUR,GBP 300,US$450. The signs read as€EUR,£GBP,¥JPY and₹INR. A bare$sets no currency. A three-letter code must be an ISO 4217 code, soSEK 450and450 eurwork. Any other word next to an amount, such asNet 500,Fee 500,500 maxorXYZ 450, is a preview error on that cell. - One amount per cell. A range such as
$500-600or500 to 600is refused, and so is other text after a money amount.
USD, eur, Eur), the same list that fee cells use, or euro, euros, pound, pounds, US dollar, US dollars or US$. A three-letter word that is not an ISO 4217 code is refused, so NET, MAX and XYZ are preview errors on that cell, as are € and Dollars.
A row has one currency. If the currency column is filled, it sets the gig’s currency. If it is empty, the first money cell on that row with a sign or code sets it. A money cell on the row in a different currency is refused.
Rows that merge into one gig (group by external ID) must agree too. A later row in another currency has each of its money values refused: the gig fee, each member’s performance fee and each shift fee is a preview error on its own field, and the rest of that row still merges. A later row with a different gig fee in the same currency is a preview error on that row, and the first row’s fee stays.
Inventory costs and rates are stored in USD, so a euro or pound cell there is a preview error. Pasted text has no currency column, so a euro or pound amount in pasted text is refused as well; a spreadsheet upload or a currency column carries the currency.
Counts such as capacity, quantity, tempo and song order must be whole numbers. 2.5 is an error, not 2. None may be negative, so -1 is an error too. A count or a song duration above 2,147,483,647 is an error, because that is the largest whole number Soundcheck stores. In each case the cell is left out and the rest of the row imports. Capacity also accepts words after the number (1,200 max). Shift seats and gear quantities must be whole numbers above zero: 0, 2.5 and two are preview errors.
Coordinates take a decimal point or a decimal comma (40,7128). A comma before exactly three digits is a decimal comma here, not grouping: 40,712 is 40.712 and 1,250 is 1.25. Coordinates are never grouped, so the other reading would turn 0,150 into 150. Latitude must be between -90 and 90, and longitude between -180 and 180.
Delimiters, encodings and text files
Uploaded and pasted text is read from the file itself:- Delimiter. Fields are separated by a comma, a semicolon or a tab. Soundcheck looks at the first ten non-blank lines and counts each delimiter outside quotes. A tab wins when every sampled line has the same non-zero number of tabs, so a tab table whose header holds
Venue, Citystays split on tabs. Otherwise the semicolon or comma that splits every line into the same non-zero number of fields wins; if both do, the one with more fields wins, and on a tie semicolon wins. In a semicolon file,500,50stays one value. A file sent with a TSV content type (text/tab-separated-values) is always tab-separated. - Encoding. UTF-8 is read as UTF-8, with or without a byte order mark. UTF-16 with a byte order mark is read in the byte order the mark gives, big or little endian. UTF-16 without a mark is read as little-endian when every second byte is zero, which covers plain text saved as “Unicode text”. Any other file that is not valid UTF-8 is read as Windows-1252, which is how Excel saves CSV on Windows, so
CaféstaysCafé. - Refused. A UTF-16 file with no byte order mark that contains a character above U+00FF (Greek, Cyrillic, Japanese), a UTF-16 file with a stray byte at the end, and a file with NUL bytes that is not text each fail with an error. Save the file as UTF-8 CSV or
.xlsxand upload it again. A legacy.xlsworkbook fails with “save as .xlsx or .csv”. - XLSX. A file is read as a workbook only when its bytes are a zip archive. A CSV sent with a spreadsheet content type, such as
application/vnd.ms-excel, is read as CSV. - Leading whitespace. Pasted and uploaded text keeps its leading tabs and spaces. Only trailing whitespace and blank lines at the end are dropped. A header cell left blank is named
column_followed by its position. So a tab-separated paste whose first column has no header, withNameandRoleafter it and a row that starts with a blank cell, reads Alice under Name and DJ under Role.
Leads
A HubSpot-style export with only name / email / date / company is not enough for leads here. Required fields include:- Event type
- Location
- Deal stage
- Set a default for a required Soft field when every row should share a value
- Choose Don’t import / ignore for columns you intentionally skip
- Download the lead template CSV from the wizard and reshape your file
Leads are on every plan. Access depends on role (owner, admin, or gig coordinator), not your
subscription tier. See Lead tracking.
After commit: start running
Imports are only useful if you leave the wizard and run the business. After a successful commit:Events → gigs
Open Gigs (/gigs). Your imported shows appear in the list. Open a gig to see team, venue, client, and dates: the same page you’d see on a hand-created gig. Continue with Creating gigs and Team building for day-to-day changes.
Crew → invitations
Imported crew become pending organization members. The import does not send invitations: open the roster from the Results step (View pending members) and invite people when you are ready. They accept in the app (web or mobile). Claimed emails are left alone on re-import. See Staff and Invitations. Crew (MEMBER) import requires email in the spreadsheet wizard today. Phone-only roster rows fail. On an Events import, nested invitations may still note “crew without email or phone” without blocking the gig itself.Venues and clients
Imported rooms and customers are available when you create or edit gigs, and when a later Events import matches names. Manage them under Venues and Clients.Songs and setlists → Show Prep
Imported songs land in the song library; setlists attach to your catalog. Use them from Song library and Setlists / Show Prep on the gig. Spreadsheet Songs mapping has no live CCLI column today.Leads → pipeline
Open Leads to work stages and convert bookings. See Lead tracking and Converting leads.Confidence check: re-import the same file
Upload the same spreadsheet again. The Review step should show 0 new rows and only updates (or unchanged). That proves natural keys held. Safe to re-send a corrected export later without forking your data.Sample files (in the repo)
These live underdocs/sample-imports/ in the repository. Filenames below are repo paths, not necessarily the download names shown in the in-app template buttons.
Import org lists first (Crew → Venues → Clients → Songs → Setlists), then events. Several of the primitive samples include intentional bad rows so you can practice the error path.
Every invite needs a way to reach someone
An invitation needs a way to reach the person: at least one of email or phone. Missing both does not block writing the gig; the invitation is skipped and the Review step calls that out as a warning. Standalone Crew import still requires email on each roster row.Export this organization
Owners and admins with imports enabled can click Download workspace on Settings → Connected apps → Import & export to get the eight catalogs. The zip has one import file (UEF 2.0) plus wizard-ready CSVs. Restore the CSVs by dropping the zip on the same page; it readscsv/*.csv and leaves the JSON out. To commit the JSON instead, use Import a Soundcheck file on the same page. See Export a workspace.
Related
Export a workspace
Soundcheck → Soundcheck zip: import file JSON plus drop-first CSVs
Coming from another system
Planning Center, Back On Stage, Master Tour, Stagera, or LASSO: export CSV, then Settings → Data
& knowledge → Imports
Importing your season
Spreadsheet + paperwork + sync recipe for a full book of business
Documents
Organization documents
Universal Event Format
Schema reference for partner feeds. Not required for spreadsheet operators
AI file ingestion
Extract records from contracts and call sheets