> For the complete documentation index, see [llms.txt](https://docs.stackai.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.stackai.com/integrations/catalog/procore.md).

# Procore

Manage accessible Procore construction projects and records.

## Connectors

Choose the connector that matches your authentication method. The options below use the names shown in StackAI.

| Connector | Authentication |
| --------- | -------------- |
| Procore   | OAuth sign-in  |

### Procore

Connect a workspace Procore OAuth app to manage accessible construction records.

#### Set up in Procore

1. Use a Procore account with access to the records and operations that your workflow needs.
2. If your organization restricts application access or user consent, have its administrator approve the connection before you sign in.

#### Set up in StackAI

1. Open **Settings → Connections**, add a connection, and select **Procore**.
2. Select **Connect**, sign in to the provider account, and review the requested access. Complete authorization to return to StackAI.
3. Save the connection and check its connection status. Select this saved connection when configuring an action or feature that uses it.

StackAI obtains the OAuth credentials during sign-in. You do not need to paste an access token or refresh token.

### Verify the connection

Check that the connection is healthy. Then run a read operation against a resource the connected account can access. A successful connection check confirms authentication; it does not guarantee permission for every action.

If access is denied, check the credential or OAuth permissions, the selected account or environment, and access to the specific resource. Update expired credentials or reconnect after permissions change.

## Use an action

1. Add the required **Procore** action to the workflow.
2. Select a connection when the action requests one.
3. Complete the required fields. Use the reference picker when a value comes from another workflow step.
4. Run the workflow and inspect the action’s output. Check the result before using it in a later step.

## Actions

### List Companies

List the Procore companies available to the connected account.

#### Inputs

| Field                  | Type    | Required | Description                                                                                                         |
| ---------------------- | ------- | -------- | ------------------------------------------------------------------------------------------------------------------- |
| Include free companies | boolean | No       | Include free Procore company accounts in the results. Default: false.                                               |
| Maximum results        | integer | No       | Maximum number of companies to return before exposing a continuation page. Minimum: 1. Maximum: 2000. Default: 100. |
| Start page             | integer | No       | One-based Procore page at which to start. Minimum: 1. Default: 1.                                                   |

#### Outputs

| Field     | Type          | Description                                              |
| --------- | ------------- | -------------------------------------------------------- |
| Companies | object\_array | Companies available to the connected Procore account.    |
| Next page | integer       | Page number to use when more companies may be available. |

### List Projects

List accessible projects for a Procore company.

#### Inputs

| Field           | Type             | Required | Description                                                                                                       |
| --------------- | ---------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Company         | select (integer) | Yes      | Company whose accessible projects should be listed. Options load from the selected connection. Minimum: 1.        |
| Project status  | select (string)  | No       | Limit projects by active status. Available values: All, Active, Inactive. Default: Active.                        |
| Project name    | string           | No       | Return projects whose names match this text.                                                                      |
| Project number  | string           | No       | Return projects matching a project number.                                                                        |
| Maximum results | integer          | No       | Maximum number of projects to return before exposing a continuation page. Minimum: 1. Maximum: 300. Default: 100. |
| Start page      | integer          | No       | One-based Procore page at which to start. Minimum: 1. Default: 1.                                                 |

#### Outputs

| Field     | Type          | Description                                      |
| --------- | ------------- | ------------------------------------------------ |
| Projects  | object\_array | Accessible projects with their IDs and names.    |
| Next page | integer       | Pass this as Start page to continue, if present. |

### Create RFI

Create a request for information in a Procore project.

#### Inputs

| Field         | Type             | Required | Description                                                                               |
| ------------- | ---------------- | -------- | ----------------------------------------------------------------------------------------- |
| Company       | select (integer) | Yes      | Company that owns the target project. Options load from the selected connection.          |
| Project       | select (integer) | Yes      | Project in which to create the RFI. Options load from the selected connection.            |
| Subject       | string           | Yes      | Short title that identifies the RFI.                                                      |
| Question      | textarea         | Yes      | Detailed question the project team must answer.                                           |
| RFI manager   | select (integer) | Yes      | Eligible project user who will manage the RFI. Options load from the selected connection. |
| Save as draft | boolean          | No       | Save the RFI as a draft instead of opening it immediately. Default: true.                 |
| Reference     | string           | No       | Optional drawing, specification, or schedule reference.                                   |
| Due date      | date             | No       | Optional date by which the RFI should be answered.                                        |
| Private RFI   | boolean          | No       | Restrict the RFI to users allowed to view private records. Default: false.                |

#### Outputs

| Field      | Type    | Description                                  |
| ---------- | ------- | -------------------------------------------- |
| RFI        | object  | The full RFI object returned by Procore.     |
| RFI ID     | integer | Procore ID of the created RFI when returned. |
| RFI number | string  | Project RFI number when returned.            |
| Status     | string  | RFI status when returned.                    |

### Upload Project Document

Upload a document from a secure URL to a Procore project's Documents tool.

#### Inputs

| Field                   | Type             | Required | Description                                                                                                      |
| ----------------------- | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
| Company                 | select (integer) | Yes      | Company that owns the target project. Options load from the selected connection.                                 |
| Project                 | select (integer) | Yes      | Project whose Documents tool will receive the file. Options load from the selected connection.                   |
| Document URL            | string           | Yes      | Secure HTTPS URL from which StackAI can download the document.                                                   |
| File name               | string           | Yes      | Name and extension to store in Procore.                                                                          |
| Destination folder      | select (integer) | No       | Optional Documents folder; leave empty to upload to the project root. Options load from the selected connection. |
| Description             | textarea         | No       | Optional description stored with the document.                                                                   |
| Content type            | string           | No       | Media type Procore should record for the document. Default: application/octet-stream.                            |
| Rename if name is taken | boolean          | No       | Automatically choose a unique name when the destination already contains this filename. Default: true.           |

#### Outputs

| Field            | Type    | Description                                           |
| ---------------- | ------- | ----------------------------------------------------- |
| Document ID      | integer | Procore ID of the uploaded document when returned.    |
| Document name    | string  | Stored document name when returned by Procore.        |
| Parent folder ID | integer | Documents folder that contains the uploaded document. |
| Size             | integer | Document size in bytes when Procore returns it.       |

### Create Observation

Create a field observation or deficiency in a Procore project.

#### Inputs

| Field            | Type             | Required | Description                                                                                                |
| ---------------- | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| Company          | select (integer) | Yes      | Company that owns the target project. Options load from the selected connection.                           |
| Project          | select (integer) | Yes      | Project in which to create the observation. Options load from the selected connection.                     |
| Observation name | string           | Yes      | Short title describing the observed condition.                                                             |
| Observation type | select (integer) | Yes      | Project-configured category and type for the observation. Options load from the selected connection.       |
| Description      | textarea         | No       | Detailed factual description of the observed condition.                                                    |
| Assignee         | select (integer) | No       | Optional eligible project user responsible for the observation. Options load from the selected connection. |
| Due date         | date             | No       | Optional date by which the observation should be addressed.                                                |
| Priority         | select (string)  | No       | Optional Procore priority for the observation. Available values: Low, Medium, High, Urgent.                |

#### Outputs

| Field                | Type    | Description                                               |
| -------------------- | ------- | --------------------------------------------------------- |
| Observation          | object  | The observation created in Procore.                       |
| Observation ID       | integer | Procore ID of the created observation when returned.      |
| Observation number   | string  | Project observation number when returned.                 |
| Notification pending | boolean | Whether Procore still needs a separate notification step. |

### List Submittals

List and search submittals in a Procore project.

#### Inputs

| Field                  | Type             | Required | Description                                                                                                         |
| ---------------------- | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------- |
| Company                | select (integer) | Yes      | Company that owns the target project. Options load from the selected connection.                                    |
| Project                | select (integer) | Yes      | Project whose submittals should be listed. Options load from the selected connection.                               |
| Search                 | string           | No       | Search submittals by Procore's supported text matching.                                                             |
| Current revisions only | boolean          | No       | Return only each submittal's current revision. Default: true.                                                       |
| Maximum results        | integer          | No       | Maximum number of submittals to return before exposing a continuation page. Minimum: 1. Maximum: 100. Default: 100. |
| Start page             | integer          | No       | One-based Procore page at which to start. Minimum: 1. Default: 1.                                                   |

#### Outputs

| Field      | Type          | Description                                               |
| ---------- | ------------- | --------------------------------------------------------- |
| Submittals | object\_array | Visible submittals with their key tracking details.       |
| Next page  | integer       | Page number to use when more submittals may be available. |

## Triggers

A trigger starts a workflow when its configured event occurs. Configure the event and filters before enabling the trigger.

### Project Record Event

Run when a selected Procore project resource is created, updated, or deleted. Each subscription registers a unique Authorization secret and verifies it before processing the v4.0 delivery.

StackAI registers this webhook with Procore when the trigger is enabled. Keep the connected account installed in the selected company and grant Webhooks API Standard permission at both the company and project levels.

#### Configuration

| Field    | Type             | Required | Description                                                                                            |
| -------- | ---------------- | -------- | ------------------------------------------------------------------------------------------------------ |
| Company  | select (integer) | Yes      | Company that owns the project to monitor. Options load from the selected connection. Minimum: 1.       |
| Project  | select (integer) | Yes      | Project whose events should start the workflow. Options load from the selected connection. Minimum: 1. |
| Resource | select (string)  | Yes      | Project resource to monitor. Options load from the selected connection.                                |
| Event    | select (string)  | Yes      | Change to the selected resource that starts the workflow. Options load from the selected connection.   |

#### Event inputs

| Field           | Type   | Required | Description                                                      |
| --------------- | ------ | -------- | ---------------------------------------------------------------- |
| Event ID        | string | Yes      | Provider event identifier used to suppress duplicate deliveries. |
| Event timestamp | string | Yes      | ISO-8601 timestamp at which Procore emitted the event.           |
| Reason          | string | Yes      | Change reason reported by Procore.                               |
| Company ID      | string | Yes      | Company associated with the event.                               |
| Project ID      | string | Yes      | Project associated with the event.                               |
| User ID         | string | No       | User associated with the event when Procore supplies one.        |
| Resource type   | string | Yes      | Type of Procore resource that changed.                           |
| Resource ID     | string | Yes      | Provider identifier of the resource that changed.                |

#### Outputs

| Field           | Type   | Description                          |
| --------------- | ------ | ------------------------------------ |
| Event ID        | string | Provider event identifier.           |
| Event timestamp | string | Event ISO-8601 timestamp.            |
| Reason          | string | Procore change reason.               |
| Company ID      | string | Event company identifier.            |
| Project ID      | string | Event project identifier.            |
| User ID         | string | Event user identifier when supplied. |
| Resource type   | string | Changed resource type.               |
| Resource ID     | string | Changed resource identifier.         |

## Important behavior

If an operation is denied, check the connection’s granted permissions and the account’s access in the provider. Reauthorize the connection when it needs additional permissions.

Actions that create, update, send, or delete data can change the connected service. Review their inputs before running them. A retry can repeat an operation; consider this when configuring retries for actions that change data.

The catalog lists the fields and capabilities available in the supplied provider definition. Availability can also depend on your deployment and organization’s Feature Access settings.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.stackai.com/integrations/catalog/procore.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
