← Back to Organization Settings

Procore Integration Setup

Connect your Procore company with CivilTakeoff to sync projects, vendors, and customers, and pull Procore plan sets directly into your takeoffs. This is a two-step setup: a one-time company install in Procore, then a per-user account connection in CTO.

Heads up: Only a Procore company admin can complete Step 1. You'll need the 36-character App Version ID that CivilTakeoff provides (shown on the Integrations tab in your CTO organization settings).
1

Install the CivilTakeoff app in Procore

  1. Sign in to Procore as a company admin: app.procore.com (or your sandbox URL for testing).
  2. Click the gear icon → Company Settings → Admin → App Management.
  3. Click Install App.
  4. Paste the App Version ID you got from CivilTakeoff into the install dialog.
  5. Review the permissions Procore is about to grant, then click Install.

Once installed, the CivilTakeoff app is available to all users in your Procore company. Individual users still need to authenticate in Step 2.

2

Connect your Procore account in CTO

  1. In CivilTakeoff, go to Organization Settings → Integrations.
  2. On the Procore card, click Connect.
  3. Procore will prompt you to authorize CivilTakeoff. Sign in with your Procore account and click Authorize.
  4. You'll be redirected back to CTO. The Procore card should now show Connected with your Procore company name.
3

Configure sync rules

Click Manage Mappings on the Procore card to open the sync workspace. You can configure:

  • Sync direction per entity type (Projects / Customers / Vendors); pull-only, push-only, bidirectional, or off.
  • Field-level toggles; exclude specific fields (e.g., phone numbers) from sync if you want to keep those values CTO-side only.
  • Auto-matching; let CTO suggest matches between your existing CTO records and Procore records by name/email.
  • Pull Procore plan files; on each linked project, click Files to browse the Procore project's documents and pull individual PDFs into CTO for takeoff.
4

How sync works

Once connected, data flows in two directions automatically (subject to your sync rules):

  • Procore → CTO: webhook-driven. When a vendor, project, or budget line item changes in Procore, CTO updates within seconds.
  • CTO → Procore: triggered on save. When you edit a mapped customer or vendor in CTO, the change is pushed to Procore immediately.

Every sync is logged. Open the Sync activity panel inside Manage Mappings to see recent events and retry any failures.

5

Troubleshooting

“App is not connected to this company” (403)

Step 1 wasn't completed (or was completed for a different Procore company). A company admin needs to install the CTO app in the Procore company you're trying to sync with.

“Missing Procore-Company-Id header”

This usually means the company ID wasn't captured during OAuth. Click Auto-match or Sync Now once and CTO will lazily backfill the company ID. If it persists, disconnect and reconnect.

Webhook “Not registered” after install

Click the Retry link next to the webhook status in the Sync settings header. This re-runs webhook registration on the existing connection.

Connection shows “Expired”

Access token couldn't be refreshed. Click Disconnect and then Connect to re-authenticate.

Still stuck?

Contact support@civiltakeoff.ai with your Procore company name and the time of the error. We'll help triage.

Permissions granted during install

When you install the CivilTakeoff app in Procore, these scopes are requested:

  • Company Directory (Standard): read & upsert vendors (for CTO customer and vendor sync)
  • Admin (Read-only): list company projects
  • Documents (Read-only): browse and download project files
  • Webhooks API (Standard): register webhooks for real-time sync
  • Project Directory (Standard): (currently unused; reserved for future contact sync)

CivilTakeoff never writes to tools outside these scopes.