Build Flows

Integration guide

Procore and Foundation Software integration

Foundation's REST API sits behind a gated onboarding: a commercial evaluation, then a sandbox, then production keys. Start that conversation early; Procore gives you a free developer sandbox the day you register an app, so the Procore side can be built while you wait.

System facts last verified October 2026 against the vendors' documentation (sources below). Confirm details with Procore Technologies and Foundation Software before you build.

Procore and Foundation side by side

API style
ProcoreREST/JSON. Procore states that direct database access and RDBMS, XML or SOAP integrations aren't supported.
FoundationREST/JSON with OpenAPI 3 specifications (the API reference sits behind the developer portal login).
Authentication
ProcoreOAuth 2.0, registered as an app in the Procore Developer Portal: authorization code (acts as a specific user) or client credentials through a Developer Managed Service Account (DMSA) with company and project permissions. Traditional service accounts were sunset on March 18, 2025.
FoundationAn API subscription key plus a bearer access token; Foundation's FAQ says access tokens expire after one hour and sandbox and production keys are separate.
Webhooks / events
ProcoreYes. Company- or project-level create, update and delete triggers; Procore recommends payload v4.0 for new integrations. Delivery is best-effort with retries, and events are discarded after 12 hours of continuous failure, so pair webhooks with a periodic reconciliation sync.
FoundationNot confirmed. Foundation's FAQ lists webhook testing guidance as coming soon.
Rate limits
ProcoreAn hourly (60-minute) limit and a 10-second spike limit, reported in X-Rate-Limit-Limit, -Remaining and -Reset headers; exceeding either returns 429, and 503 with Retry-After signals platform load. Procore publishes no fixed default: its rate-limiting page uses sample headers (600 per hour, 25 per spike window), warns not to assume a fixed window such as 3,600/hour, says values can change, and lets apps request an increase. Every request counts, including failed ones.
FoundationTiered: Foundation's FAQ lists 500 requests per minute (Standard), 2,000 (Professional) and custom (Enterprise), assigned during onboarding.
Sandbox
ProcoreYes. A developer sandbox with seed data is created when you register an app (you can have many). Customers can also enable on-demand and monthly sandboxes; the monthly one is refreshed from production each month. Not available to Federal Zone customers.
FoundationYes, after approval. Onboarding starts with a commercial evaluation; Foundation then provisions a sandbox account with test data, and production keys come at a later phase.
Exports and files
ProcoreNo bulk export API confirmed; reporting integrations page through list endpoints. Procore Analytics is a separate product.
FoundationNot confirmed. Confirm with vendor.
Marketplace / partners
ProcoreProcore App Marketplace and the Procore Technology Partner Program (application, technical review, certification, agreement, listing).
FoundationFoundation integration partners program (listed on Foundation's partners page).

Who owns what

  • Accounting usually owns jobs, vendors and cost codes; they flow into project management.
  • Commitments and change orders are typically created in project management and pushed to accounting on approval.
  • Actual costs flow from accounting back to project management or into a reporting model.

What syncs between Procore and Foundation

The typical shape for this pair. Every row is typical: confirm it against your configuration in discovery.

ProcoreFoundationProjects / jobsCustomers → ownersVendorsCost codes and cost classesPurchase orders and subcontractsChange ordersSubcontractor invoices
Arrows point from the system that sends to the system that receives. Dashed means it stays put.
ObjectDirectionSystem of record
Projects / jobsFoundation to ProcoreFoundation (job number)
Typical frequency: Hourly. Notes: Create the job in Foundation, then the Procore project carrying the Foundation job number.(Typical: confirm against your configuration.)
Customers → ownersFoundation to ProcoreFoundation
Typical frequency: On change. Notes: The Foundation customer becomes the owner on the Procore prime contract and directory; reference its ID.(Typical: confirm against your configuration.)
VendorsFoundation to ProcoreFoundation
Typical frequency: Hourly. Notes: Reference the Foundation vendor ID from the Procore directory; never match on name alone.(Typical: confirm against your configuration.)
Cost codes and cost classesFoundation to ProcoreFoundation
Typical frequency: On change. Notes: Foundation uses cost codes and cost classes. Map cost classes to Procore cost types in a table accounting reviews.(Typical: confirm against your configuration.)
Purchase orders and subcontractsProcore to FoundationPick one: usually Procore
Typical frequency: Every 15 minutes. Notes: Send approved commitments only. Two-way commitment sync without one owner causes overwrites.(Typical: confirm against your configuration.)
Change ordersProcore to FoundationProcore for approval; Foundation for posted cost
Typical frequency: Every 15 minutes. Notes: Approved only. Hold a change order whose commitment hasn't synced yet, then retry.(Typical: confirm against your configuration.)
Subcontractor invoicesnot syncedConfirm during onboarding
Typical frequency: n/a until confirmed. Notes: Foundation's integration pages don't list AP invoices among the objects we could confirm. Check the OpenAPI specs you get during onboarding before scoping this flow.(Typical: confirm against your configuration.)

Directions, owners and frequencies are the typical pattern from our integration guides and mapping workbook. Confirm each one against your configuration in discovery.

Is a native connector enough?

We haven't confirmed a documented native connector for this pair. Check the Procore App Marketplace and Foundation's integration partners page for a partner connector first: if one moves the records you need with your cost structure and approvals, configure it. Build when the mapping needs governing, when failures need routing to a person, or when you also need cross-system reporting.

Compare native connectors with a custom build

Common gotchas

  • API access needs a commercial evaluation and approval before you get a Foundation sandbox. Put it first on the plan; it's the longest lead time in this pair.
  • Foundation's rate limit depends on the tier assigned at onboarding (500 requests per minute on Standard, 2,000 on Professional). Size the backfill to that, and to Procore's hourly and 10-second limits, whichever binds first.
  • Foundation webhooks aren't confirmed yet, so changes on that side are polled. Procore webhooks can push the other way; keep a reconciliation run for both.
  • Foundation access tokens expire after an hour and sandbox and production keys are separate. Keep both sets in a vault and switch by configuration, not code.

Sources

Frequently asked questions

Does Foundation Software have an API for Procore integrations?

Yes. Foundation offers a REST API with OpenAPI specifications. Access starts with a commercial evaluation; Foundation then provisions a sandbox with test data, and production keys come later.

Can Procore subcontractor invoices post to Foundation?

Not confirmed from public material: AP invoices aren't among the objects Foundation's integration pages list. Check the OpenAPI specs during onboarding before you commit to that flow.

What rate limit applies to a Foundation integration?

The tier assigned at onboarding: Foundation lists 500 requests per minute on Standard, 2,000 on Professional, and custom limits on Enterprise.

Next step

Connecting Procore and Foundation?

Bring one real job and the records you want to move. We'll walk through what syncs, who owns each record, and what to check first.