Skip to main content

Procore

Procore is a cloud-based construction management platform that connects project teams, field crews, and office staff across the project lifecycle. Its REST API exposes company and project data, including projects, users, vendors, RFIs, submittals, prime contract change orders, budgets, documents, punch list items, and timecard entries. This connector uses OAuth 2.0 to read from and write to the Procore API.

Procore icon

Power end-to-end data operations for your Procore API with Nexla. Our bi-directional Procore connector is purpose-built for Procore, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Procore or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Procore workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Before creating a Procore credential, you need to register an application in the Procore Developer Portal and complete the OAuth 2.0 authorization code flow to obtain a Client ID, Client Secret, and refresh token. Procore authenticates API requests with an OAuth 2.0 Bearer access token; the refresh token allows Nexla to mint new access tokens as they expire.

To obtain your Procore credentials, follow these steps:

  1. Sign in to the Procore Developer Portal with your Procore account. If you do not have developer access, request it from your company's Procore administrator.

  2. Create a new application (App) in the Developer Portal. This registers your integration with Procore and generates the OAuth credentials used to authenticate.

  3. In the application's OAuth configuration, note the generated Client ID and Client Secret. The Client Secret is shown to authorized users of the app and must be kept confidential.

  4. Configure an OAuth Redirect URI for the application. This is the callback URL used during the authorization code exchange and must match the value sent in the authorization request.

  5. Complete the OAuth 2.0 authorization code flow against https://login.procore.com/oauth to obtain an authorization code, then exchange it for an access token and refresh token. Store the refresh token, as it is required to configure your Nexla credential.

Procore uses separate authentication keys and tokens for production and sandbox environments. Access and refresh tokens are not shared across environments, so use credentials that match the Procore environment you intend to connect to. For complete details on OAuth flows, endpoints, and token management, see the Procore OAuth 2.0 documentation.

Authenticate

Credentials required

3-legged OAuth2 authorization_code workflow via login.procore.com for an access/refresh token, used as a Bearer token against api.procore.com.

FieldRequiredSecretDescription
Client IDYesNoOAuth2 Client ID for the Procore App created in the Procore Developer Portal (developers.procore.com).
Client SecretYesYesOAuth2 Client Secret paired with the Client ID, used during the authorization_code token exchange with login.procore.com.
Refresh TokenYesYesOAuth2 refresh token obtained after completing the authorization_code flow, used to mint new access tokens.

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your OAuth2 Client ID in the corresponding field. This value identifies the Procore App you registered in the Developer Portal.

  4. Enter your OAuth2 Client Secret in the corresponding field. This value is paired with the Client ID during the token exchange and must be kept confidential.

  5. Enter your OAuth2 Refresh Token in the corresponding field. Nexla uses this token to obtain new access tokens for authenticating requests to the Procore API.

    If your Client Secret or Refresh Token is compromised, revoke the affected credentials in the Procore Developer Portal and complete the authorization flow again to generate replacements. For detailed information about Procore authentication and available endpoints, see the Procore API documentation.

  6. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Procore connector tile, then select the credential that will be used to connect to Procore, and click Next; or, create a new Procore credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Procore endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

List Companies

List all companies the authenticated user can access.

Use this endpoint to retrieve the companies available to your credential. The returned company IDs are required to scope many other Procore endpoints, such as project, user, and vendor listings.

List Projects

List projects for a company.

This endpoint returns the projects belonging to a company. Provide the company ID obtained from the List Companies endpoint to scope the request.

List Company Users

List users belonging to a company.

Use this endpoint to retrieve the directory of users associated with a company, scoped by the company ID.

List Project Users

List users assigned to a project.

This endpoint returns the users assigned to a specific project. Provide the project ID to scope the request.

List Vendors

List vendor (subcontractor/supplier) directory records for a company.

Use this endpoint to retrieve the vendor directory, including subcontractors and suppliers, for a company.

List RFIs

List Requests for Information (RFIs) on a project.

This endpoint returns the RFIs recorded on a project. Provide the project ID to scope the request.

Get RFI

Get a single Request for Information (RFI) by ID.

Use this endpoint to retrieve the full detail of one RFI. Provide the project ID and the RFI ID to identify the record.

List Submittals

List submittal items on a project.

This endpoint returns the submittal items tracked on a project, scoped by the project ID.

List Prime Contract Change Orders

List prime contract change orders (prime_change_orders resource) on a project.

Use this endpoint to retrieve prime contract change orders for a project, scoped by the project ID.

List Budget Line Items

List budget line item detail rows for a project's budget view.

  • This endpoint reads detail rows from a project's budget view using GET /budget_views/{budget_view_id}/detail_rows. The budget_view_id is obtained from GET /rest/v1.0/budget_views.

Retrieve the available budget views for the project first to determine the budget view ID that scopes this request.

List Documents

List files/folders in a project's document management tool.

This endpoint returns the files and folders stored in a project's document management tool, scoped by the project ID.

List Punch List Items

List punch list items on a project.

Use this endpoint to retrieve the punch list items tracked on a project, scoped by the project ID.

List Timecard Entries

List timecard (timesheet) entries for a company.

This endpoint returns timecard (timesheet) entries for a company, scoped by the company ID.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Procore data sources can also be manually configured to ingest data from any valid Procore API endpoint, including endpoints not covered by the pre-built templates, chained API calls, or custom request parameters. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Procore data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Procore destination, and select the Send to Destination option from the menu. Select the Procore connector from the list of available destination connectors, then select the credential that will be used to connect to Procore, and click Next; or, create a new Procore credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Procore endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create RFI

Create a new Request for Information (RFI) on a project.

Each record from your Nexset is sent as a request to create a new RFI on the specified project. Ensure your data includes the project ID and the RFI fields required by the Procore API.

Update RFI

Update an existing RFI (e.g. status, assignee, answer) on a project.

Use this endpoint to modify fields on an existing RFI, such as its status, assignee, or answer. Each record must identify the project and the RFI to update.

Create Submittal

Create a new submittal item on a project.

Each record from your Nexset is sent as a request to create a new submittal item on the specified project.

Create Prime Contract Change Order

Create a new prime contract change order (prime_change_orders resource) on a project.

Each record from your Nexset is sent as a request to create a new prime contract change order on the specified project.

Create Budget Line Item

Create a budget line item.

  • Procore takes the project ID and a nested budget_line_item object (cost_code_id, line_item_type_id, etc.) in the JSON body, not in the URL. Ensure your Nexset records are shaped to match this request body.

Each record from your Nexset is sent as a request to create a budget line item on the specified project.

Create Punch List Item

Create a new punch list item on a project.

Each record from your Nexset is sent as a request to create a new punch list item on the specified project.

Manual configuration

Procore destinations can also be manually configured to send data to any valid Procore API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Procore APIs typically expect JSON format for most write operations. For update operations, include the ID of the object to be updated as required by the target endpoint.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Procore endpoint, open the destination resource menu, and select Activate.

The Nexset data will not be sent to the Procore endpoint until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.