Integration guide
Procore and Microsoft Fabric & Power BI integration
One way: Procore data lands in a Fabric lakehouse and Power BI reads the semantic model; nothing writes back. Procore has no confirmed bulk export API, so the pipeline pages list endpoints within its rate limits, and Power BI's refresh count sets how fresh the report can be.
System facts last verified October 2026 against the vendors' documentation (sources below). Confirm details with Procore Technologies and Microsoft before you build.
Procore and Power BI side by side
- API style
- ProcoreREST/JSON. Procore states that direct database access and RDBMS, XML or SOAP integrations aren't supported.
- Power BIPower BI REST API, Fabric REST API, and OneLake's ADLS Gen2-compatible file endpoints. Ingestion usually runs in Data Factory pipelines and notebooks.
- 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.
- Power BIMicrosoft Entra ID app registration: delegated scopes, a service principal or a managed identity. Fabric APIs need the tenant setting allowing service principals; OneLake accepts only Storage-audience tokens.
- 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.
- Power BINot applicable as a source; not confirmed for outbound events.
- 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.
- Power BIRefresh: 8 per day on shared capacity (scheduled and API refreshes combined), 48 scheduled slots on Premium. Fabric REST: 500 calls per minute per identity for platform APIs, 200 for job scheduler APIs. Push datasets: 10,000 rows per POST and 1,000,000 rows per hour per model.
- 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.
- Power BIYes. A free 60-day Fabric trial capacity, which Microsoft limits per tenant and intends for evaluation.
- Exports and files
- ProcoreNo bulk export API confirmed; reporting integrations page through list endpoints. Procore Analytics is a separate product.
- Power BISQL analytics endpoint over lakehouse tables, OneLake file access, and Power BI export APIs.
- Marketplace / partners
- ProcoreProcore App Marketplace and the Procore Technology Partner Program (application, technical review, certification, agreement, listing).
- Power BIMicrosoft AppSource. Not confirmed for Fabric workloads.
Who owns what
- One way: sources land in the lakehouse; nothing writes back.
- Match records across systems with a crosswalk that refuses to guess, and gate the refresh on data-quality checks.
What syncs between Procore and Power BI
The typical shape for this pair. Every row is typical: confirm it against your configuration in discovery.
| Object | Direction | System of record | |
|---|---|---|---|
| Projects, companies and vendors | Procore to Power BI | Procore | Nightly or a few times a day |
| Typical frequency: Nightly or a few times a day. Notes: Land raw payloads first, then clean. Keep the Procore IDs; they're the keys every other table joins on.(Typical: confirm against your configuration.) | |||
| Budgets, commitments and change orders | Procore to Power BI | Procore | Nightly or a few times a day |
| Typical frequency: Nightly or a few times a day. Notes: Paged from list endpoints per project. Keep pending and approved change orders apart so committed cost isn't overstated.(Typical: confirm against your configuration.) | |||
| Direct costs, invoices and payments | Procore to Power BI | Procore (accounting owns posted cost) | Nightly |
| Typical frequency: Nightly. Notes: Compare with the ERP's posted cost rather than treating Procore as the ledger.(Typical: confirm against your configuration.) | |||
| RFIs and submittals | Procore to Power BI | Procore | Nightly (polled) |
| Typical frequency: Nightly (polled). Notes: Aging and ball-in-court measures. Webhook coverage varies by tool, so a nightly poll is the reliable default.(Typical: confirm against your configuration.) | |||
| Project ↔ ERP job crosswalk | not synced | Lakehouse reference table | On change, reviewed |
| Typical frequency: On change, reviewed. Notes: Match Procore projects to accounting jobs with a crosswalk that refuses to guess; unmatched records go to a worklist.(Typical: confirm against your configuration.) | |||
| Semantic model refresh | not synced | Power BI | Up to 8 a day on shared capacity |
| Typical frequency: Up to 8 a day on shared capacity. Notes: Gate the refresh on data-quality checks. Shared (Pro) capacity allows eight refreshes a day, API refreshes included; Premium or Fabric capacity allows 48 scheduled slots.(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?
Procore Analytics is Procore's own reporting product, and it may be enough if you report on Procore alone. A custom Fabric pipeline earns its keep when Procore has to be joined with accounting, schedule or CRM data under one set of definitions. Compare the two before you commission either.
Compare native connectors with a custom buildCommon gotchas
- Every Procore request counts against the hourly and 10-second limits, failed ones included. A first backfill across many projects needs paging, backoff on 429 and a resumable cursor.
- Push datasets have hard row and rate caps and Microsoft has scheduled real-time streaming for deprecation. Land data in a lakehouse and refresh a semantic model instead.
- Use a Procore Developer Managed Service Account for a company-level data connection, and a Fabric service principal once an admin enables the tenant setting. OneLake accepts only Storage-audience tokens.
- Procore Analytics is a separate Procore product. Decide whether you need a custom model before you build one.
Sources
- Procore developer documentation
- Procore: choosing an OAuth grant type
- Procore: rate limiting
- Procore: webhooks
- Procore: development environments
- Procore: financial tools tutorial
- Procore: partner program overview
- Fabric REST API documentation
- Fabric REST API throttling
- Power BI REST API
- Power BI: refresh dataset
- Power BI: push semantic model limits
- Fabric trial capacity
- OneLake access API
Frequently asked questions
Can Power BI connect directly to Procore?
Not through a bulk export API we could confirm. The reliable route is a pipeline that pages Procore's REST API into a Fabric lakehouse, checks the data, and refreshes a Power BI semantic model.
How often can a Procore report in Power BI refresh?
Eight times a day on shared (Pro) capacity, counting scheduled and API refreshes together, and up to 48 scheduled slots on Premium or Fabric capacity. Procore's rate limits set how much you can pull between refreshes.
Procore Analytics or a custom Power BI model?
Procore Analytics covers Procore's own data. A custom model is worth it when you need Procore joined with accounting, schedule or CRM data and reconciled to the ERP's numbers.
Next step
Connecting Procore and Power BI?
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.