Bulk Orders Import¶
Required Role
Administrator or Box Office can run bulk order imports.
Navigation: Options > Imports > Bulk Orders Import
Purpose¶
This import creates complete ticket orders with customer information, seating assignments, and payment processing. It supports both reserved seating and general admission productions and can automatically process orders or hold them for manual review.
Use this import when you need to load a large number of ticket orders at once -- for example, migrating orders from another system, processing group sales, or entering season seating assignments in bulk.
User Options¶
| Option | Required | Description |
|---|---|---|
| Theater Association | Yes | Select the theater for all imported orders |
| Payment Type | No | Select a payment method to process orders immediately, or leave blank to place on hold |
| Add to Email List | No | Check to automatically add customers to email marketing lists (disabled for season seating) |
| File Upload | Yes | CSV file containing order data |
Required CSV Headers¶
| Header | Description |
|---|---|
ExternalId |
External system identifier (optional -- creates "External ID" tag) |
Id |
Existing customer address ID (takes precedence over ExternalId if provided) |
ProductionCode |
Production identifier for the theater |
PerformanceCode |
Specific performance identifier for seating |
Seating |
Comma-delimited list of seat locations, e.g., A1,A2,A3 (optional for general admission) |
NumberOfTickets |
Number of tickets (required for general admission; overridden by Seating count for reserved seating) |
TicketClass |
Ticket class code (pricing tier) |
FirstName |
Customer's first name |
MiddleName |
Customer's middle name |
LastName |
Customer's last name |
FullName |
Complete name (overrides individual name fields if provided) |
EmailAddress |
Customer's email address |
Phone |
Contact phone number |
Address |
Street address line 1 |
Address2 |
Street address line 2 |
City |
City name |
State |
State abbreviation |
ZipCode |
ZIP code |
Tag1 |
Custom tag label |
TagValue1 |
Value for custom tag 1 |
Tag2 |
Second custom tag label |
TagValue2 |
Value for custom tag 2 |
How It Works¶
Customer Matching¶
The import identifies customers in this priority order:
- Id field -- If an existing Stagemgr address ID is provided, that record is used directly.
- ExternalId field -- If provided, the system searches for a customer tagged with that external ID.
- New record creation -- If neither ID matches, a new customer record is created from the name, email, address, and phone fields.
Reserved Seating vs. General Admission¶
| Scenario | Behavior |
|---|---|
| Seating column populated | The system assigns the listed seats. The number of tickets equals the number of seats listed, regardless of NumberOfTickets. |
| Seating column empty | The system creates a general admission order using the NumberOfTickets value. |
The import validates seat availability and prevents double-booking. If a requested seat is already assigned, the row will fail and appear in the result file with the conflict described in its Error column.
Order Processing Logic¶
The import handles orders differently depending on whether the production uses season seating:
Season Seating Productions¶
Season Seating Override
All orders for season seating productions are automatically placed on HOLD status, regardless of the payment type selected or email list settings. This ensures season seating orders receive manual review before processing.
- Orders are placed on HOLD
- Customers are not added to email lists
- No immediate email notifications are sent
Regular Productions¶
| Payment Type Selected? | Result |
|---|---|
| Yes | Orders are processed immediately. Customers receive email confirmations. Added to email lists if the checkbox is checked. |
| No (left blank) | Orders are placed on HOLD for manual processing. |
Error Handling¶
Rows that cannot be processed are rolled back completely — no partial order is saved — and listed in the result file with a per-row description in the Error column. Common failure reasons include:
- Invalid
ProductionCodeorPerformanceCode - Requested seat already assigned to another order
- Invalid or unrecognized
TicketClasscode - Missing required fields
- Selling more tickets than remain for the performance
The result file is produced as order_import_results_<your-file-name>.csv and emailed to you when one or more rows fail. See Result File for the full naming rules and retry workflow.
Expected Outcome¶
| Order Type | Status | Email Notifications | Email List |
|---|---|---|---|
| Season seating (any payment type) | HOLD | None | Not added |
| Regular with payment type | Processed | Confirmation sent | Added if checked |
| Regular without payment type | HOLD | None | Not added |
A result file (order_import_results_<your-file-name>.csv) listing every row, with an Error column populated for any that failed, is emailed to you when one or more rows could not be processed.
Example CSV¶
ExternalId,Id,ProductionCode,PerformanceCode,Seating,NumberOfTickets,TicketClass,FirstName,MiddleName,LastName,FullName,EmailAddress,Phone,Address,Address2,City,State,ZipCode,Tag1,TagValue1,Tag2,TagValue2
,,ALLY,ALLY-0315,"A1,A2",2,GA,Jane,,Smith,,jane@example.com,312-555-0100,123 Main St,,Chicago,IL,60614,,,,
,,ALLY,ALLY-0315,,4,GA,Michael,,Chen,,mchen@example.com,773-555-0200,456 Oak Ave,Apt 3,Evanston,IL,60201,Group,SpringGala,,
Best Practices¶
-
Validate seat names. For reserved seating imports, make sure seat identifiers in the
Seatingcolumn match the seat names in the production's seat map exactly. -
Test with a small batch first. Before importing hundreds of orders, import 3--5 rows to verify everything maps correctly.
-
Use HOLD for review. When importing orders that need manual verification, leave the payment type blank so orders are placed on HOLD. Process them individually after review.