Bulk importing is the fastest way to get your organization up and running in Prospero, so everyone can start working from a complete, familiar schedule right away. It's also a great way to quickly upload complex patterns of events that occur regularly within your production schedule.
Supported Formats
To ensure a successful import, your event data must be correctly formatted. Bulk import currently supports one file format:
CSVs are easy to generate with most spreadsheet programs:
Google Sheets - File > Download > Comma Separated Values (.csv)
Excel - File > Save As > Save as type > CSV (Comma delimited)
Numbers - File > Export To > CSV…
Supported Data Types
People
Events
Items
Other data types (like Projects, Locations, and Consumables) must currently be manually entered in-app. If you need support for another data type, let us know at support@prosperoapp.com.
❗️Only Events can be bulk imported by users. Bulk people and items data imports are currently handled directly by the Prospero team. Only data that has been properly formatted can be imported. Please reach out to us at support@prosperoapp.com with your request or questions about formatting. We are working on bringing this functionality into the app for all resources.
Schemas
Your data must conform to Prospero’s schema to be properly processed. Schemas for supported data types are described below, along with an example CSV file that you can open in your preferred spreadsheet program.
✅ Required fields must be present in a row for that row to be imported. Optional fields may be left blank.
Import Events
To ensure a successful import, your event data must be correctly formatted. Any event-linked resources (locations, people, items, projects, etc.) must already exist in Prospero in order for the data to be imported. Names do not need to match exactly, but they must be close enough for Prospero to recognize and suggest the correct resource. If a resource cannot be matched, it will appear as “not found” during the import process and must be fixed before importing.
The Event schema contains the following fields:
| Required fields | Usage |
title | ✅ |
|
start_date | ✅ |
i.e., 2025-06-14 |
start_time | ⚠️ |
i.e., 7:30 or 14:00
NOTE: If
|
end_date | ⚠️ |
i.e., 2025-06-14
NOTE: If |
end_time | ⚠️ |
i.e., 7:30 or 14:00
NOTE: If |
status | ✅ | One of: -Tentative -Confirmed -Canceled |
flag |
| Leave this field blank to keep |
draft |
| Leave this field blank to keep |
projects |
| Project names separated by semicolons i.e., Footloose;The Tempest |
role_groups |
| Role Group names separated by semicolons i.e., Creative Team;Cast
NOTE: Including a Role Group name will automatically add all Roles in that Role Group to the Event, as well as the People associated with those Roles |
roles |
| Role names separated by semicolons i.e., Director;Music Director
NOTE: Including a Role name will automatically add the Person associated with that Role to the Event, if there is an associated Person |
locations |
| Location names separated by semicolons i.e., Studio A;Mainstage |
groups |
| Group names separated by semicolons i.e., Admin;Cast
NOTE: Including a Group name will automatically add all People in that Group to the Event |
people |
| Person first and last names or emails separated by semicolons |
collections |
| Collection names separated by semicolons i.e., Rehearsal Set;Footloose Props
NOTE: Including a Collection name will automatically add all Items in that Collection to the Event |
items |
| name:quantity separated by semicolons (quantity is optional) i.e., Rehearsal Blocks:4;Band Uniform
NOTE: If quantity is not included, all Items in that set will be added to the Event |
consumables |
| name:quantity separated by semicolons (quantity is required) i.e., Coffee:5;Sandwiches:5 |
tags |
| Tag names separated by semicolons i.e., Press;Rehearsal |
details |
|
|
💡 AI tools like Claude (claude.ai) or ChatGPT (chatgpt.com) can dramatically speed up the formatting process. Simply paste or upload your data in the form of a rough table, a copied spreadsheet, or even plain text, along with Prospero's schema requirements, and ask the AI to reformat it into a properly structured CSV. Always review the AI's output before uploading, but for large or complex schedules, it can save significant time compared to manual reformatting.
💡 Here is an example of a prompt you can use with your preferred AI model:
I need to format event data for import into a scheduling app called Prospero. Please reformat my data as a CSV that matches the following schema exactly:
Required fields:
title— event namestart_date— formatted as YYYY-MM-DD (e.g. 2025-06-14)status— must be exactly one of: Tentative, Confirmed, or Canceled
Optional fields:
start_time— formatted as H:MM or HH:MM (e.g. 7:30 or 14:00). If blank, event will be treated as all-day. Must be populated if end_time is populated.end_date— formatted as YYYY-MM-DD. If blank, defaults to start_date.end_time— formatted as H:MM or HH:MM. Must be populated if start_time is populated.flag— leave blank or use 1draft— leave blank or use 1projects— project names separated by semicolons (e.g. Footloose;The Tempest)role_groups— role group names separated by semicolonsroles— role names separated by semicolonslocations— location names separated by semicolonsgroups— group names separated by semicolonspeople— email addresses separated by semicolonscollections— collection names separated by semicolonsitems— name:quantity separated by semicolons (e.g. Rehearsal Blocks:4). Quantity is optional.consumables— name:quantity separated by semicolons (quantity is required)tags— tag names separated by semicolonsdetails— any additional notes
Rules:
Every row must have a title, start_date, and status
start_time and end_time must either both be filled in or both be left blank
Do not invent or assume data that isn't present — leave the field blank if unsure
Output only the CSV with no explanation or additional text
Every row must have exactly 19 comma-separated values. Even if a field is empty, its comma placeholder must be present. Count the commas in each row before outputting — there must always be exactly 18 commas per row.
Here is my data: [PASTE YOUR DATA HERE]
Upload your CSV
Once your spreadsheet is ready, navigate to the Bulk Import from the three-dots menu next to Filters. Select the timezone you would like applied to your events, select the CSV file to upload, and click Next.
After uploading, you’ll see a table containing all imported rows, showing which values have been accepted and which need attention. If a field cannot be matched to an existing entity, it will be marked as “not found.” Prospero may suggest a close match based on the name provided, but if it
You can select the correct entity where applicable, or choose to delete the row if the data is not valid. All rows must have accepted values before you can move forward.
Review Imported Events
Once all values are accepted, you can enter Review Mode.
In Review Mode, you can see your imported events as they would appear on the calendar, giving you a clear sense of how the schedule will look once finalized. You can click into individual events and make edits just as you would with any event in Prospero. However, if you find that multiple events need the same change, it’s best to return to your CSV file, make the updates there, and re-upload to avoid repetitive manual edits.
When you’re satisfied with how everything appears in Review Mode, you can proceed with the import. All imported events will be added to your calendar as Draft events, allowing for one final layer of review before they are made visible to others by setting them to public. After importing, you can use bulk editing tools to change multiple events from Draft to Public at once.
People
The People schema contains the following fields:
| Required fields |
legal_first_name | ✅ |
legal_last_name | ✅ |
stage_name |
|
nickname |
|
title |
|
| |
phone |
|
notes |
|
Once your personnel data is formatted correctly, you can send it to the Prospero team for import.
Note that not all People fields are supported. The following fields can only be edited in-app:
Pronouns
Headshot
We suggest updating these fields in-app after importing your data.
💡 AI tools like Claude (claude.ai) or ChatGPT (chatgpt.com) can dramatically speed up the formatting process. Simply paste or upload your data in the form of a rough table, a copied spreadsheet, or even plain text, along with Prospero's schema requirements, and ask the AI to reformat it into a properly structured CSV. Always review the AI's output before uploading, but for large or complex schedules, it can save significant time compared to manual reformatting.
💡 Here is an example of a prompt you can use with your preferred AI model:
I need to format personnel data for import into a scheduling app called Prospero. Please reformat my data as a CSV that matches the following schema exactly:
Required fields:
legal_first_namelegal_last_name
Optional fields:
stage_namenicknametitle— job title or roleemailphonenotes
Rules:
Every row must have a
legal_first_nameandlegal_last_nameDo not invent or assume data that isn't present — leave the field blank if unsure
Do not include fields for pronouns or headshots — these are not supported and must be added in-app later
Output only the CSV with no explanation or additional text
Output the CSV in two steps. First, output the data as a markdown table so the column alignment can be visually verified. Then, immediately below it, output the final CSV. Before writing the CSV, double-check every row against the markdown table to confirm each value appears under the correct column header. There must be exactly 7 commas per data row — no more, no fewer. Do not add trailing commas after the last field.
Here is my data: [PASTE YOUR DATA HERE]
Items
📦 Items vs. Item Sets - In Prospero, items belong to item sets. When importing items via CSV, these fields correspond to item sets:
name
color
details
tags
The quantity field determines the number of child items that are created within the item set. These fields correspond to the child items:
default_location
condition
lifecycle_status
Note that all child items will share the same values for these fields. If you would like to alter a specific item's values, you will need to do so in-app after importing.
The Item schema contains the following fields:
| Required fields | Item Set or Item field | Usage |
name | ✅ | Item Set |
|
color |
| Item Set | A color hex code without the leading #. Leaving this field blank will result in 000000 (black). |
details |
| Item Set |
|
tags |
| Item Set | Tag names separated by semicolons i.e., Microphone;Handheld |
quantity | ✅ |
| Minimum 1 |
default_location |
| Item | Location name i.e., Props Closet |
condition | ✅ | Item | One of: -Functional -Needs Repair -Under Repair |
lifecycle_status | ✅ | Item | One of: -In Transit -Owned -Discarded |
Once your item data is formatted correctly, you can send it to the Prospero team for import.
Note that not all Item fields are supported. The following fields can only be edited in-app:
Custom ID
We suggest updating these fields in-app after importing your data.
💡 AI tools like Claude (claude.ai) or ChatGPT (chatgpt.com) can dramatically speed up the formatting process. Simply paste or upload your data in the form of a rough table, a copied spreadsheet, or even plain text, along with Prospero's schema requirements, and ask the AI to reformat it into a properly structured CSV. Always review the AI's output before uploading, but for large or complex schedules, it can save significant time compared to manual reformatting.
💡 Here is an example of a prompt you can use with your preferred AI model:
I need to format inventory data for import into a scheduling app called Prospero. Please reformat my data as a CSV that matches the following schema exactly.
Important context: In Prospero, items are organized into item sets. Each row in the CSV represents one item set. The quantity field determines how many individual items are created within that set. All items in a set will share the same default_location, condition, and lifecycle_status values.
Required fields:
name— the name of the item setquantity— number of individual items in the set, minimum 1condition— must be exactly one of:Functional,Needs Repair, orUnder Repairlifecycle_status— must be exactly one of:In Transit,Owned, orDiscarded
Optional fields:
color— a hex color code without the leading # (e.g.ff0000for red). If blank, defaults to black (000000)details— any additional notes about the item settags— tag names separated by semicolons (e.g.Microphone;Handheld)default_location— location name where items are stored (e.g.Props Closet)
Rules:
Every row must have a
name,quantity,condition, andlifecycle_statusDo not include a
#before hex color codesDo not invent or assume data that isn't present — leave the field blank if unsure
Do not include a field for Custom ID — this is not supported and must be added in-app later
Output only the CSV with no explanation or additional text
Output the CSV in two steps. First, output the data as a markdown table so the column alignment can be visually verified. Then, immediately below it, output the final CSV. Before writing the CSV, double-check every row against the markdown table to confirm each value appears under the correct column header. There must be exactly 7 commas per data row — no more, no fewer. Do not add trailing commas after the last field.
Here is my data: [PASTE YOUR DATA HERE]



