Skip to main content

Bulk Data Importing

How to import event data from previous calendars

Written by Naomi Fleishour
Updated over a week ago

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

year-month-day

i.e., 2025-06-14

start_time

⚠️

hour:minute

i.e., 7:30 or 14:00

NOTE: If start_time and end_time are blank, this will be an all-day Event. start_time and end_time must be either both populated or both blank.

end_date

⚠️

year-month-day

i.e., 2025-06-14

NOTE: If end_date is blank, the end_date will be the start_date

end_time

⚠️

hour:minute

i.e., 7:30 or 14:00

NOTE: If end_time and start_time are blank, this will be an all-day event. end_time and start_time must be either both populated or both blank.

status

One of:

-Tentative

-Confirmed

-Canceled

flag

Leave this field blank to keep flag off. Use the number 1 to add a flag to this Event

draft

Leave this field blank to keep draft off. Use the number 1 to mark this Event as a draft

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 name

  • start_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 1

  • draft — leave blank or use 1

  • projects — project names separated by semicolons (e.g. Footloose;The Tempest)

  • role_groups — role group names separated by semicolons

  • roles — role names separated by semicolons

  • locations — location names separated by semicolons

  • groups — group names separated by semicolons

  • people — email addresses separated by semicolons

  • collections — collection names separated by semicolons

  • items — 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 semicolons

  • details — 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

email

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_name

  • legal_last_name

Optional fields:

  • stage_name

  • nickname

  • title — job title or role

  • email

  • phone

  • notes

Rules:

  • Every row must have a legal_first_name and legal_last_name

  • Do 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 set

  • quantity — number of individual items in the set, minimum 1

  • condition — must be exactly one of: Functional, Needs Repair, or Under Repair

  • lifecycle_status — must be exactly one of: In Transit, Owned, or Discarded

Optional fields:

  • color — a hex color code without the leading # (e.g. ff0000 for red). If blank, defaults to black (000000)

  • details — any additional notes about the item set

  • tags — 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, and lifecycle_status

  • Do not include a # before hex color codes

  • Do 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]

Did this answer your question?