Import & Export
Import & Export
Moving event data in bulk — whether migrating from another platform, loading a season’s worth of events, or backing up your catalog — requires reliable CSV import and export. Tickets Please provides both from a single admin page.
Navigate to Events > Import/Export to access the import and export tools.
Import Order Matters
Tickets Please uses relationships between entities. Venues and organizers must exist before you can link events to them, and events must exist before you can create tickets for them. Always import in this order:
- Venues — Create all venue records first.
- Organizers — Create all organizer records.
- Events — Import events, referencing venues and organizers by title or ID.
- Tickets — Import tickets, referencing events by title or ID.
Importing out of order causes unresolved references. If an event CSV row references a venue that does not exist yet, the venue field is left empty on that event.
CSV Column Requirements
Each entity type expects specific columns. Column headers must match exactly (case-insensitive).
Events
| Column | Required | Notes |
|---|---|---|
title | Yes | Event name |
description | No | Full HTML supported |
start_date | Yes | YYYY-MM-DD HH:MM:SS format |
end_date | Yes | YYYY-MM-DD HH:MM:SS format |
venue | No | Venue title (matched by name) or ID |
organizer | No | Organizer title or ID. Multiple separated by commas |
category | No | Category name. Created if it does not exist |
status | No | publish, draft, pending. Default: draft |
featured | No | yes or no |
all_day | No | yes or no |
cost | No | Display cost string (e.g., “$25”) |
website | No | External event URL |
image | No | URL to featured image |
Venues
| Column | Required | Notes |
|---|---|---|
title | Yes | Venue name |
address | No | Street address |
city | No | City name |
state | No | State or province |
zip | No | Postal code |
country | No | Country name |
phone | No | Contact phone |
website | No | Venue website URL |
Organizers
| Column | Required | Notes |
|---|---|---|
title | Yes | Organizer name |
phone | No | Contact phone |
website | No | Organizer website URL |
email | No | Contact email |
Tickets
| Column | Required | Notes |
|---|---|---|
title | Yes | Ticket name (e.g., “General Admission”) |
event | Yes | Event title or ID |
type | Yes | paid, rsvp, or free |
price | No | Numeric price. Required for paid type |
capacity | No | Integer. -1 for unlimited |
start_sale_date | No | YYYY-MM-DD HH:MM:SS |
end_sale_date | No | YYYY-MM-DD HH:MM:SS |
sku | No | Unique SKU string |
description | No | Ticket description |
Column Mapping
After uploading a CSV file, the column mapping screen lets you match your CSV headers to Tickets Please fields. This is useful when your source data uses different column names (e.g., “Event Name” instead of “title”).
- Upload your CSV file and select the entity type.
- The mapping screen shows each CSV column alongside a dropdown of available plugin fields.
- Adjust mappings as needed. Unmapped columns are ignored.
- Click Import to begin processing.
Duplicate Handling
When an imported record matches an existing record by title, the importer can either skip the duplicate or update the existing record with the new data. This behavior is configured in code via filters and defaults to skip.
Title matching is case-insensitive and ignores leading/trailing whitespace.
Batch Processing
Large CSV files are processed in batches to avoid PHP timeout limits. The importer handles chunking automatically. For files with thousands of rows, import runs in the background and you can navigate away from the page without interrupting the process.
A progress indicator shows how many rows have been processed and how many remain.
Exporting Data
Export any entity type to CSV with optional filters:
- Select the entity type (Events, Venues, Organizers, or Tickets).
- Optionally filter by date range (start and end dates).
- Optionally filter by category (events only).
- Optionally filter by status (published, draft, pending).
- Click Export.
The browser downloads a CSV file named {entity}-export-{date}.csv (e.g., events-export-2026-02-11.csv).
Exported CSVs use the same column format as imports. You can edit an export file and re-import it to make bulk updates.
Common Questions
Can I import events with tickets in one CSV file? No. Events and tickets are separate entity types with different column structures. Import events first, then import tickets referencing those events.
What date format should I use in CSV files?
Use YYYY-MM-DD HH:MM:SS (e.g., 2026-06-15 09:00:00). This is the only format the importer accepts.
What happens if my CSV has extra columns not listed above? Unmapped columns are ignored during import. They do not cause errors.
Can I import featured images for events?
Yes. Include an image column with a publicly accessible URL. The importer downloads the image and sets it as the event’s featured image. Large images may slow down the import.
Is there a row limit for CSV imports? No hard limit. Batch processing handles large files. However, imports with tens of thousands of rows may take several minutes to complete.
Can I schedule recurring imports? Automated scheduled imports (from Google Calendar, Meetup, Eventbrite, etc.) are not available in the current version. Use manual CSV import for bulk data loading.
Does export include attendee data? The export tool covers events, venues, organizers, and tickets. Attendee data can be exported separately from the Attendee Management screen using the CSV export button.
Will importing update existing events or create duplicates? By default, matching titles are skipped. Configure duplicate handling to “update” if you want imports to overwrite existing records with the same title.
Next Steps
- General Settings — Configure how imported events display on your site.
- Meta Keys Reference — See the full list of meta fields available for each entity type.
- REST API Reference — Use the API for programmatic data management as an alternative to CSV import.