Skip to main content

Features - bulk export/import

Bulk Export/Import - Observations

Detailed guide for bulk export and import of Observations in Procore, including available fields, data types, and tool-specific limitations.

This guide covers the specific implementation of bulk export/import for the Observations tool in Procore. For general concepts and the overall process, see the Bulk Export/Import - Overview.

1 - Available Fields

1.1 - Native Fields

The following native fields are available for export and import. Note that some fields (Distribution list, Hazard, Contributing behavior & condition) are excluded from the automated export / import for technical reasons (not in the Procore export API).

Field LabelExport NameData Type
IDidstring
Numbernumberinteger
Statusstatuslov_entry
Assigneeassignee_idlov_entry
Tradetrade_idlov_entry
Descriptiondescriptionrich_text
Due datedue_datedate
Namenamestring
Private ?personalboolean
Priorityprioritylov_entry
Specification sectionspecification_section_idlov_entry
Typetype_idlov_entry
Locationlocation_idlocation

1.2 - Custom Fields

All custom fields configured for the specific Observation Category are automatically included in the export (unless “ALL TYPES” is selected). During import, the script validates that the columns match the fieldset configuration. Custom fields support various types including dropdowns, Dates, Vendors and User selections.

2 - Field-Specific Details

2.1 - Numbering & Uniqueness

  • Unique ID: When creating new observations, the number field must be unique across the project.
  • The script checks the provided number against all existing observations in the project to prevent duplicates. If the id column is empty, the script treats the row as a new entry.

3 - Data Model Reference Sheets

To ensure data integrity, the export file includes reference sheets used for mapping names to internal Procore IDs:

Sheet NameContains
statusValid statuses (Initiated, Ready for Review, closed, etc.)
priorityPriority levels (Low, Medium, High, Urgent)
type_idObservation Categories & Types (including custom types & categories)
assignee_idUsers authorized to be assigned to observations
trade_idCompany Trades
location_idProject locations
specification_section_idProject spec sections
login_informationAll project users (for custom fields)
vendorContractors/vendors

4 - Observations-specific Limitations

4.1 - Category Scope (Non-Transversal)

[IMPORTANT] Export and Import actions are restricted by Observation Category.

  • Metadata Validation: The hidden sheet _obs_category contains the Category.
  • You cannot use an export template from the “Safety” category to import items into the “Quality” category, as the underlying Types and Custom Fields differ.
  • If you select _ALL TYPES_, you have an export / import across all categories, but in this specific case you cannot export / import custom fields (as they are not transversal to all categories)

The export/import works with Custom Observation Categories & types.

4.2 - Technical & Data Constraints

  • Unsupported Fields: Hazard, Contributing Behavior, Contributing Condition and Distribution list are currently not supported by the bulk export/import engine as they are not in the Procore API.
  • Attachments: Photos and documents cannot be uploaded via bulk import; they must be added manually to each observation item.

4.3 - File Integrity

  • Sheet Name: The primary data sheet must be named exactly OBSERVATIONS.
  • Reference Sheet: Do not modify or delete the _obs_category sheet, as the script uses it to verify the target destination.

5 - Common Use Cases

5.1 - Mass Closing of Observations

  1. Export all “Initiated” observations.
  2. Change the status column to “Closed” in Excel.
  3. Import the file with the “Mandatory Check” disabled.

5.2 - Updating Custom values in bulk

  1. Export observations and filter to find them requiring update.
  2. Update the relevant custom values.
  3. Re-import the file to sync changes with the “Mandatory Check” disabled.

5.3 - Importing from External Audits

  1. Use an empty Observation export as a template.
  2. Paste data from external logs, ensuring type_id and assignee_id match Procore values.
  3. Ensure the id column is blank and number is unique.