Sync RFIs, submittals, change orders, budgets, and documents from Procore
Procore is Brink’s deepest project-management integration: it syncs RFIs, submittals, punch items, observations, change events and change orders, budgets, contracts, direct costs, requisitions, daily logs, and project files — and links them to mentions across your email and chat.Who can connect: organization owners and admins.
Go to the Integrations page and click the Procore card, then Connect Procore.
The Procore drawer — connect, and choose which app the connection runs on
2
Authorize in Procore
You’ll be redirected to Procore’s sign-in and consent screen. Use a Procore account that can see the company and projects you want Brink to cover — Brink’s access follows what that account can see.
3
Choose a company
If your Procore login has access to more than one company, Brink asks you to choose a Procore company to connect. Pick one — you can add another account later for a second company.
The company chooser expires after 15 minutes. If it does, just reconnect.
4
Import Procore projects
Brink then opens Import Procore projects automatically. Every Procore project in the company is listed — including inactive ones — and the ones already linked are marked Linked.Tick the projects you want and click Import n projects. For each one Brink creates a Brink project with the same name and time zone, binds it to Procore, and starts syncing straight away. Click Done when you’re finished.
You can reopen this any time: Integrations → Procore → the account’s Import projects button.
5
Or bind to projects you already have
If the Brink project already exists, skip the import and bind instead: on the Projects page, open the project’s Integrations tab, choose the Procore connection under Add scope binding, pick the Procore project, and click Bind integration. Repeat for each project you want covered.
Connecting is only half the setup. Until a Procore project is imported or
bound, that project delivers nothing to Brink.
By default Brink connects through Brink’s own Procore app. Organization owners and admins can instead point the connection at their organization’s Procore developer app — Brink then uses those credentials to connect, to keep the connection alive, and to revoke access when you disconnect.Once your own app is saved, you can connect it two ways: by signing in with a Procore account (the steps above), or as a service account (DMSA) that connects as the app itself, with no sign-in. Service accounts are the better fit for continuous organization-wide sync — especially financials — see Connect with a service account (DMSA).
This option exists because Brink’s Procore marketplace app is still pending
approval from Procore. Bringing your own app lets you connect today without
waiting on that review.
You’ll need a Procore account that can access the Procore Developer Portal. The whole process takes about 10 minutes, once per organization.
Sign in at developers.procore.com, open My Apps, and click Create a New App. Give it a recognizable name such as Brink Connector — <your company>. The app stays private to your account — it does not need to be published to the Procore Marketplace.
Creating the app — the name is only used inside your organization
2
Add Brink's Redirect URI
In Brink, open Integrations → Procore → Connection method → Use your own Procore developer app and copy the Redirect URI shown there. In the OAuth Credentials section of the app’s Manage App page, add it to the production environment’s allowed redirect URIs. It must match character-for-character — Procore doesn’t support wildcard or dynamic URIs.
The OAuth Credentials page — paste Brink's Redirect URI and click Update (sandbox section shown; the production section is laid out the same way)
3
Promote to production and copy the credentials
Brink connects to production Procore, so sandbox credentials won’t work. In the Configuration Builder, click Save Version to snapshot the configuration, then promote the app to Production (the Request Production Approval button on the same page). The production Client ID and Client Secret then appear in the OAuth Credentials section.
The production Client Secret is shown only once, when it is first generated. Copy it immediately. If you lose it, reset the secret from the same section and re-save it in Brink.
Back in the Brink drawer, paste the production values into Procore OAuth client ID and Procore OAuth client secret, then click Save credentials. Secrets are stored encrypted and are write-only — after saving, the secret is shown masked and never displayed again.Only the fields you fill in are saved, so you can rotate the secret later without retyping the client ID.
2
Connect
Click Connect Procore and authorize as usual. From here the process is identical to the steps above, including the company chooser and the project import.
To go back to the standard connection, choose Use Brink’s app instead in the same section.
Changing credentials on an already-connected account may invalidate the
existing authorization. If the connection shows Needs attention
afterwards, click Reconnect to re-authorize against the new app.
If something goes wrong: a “redirect URI mismatch” error means the URI in Procore doesn’t exactly match Brink’s — re-copy it from the drawer. An “invalid client” error usually means sandbox credentials were pasted or the manifest wasn’t promoted to production. And if data is missing after connecting, remember synced data follows the permissions of the Procore user who authorized — financials require Admin-level tool permissions in Procore.
A Developer Managed Service Account (DMSA) — Procore calls the app that owns it a Data Connection App — lets Brink authenticate as your app instead of as a person. Procore creates the service user itself when a company admin installs the app, and Brink’s access comes from the permissions your app manifest declares rather than from whoever clicked Connect.Compared to connecting with a personal Procore account, a service account gives you:
Reliable access to financials. Brink’s access comes from the permissions declared in your app, so financial data syncs even when the person who set up the connection doesn’t have Admin-level permissions in Procore.
Fewer reconnects. Service account connections don’t rely on credentials that expire in normal use, so they rarely show Needs attention.
Continuity when people change. The connection isn’t tied to an employee’s account, so syncing continues uninterrupted when someone leaves your organization or changes roles.
A service account requires your own Procore app — the same prerequisite as
Use your own Procore app above. Save the Client
ID and Secret in Brink first. Connecting with a Procore account is still the
fastest way to get started; use a service account when you want continuous
organization-wide sync, especially of financials.
On your app’s Configuration Builder page in the Procore Developer Portal, expand Data Connector Components and click Add Component. Under Component Type, check Service Account Authentication — and keep User Level Authentication checked too, so connecting with a Procore account stays available as a fallback.
Both authentication types checked, with the service-account permissions matrix below
2
Declare the permissions Brink needs
In the same dialog, the Permissions for Service Account matrix has two tabs — Company Level and Project Level — and each tool takes one of None / Read-only / Standard / Admin. Set the permissions on both tabs, then click Save Component. These govern everything Brink can read.
To sync budgets, change events and change orders, commitments, prime contracts, direct costs, and invoices, grant Admin level on the corresponding Financials tools. Anything left at None is invisible to Brink, no matter what the installing admin can see.
The Project Level tab is a separate matrix from Company Level — don't skip it
3
Save the version and copy the App Version Key
Back on Configuration Builder, click Save Version. Procore snapshots the configuration as a version and issues an App Version Key, shown under Installation Keys (the Versions page lists every version’s key). Copy the key for the environment you’re installing into — production keys appear once the app is promoted to Production.
Installation Keys on the Configuration Builder page — treat the key like a credential
Every permission change requires saving a new version, which issues a new key — and companies that already installed the app must update it in App Management before the new permissions apply.
4
Install the app in Procore
A Procore company admin must install the app: Company level → Admin tool → App Management, then Install App → Install Custom App. Paste the App Version Key, review the permission summary Procore shows, and click Install. Procore auto-creates the DMSA service user during the install — there’s nothing to create by hand.
Install Custom App asks for the 36-character App Version Key
Procore shows exactly what the service account will be able to access before you confirm
5
Grant the app access to projects
After installing, open the app from the Installed Apps list and switch to its Permissions tab. Under Permitted Projects, select each project Brink should sync and click Add. This is easy to miss: the install succeeds without it, but a service account with no permitted projects has nothing to sync — and a project created later stays invisible until someone adds it here.
Permitted Projects after adding a project — repeat for every project Brink should sync
In the Procore connection drawer, under Connection method, choose Service account (DMSA). Brink uses your organization’s saved Client ID and Client Secret — there’s nothing extra to paste.
The Connection method section with your own app in use — the Service account (DMSA) card sits below the credentials
2
Connect with service account
Click Connect with service account. There’s no redirect to Procore and no consent screen — Brink verifies the credentials with Procore directly.
3
Choose a company
Brink then shows the same company chooser as when connecting with a Procore account. Pick the company to finish, then bind Procore projects on the Projects page as usual.
If something goes wrong: if validation fails, the usual causes are that a company admin hasn’t installed the app yet in App Management, that the version carrying the Data Connector component wasn’t promoted to Production, or that the client secret in Brink is wrong or has been rotated. If the connection succeeds but no projects appear to bind, the service account hasn’t been granted project access — in App Management, open the app’s Permissions tab and add them under Permitted Projects. If financials are missing, the declared permissions are too narrow — grant Admin on the relevant Financials tools, save a new version, and update the installed app.
Project management records: RFIs, submittals, punch items, observations, and daily logs (manpower, notes, work, delivery, delay, and weather logs)
Financials: budget views and line items, change events, change order packages, potential change orders, prime / purchase order / work order contracts, direct costs, requisitions
Directory: company users and vendors
Documents: Procore files flow into the Document Center with full parsing and citations
Records sync as they change in Procore, with history loaded back to the start date configured for your organization. Daily logs are collected per jobsite day using the project’s own time zone, which Brink copies from Procore when a project is imported. RFI and submittal numbers mentioned in synced email, Slack, or Teams messages are cross-linked to the Procore records automatically.
Procore expires access credentials frequently, so a Procore account connection may occasionally show Needs attention — clicking Reconnect resolves it. Service account (DMSA) connections aren’t affected.
A service account connection is always scoped to the single company you picked in the chooser. To cover another company, add another connection.
Disconnecting revokes Brink’s access with Procore directly.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Brink","colors":{"primary":"#2a67f9","light":"#5c8bfa","dark":"#1e51d6"},"logo":{"light":"https://mintcdn.com/brink-ai/3uN1NdJRQc4oshRA/logo/light.png?fit=max\u0026auto=format\u0026n=3uN1NdJRQc4oshRA\u0026q=85\u0026s=c2d7ba10f3bda446767775313d55aaf2","dark":"https://mintcdn.com/brink-ai/3uN1NdJRQc4oshRA/logo/dark.png?fit=max\u0026auto=format\u0026n=3uN1NdJRQc4oshRA\u0026q=85\u0026s=c59a33cf9b1a9bbc09d1d3e476461a36","href":"https://docs.trybrink.com"},"favicon":"https://mintcdn.com/brink-ai/3uN1NdJRQc4oshRA/favicon.png?fit=max\u0026auto=format\u0026n=3uN1NdJRQc4oshRA\u0026q=85\u0026s=fe9d2afe60e712533775873d2c70f4fc","background":{"color":{"light":"#fafafa","dark":"#111111"}},"navbar":{"links":[{"href":"https://trybrink.com","label":"Website"}]},"footer":{"socials":{"website":"https://trybrink.com"}},"fonts":{"family":"Hanken Grotesk"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"brink-ai","hasAudioNarration":false,"actualSubdomain":"brink-ai","customDomains":["docs.trybrink.com"],"gitSource":{"type":"github","owner":"brink-data","repo":"brink-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a8dc6ca35b2c3b9936f234f","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Documentation","count":27},{"language":"default","tag":"Integrations","count":14},{"language":"default","tag":"Connectors","count":12},{"language":"default","tag":"Features","count":8},{"language":"default","tag":"Workspace","count":3},{"language":"default","tag":"Get Started","count":2},{"language":"default","tag":"Release Notes","count":1},{"language":"default","tag":"Updates","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":"footer a[href=\"https://trybrink.com\"]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2.5rem}footer a[href=\"https://trybrink.com\"] svg{display:none}footer a[href=\"https://trybrink.com\"]::before{content:\"\";display:block;width:100%;height:100%;background:url(\"/logo/brink-logo.png\") center / contain no-repeat}html.dark footer a[href=\"https://trybrink.com\"]::before,[data-theme=\"dark\"] footer a[href=\"https://trybrink.com\"]::before{background-image:url(\"/logo/brink-logo-dark.png\")}"}],"page":{"pagePath":"integrations/procore","slug":"/integrations/procore","pageMetadata":{"title":"Procore","description":"Sync RFIs, submittals, change orders, budgets, and documents from Procore","href":"/integrations/procore"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Sync RFIs, submittals, change orders, budgets, and documents from Procore\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,Note,OptimizedImage,Step,Steps,Tip,Warning}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Procore is Brink’s deepest project-management integration: it syncs RFIs, submittals, punch items, observations, change events and change orders, budgets, contracts, direct costs, requisitions, daily logs, and project files — and links them to mentions across your email and chat.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Who can connect:`}),` organization owners and admins.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connect-procore`,children:`Connect Procore`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Open Integrations`,children:[_jsxs(_components.p,{children:[`Go to the `,_jsx(_components.strong,{children:`Integrations`}),` page and click the `,_jsx(_components.strong,{children:`Procore`}),` card, then `,_jsx(_components.strong,{children:`Connect Procore`}),`.`]}),_jsx(Frame,{caption:`The Procore drawer — connect, and choose which app the connection runs on`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=cc115f73c9da71c9f9acc45c3cef1b39`,alt:`Brink Integrations page with the Procore drawer open`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/brink-drawer.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=280\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=38d579d40031ad1af0c150a61925d58b 280w, https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=560\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=636accc1a6e7ad05ab666cb3250dbc50 560w, https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=840\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=4d6172e5c57af7cd61c70c0806f40d76 840w, https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=1100\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=073bdaae66b35ecb1e61421a8a2a49ed 1100w, https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=1650\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=cc5e8ea064cf8ab5f4c3400b9e6f650c 1650w, https://mintcdn.com/brink-ai/UOQCALpdZ3FrSdYn/images/procore/brink-drawer.png?w=2500\u0026fit=max\u0026auto=format\u0026n=UOQCALpdZ3FrSdYn\u0026q=85\u0026s=404983271b593ad05193c96a968211f0 2500w`})})]}),_jsx(Step,{title:`Authorize in Procore`,children:_jsx(_components.p,{children:`You’ll be redirected to Procore’s sign-in and consent screen. Use a Procore account that can see the company and projects you want Brink to cover — Brink’s access follows what that account can see.`})}),_jsxs(Step,{title:`Choose a company`,children:[_jsxs(_components.p,{children:[`If your Procore login has access to more than one company, Brink asks you to `,_jsx(_components.strong,{children:`choose a Procore company`}),` to connect. Pick one — you can add another account later for a second company.`]}),_jsx(Note,{children:`The company chooser expires after 15 minutes. If it does, just reconnect.`})]}),_jsxs(Step,{title:`Import Procore projects`,children:[_jsxs(_components.p,{children:[`Brink then opens `,_jsx(_components.strong,{children:`Import Procore projects`}),` automatically. Every Procore project in the company is listed — including inactive ones — and the ones already linked are marked `,_jsx(_components.strong,{children:`Linked`}),`.`]}),_jsxs(_components.p,{children:[`Tick the projects you want and click `,_jsxs(_components.strong,{children:[`Import `,_jsx(_components.em,{children:`n`}),` projects`]}),`. For each one Brink creates a Brink project with the same name and time zone, binds it to Procore, and starts syncing straight away. Click `,_jsx(_components.strong,{children:`Done`}),` when you’re finished.`]}),_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can reopen this any time: `,_jsx(_components.strong,{children:`Integrations → Procore →`}),` the account’s `,_jsx(_components.strong,{children:`Import projects`}),` button.`]})})]}),_jsx(Step,{title:`Or bind to projects you already have`,children:_jsxs(_components.p,{children:[`If the Brink project already exists, skip the import and bind instead: on the `,_jsx(_components.strong,{children:`Projects`}),` page, open the project’s `,_jsx(_components.strong,{children:`Integrations`}),` tab, choose the Procore connection under `,_jsx(_components.strong,{children:`Add scope binding`}),`, pick the Procore project, and click `,_jsx(_components.strong,{children:`Bind integration`}),`. Repeat for each project you want covered.`]})})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Connecting is only half the setup. Until a Procore project is imported or\nbound, that project delivers nothing to Brink.`})}),`\n`,_jsx(Heading,{level:`2`,id:`use-your-own-procore-app`,children:`Use your own Procore app`}),`\n`,_jsxs(_components.p,{children:[`By default Brink connects through Brink’s own Procore app. Organization owners and admins can instead point the connection at `,_jsx(_components.strong,{children:`their organization’s Procore developer app`}),` — Brink then uses those credentials to connect, to keep the connection alive, and to revoke access when you disconnect.`]}),`\n`,_jsxs(_components.p,{children:[`Once your own app is saved, you can connect it two ways: by signing in with a `,_jsx(_components.strong,{children:`Procore account`}),` (the steps above), or as a `,_jsx(_components.strong,{children:`service account (DMSA)`}),` that connects as the app itself, with no sign-in. Service accounts are the better fit for continuous organization-wide sync — especially financials — see `,_jsx(_components.a,{href:`#connect-with-a-service-account-dmsa`,children:`Connect with a service account (DMSA)`}),`.`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`This option exists because Brink’s Procore marketplace app is still pending\napproval from Procore. Bringing your own app lets you connect today without\nwaiting on that review.`})}),`\n`,_jsxs(_components.p,{children:[`You’ll need a Procore account that can access the `,_jsx(_components.a,{href:`https://developers.procore.com/`,children:`Procore Developer Portal`}),`. The whole process takes about 10 minutes, once per organization.`]}),`\n`,_jsx(Heading,{level:`3`,id:`create-the-app-in-procore`,children:`Create the app in Procore`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a New App`,children:[_jsxs(_components.p,{children:[`Sign in at `,_jsx(_components.a,{href:`https://developers.procore.com/`,children:`developers.procore.com`}),`, open `,_jsx(_components.strong,{children:`My Apps`}),`, and click `,_jsx(_components.strong,{children:`Create a New App`}),`. Give it a recognizable name such as `,_jsx(_components.code,{children:`Brink Connector — \u003cyour company>`}),`. The app stays private to your account — it does not need to be published to the Procore Marketplace.`]}),_jsx(Frame,{caption:`Creating the app — the name is only used inside your organization`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=21dd6b4b4a5c1631aca07abcafaa30e5`,alt:`Create a New App dialog with the app name filled in`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/create-app.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=aa1d9b87e65be8533a320c19f1ec0430 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=c3c361fa5a9e1c90ce94168f9857e494 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=9112ddf98c610516e2cd397b685e8318 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=2b52ed0191ad10793a5bca35b91de883 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=fb598f3b0d72cd08bc46d73b8fc18a8e 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/create-app.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=7050fde95254b5572af0b14f371cec47 2500w`})})]}),_jsxs(Step,{title:`Add Brink's Redirect URI`,children:[_jsxs(_components.p,{children:[`In Brink, open `,_jsx(_components.strong,{children:`Integrations → Procore → Connection method → Use your own Procore developer app`}),` and copy the `,_jsx(_components.strong,{children:`Redirect URI`}),` shown there. In the `,_jsx(_components.strong,{children:`OAuth Credentials`}),` section of the app’s `,_jsx(_components.strong,{children:`Manage App`}),` page, add it to the `,_jsx(_components.strong,{children:`production`}),` environment’s allowed redirect URIs. It must match character-for-character — Procore doesn’t support wildcard or dynamic URIs.`]}),_jsx(Frame,{caption:`The OAuth Credentials page — paste Brink's Redirect URI and click Update (sandbox section shown; the production section is laid out the same way)`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=c5aaa597495be9899068d4e97a4a94fe`,alt:`OAuth Credentials page with Client ID, Redirect URI field, and masked Client Secret`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/oauth-credentials.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=0077b85718c142e17cf2ecbb37c9f6a9 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=95aa14b6d5bf6d86ca938a6eadf59233 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=8776516ef9f07a8d62155c698a92e8da 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b81bd1683446f1366d2bf627378ec5fe 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=169a8e809c71869190c3da968e919104 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/oauth-credentials.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=de493b9a43ed5f2ed5d39b9be8b15746 2500w`})})]}),_jsxs(Step,{title:`Promote to production and copy the credentials`,children:[_jsxs(_components.p,{children:[`Brink connects to production Procore, so sandbox credentials won’t work. In the `,_jsx(_components.strong,{children:`Configuration Builder`}),`, click `,_jsx(_components.strong,{children:`Save Version`}),` to snapshot the configuration, then promote the app to `,_jsx(_components.strong,{children:`Production`}),` (the `,_jsx(_components.strong,{children:`Request Production Approval`}),` button on the same page). The production `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),` then appear in the `,_jsx(_components.strong,{children:`OAuth Credentials`}),` section.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`The production `,_jsx(_components.strong,{children:`Client Secret is shown only once`}),`, when it is first generated. Copy it immediately. If you lose it, reset the secret from the same section and re-save it in Brink.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`connect-it-to-brink`,children:`Connect it to Brink`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Save the credentials`,children:[_jsxs(_components.p,{children:[`Back in the Brink drawer, paste the production values into `,_jsx(_components.strong,{children:`Procore OAuth client ID`}),` and `,_jsx(_components.strong,{children:`Procore OAuth client secret`}),`, then click `,_jsx(_components.strong,{children:`Save credentials`}),`. Secrets are stored encrypted and are write-only — after saving, the secret is shown masked and never displayed again.`]}),_jsx(_components.p,{children:`Only the fields you fill in are saved, so you can rotate the secret later without retyping the client ID.`})]}),_jsx(Step,{title:`Connect`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect Procore`}),` and authorize as usual. From here the process is identical to the steps above, including the company chooser and the project import.`]})})]}),`\n`,_jsxs(_components.p,{children:[`To go back to the standard connection, choose `,_jsx(_components.strong,{children:`Use Brink’s app instead`}),` in the same section.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Changing credentials on an already-connected account may invalidate the\nexisting authorization. If the connection shows `,_jsx(_components.strong,{children:`Needs attention`}),`\nafterwards, click `,_jsx(_components.strong,{children:`Reconnect`}),` to re-authorize against the new app.`]})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`If something goes wrong:`}),` a “redirect URI mismatch” error means the URI in Procore doesn’t exactly match Brink’s — re-copy it from the drawer. An “invalid client” error usually means sandbox credentials were pasted or the manifest wasn’t promoted to production. And if data is missing after connecting, remember synced data follows the permissions of the Procore user who authorized — financials require Admin-level tool permissions in Procore.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connect-with-a-service-account-dmsa`,children:`Connect with a service account (DMSA)`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`Developer Managed Service Account (DMSA)`}),` — Procore calls the app that owns it a `,_jsx(_components.em,{children:`Data Connection App`}),` — lets Brink authenticate as your app instead of as a person. Procore creates the service user itself when a company admin installs the app, and Brink’s access comes from the permissions your app manifest declares rather than from whoever clicked `,_jsx(_components.strong,{children:`Connect`}),`.`]}),`\n`,_jsx(_components.p,{children:`Compared to connecting with a personal Procore account, a service account gives you:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reliable access to financials.`}),` Brink’s access comes from the permissions declared in your app, so financial data syncs even when the person who set up the connection doesn’t have Admin-level permissions in Procore.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Fewer reconnects.`}),` Service account connections don’t rely on credentials that expire in normal use, so they rarely show `,_jsx(_components.strong,{children:`Needs attention`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Continuity when people change.`}),` The connection isn’t tied to an employee’s account, so syncing continues uninterrupted when someone leaves your organization or changes roles.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`A service account requires your own Procore app — the same prerequisite as\n`,_jsx(_components.a,{href:`#use-your-own-procore-app`,children:`Use your own Procore app`}),` above. Save the Client\nID and Secret in Brink first. Connecting with a Procore account is still the\nfastest way to get started; use a service account when you want continuous\norganization-wide sync, especially of financials.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`set-up-the-dmsa-in-procore`,children:`Set up the DMSA in Procore`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Add the Data Connector component`,children:[_jsxs(_components.p,{children:[`On your app’s `,_jsx(_components.strong,{children:`Configuration Builder`}),` page in the `,_jsx(_components.a,{href:`https://developers.procore.com/`,children:`Procore Developer Portal`}),`, expand `,_jsx(_components.strong,{children:`Data Connector Components`}),` and click `,_jsx(_components.strong,{children:`Add Component`}),`. Under `,_jsx(_components.strong,{children:`Component Type`}),`, check `,_jsx(_components.strong,{children:`Service Account Authentication`}),` — and keep `,_jsx(_components.strong,{children:`User Level Authentication`}),` checked too, so connecting with a Procore account stays available as a fallback.`]}),_jsx(Frame,{caption:`Both authentication types checked, with the service-account permissions matrix below`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=0482df201243727e6770e91c571ff970`,alt:`Add Data Connector Component dialog with User Level and Service Account Authentication checked`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/dmsa-component.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=96390e3db6b73573e7e0d53da0f97d68 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=22e2d1c1b5e3ae1570b264416a13eb5b 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b5b4160d9f0b48c63fc67b3a96466c50 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=443f89e52bf8d2fea58da638b2022c21 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=2873c5bb10123d3901b92d6608394fa3 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-component.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=9a1acbc3c3993aa76f1514a56f25394a 2500w`})})]}),_jsxs(Step,{title:`Declare the permissions Brink needs`,children:[_jsxs(_components.p,{children:[`In the same dialog, the `,_jsx(_components.strong,{children:`Permissions for Service Account`}),` matrix has two tabs — `,_jsx(_components.strong,{children:`Company Level`}),` and `,_jsx(_components.strong,{children:`Project Level`}),` — and each tool takes one of None / Read-only / Standard / Admin. Set the permissions on `,_jsx(_components.strong,{children:`both tabs`}),`, then click `,_jsx(_components.strong,{children:`Save Component`}),`. These govern everything Brink can read.`]}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`To sync budgets, change events and change orders, commitments, prime contracts, direct costs, and invoices, grant `,_jsx(_components.strong,{children:`Admin`}),` level on the corresponding `,_jsx(_components.strong,{children:`Financials`}),` tools. Anything left at None is invisible to Brink, no matter what the installing admin can see.`]})}),_jsx(Frame,{caption:`The Project Level tab is a separate matrix from Company Level — don't skip it`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=5e0234e07bb497e956c193062a33026b`,alt:`Project Level tab of the service account permissions matrix`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/dmsa-permissions.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=949d0683758698cc6ae5004849909ee2 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=fb64bbc0a7e25daa2ffc48292b8b3141 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=dea1f50c71ef31594dfeab412fc198ef 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=726121422db37705bd932f5a67f8b79d 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=60853097e96f7d035343e87b712fcd8f 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-permissions.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b55175d4f8b14fc571e16a23401d2560 2500w`})})]}),_jsxs(Step,{title:`Save the version and copy the App Version Key`,children:[_jsxs(_components.p,{children:[`Back on `,_jsx(_components.strong,{children:`Configuration Builder`}),`, click `,_jsx(_components.strong,{children:`Save Version`}),`. Procore snapshots the configuration as a version and issues an `,_jsx(_components.strong,{children:`App Version Key`}),`, shown under `,_jsx(_components.strong,{children:`Installation Keys`}),` (the `,_jsx(_components.strong,{children:`Versions`}),` page lists every version’s key). Copy the key for the environment you’re installing into — production keys appear once the app is promoted to `,_jsx(_components.strong,{children:`Production`}),`.`]}),_jsx(Frame,{caption:`Installation Keys on the Configuration Builder page — treat the key like a credential`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b4d831835e5b122ae580b089a651d95c`,alt:`Configuration Builder page with the Installation Keys section`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/installation-keys.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=57857b96e2deafc85f72d9a8fe040d7f 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=f8598a7b0bcc230c03c4947d032a14fb 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=10d5f0c35ef0f8f3a47eefbfb3406d2f 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=a3f806dd822900844898ed97ed265b47 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=00c5ee0f3ed7b9b47a342362bb672c11 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/installation-keys.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=118c6283e68ac42d801d7275e0b1be41 2500w`})}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Every permission change requires saving a `,_jsx(_components.strong,{children:`new version`}),`, which issues a `,_jsx(_components.strong,{children:`new key`}),` — and companies that already installed the app must update it in App Management before the new permissions apply.`]})})]}),_jsxs(Step,{title:`Install the app in Procore`,children:[_jsxs(_components.p,{children:[`A Procore `,_jsx(_components.strong,{children:`company admin`}),` must install the app: Company level → `,_jsx(_components.strong,{children:`Admin`}),` tool → `,_jsx(_components.strong,{children:`App Management`}),`, then `,_jsx(_components.strong,{children:`Install App → Install Custom App`}),`. Paste the `,_jsx(_components.strong,{children:`App Version Key`}),`, review the permission summary Procore shows, and click `,_jsx(_components.strong,{children:`Install`}),`. Procore auto-creates the DMSA service user during the install — there’s nothing to create by hand.`]}),_jsx(Frame,{caption:`Install Custom App asks for the 36-character App Version Key`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=597f710e5ce4bbf3a963dd3727fc2f8f`,alt:`Install App dialog with the App Version Key pasted in`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/install-custom-app.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=d53aed8b448587223f27380020c7c2e7 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=148ec8647c049e36a6e436a63675a224 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=c6c018d0bdca081bb42fdb5f941b6889 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=f7674548a0157e09d76acf125b322986 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=bb02d2ad4e0b904250af4fd234a1ac16 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-custom-app.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b20ff22f757db335f494cc4a258d5e1d 2500w`})}),_jsx(Frame,{caption:`Procore shows exactly what the service account will be able to access before you confirm`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=5527b7dc5fc81a919a9952fddda17af4`,alt:`Install confirmation dialog listing every tool permission`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/install-review.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=33e7d01fe6c76d8a9696ea7c5c207cbe 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=09d9243190d49a2c869d5305f93816f4 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=f3bc810e76508135920620fdcaae6465 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=5546442c99130a975b593f8bcf2d0c41 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=6831efddcf92634ace946e4d9781dc8b 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/install-review.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=134c5528ca3ff62ee648c647a500ef97 2500w`})})]}),_jsxs(Step,{title:`Grant the app access to projects`,children:[_jsxs(_components.p,{children:[`After installing, open the app from the `,_jsx(_components.strong,{children:`Installed Apps`}),` list and switch to its `,_jsx(_components.strong,{children:`Permissions`}),` tab. Under `,_jsx(_components.strong,{children:`Permitted Projects`}),`, select each project Brink should sync and click `,_jsx(_components.strong,{children:`Add`}),`. This is easy to miss: the install succeeds without it, but a service account with no permitted projects has nothing to sync — and a project created later stays invisible until someone adds it here.`]}),_jsx(Frame,{caption:`Permitted Projects after adding a project — repeat for every project Brink should sync`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=f0b9ee9524c25b53770db7f49ebd4205`,alt:`Permissions tab of the installed app with a project in the Permitted Projects table`,\"data-og-width\":`1600`,width:`1600`,\"data-og-height\":`890`,height:`890`,\"data-path\":`images/procore/permitted-projects.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=f75dc7bcb8c5775881e4b5cefe1736a6 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=21376da1e222832bb1b19b5f454faf9e 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=211c17faf6a56ea2eb700df1c51d4ff4 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=6264a6ea3643afb5e3161dc68065cd69 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=e976efdcfd5bfe83d8ee9d4d96756dac 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/permitted-projects.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=003162e6fae05a86fb755198c0617c64 2500w`})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`connect-it-to-brink-2`,children:`Connect it to Brink`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Choose the service account method`,children:[_jsxs(_components.p,{children:[`In the Procore connection drawer, under `,_jsx(_components.strong,{children:`Connection method`}),`, choose `,_jsx(_components.strong,{children:`Service account (DMSA)`}),`. Brink uses your organization’s saved `,_jsx(_components.strong,{children:`Client ID`}),` and `,_jsx(_components.strong,{children:`Client Secret`}),` — there’s nothing extra to paste.`]}),_jsx(Frame,{caption:`The Connection method section with your own app in use — the Service account (DMSA) card sits below the credentials`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=08a003ca70850e4b97942a6f35414b48`,alt:`Procore connection drawer showing the org's own app credentials and the Service account (DMSA) card with Connect with service account`,\"data-og-width\":`1150`,width:`1150`,\"data-og-height\":`1600`,height:`1600`,\"data-path\":`images/procore/dmsa-connection-method.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=ba58e0d0b06ae58f5f2ce8a32b403c1c 280w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=629a3b2d8781c2138f53d0c4a6980ad8 560w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=3eac51197e7632b2c9190c0c9038296d 840w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=23ff952d9b5b8b209b89eb2a803361ec 1100w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=26fb6bd73e25a1922aee4bd4dced1f89 1650w, https://mintcdn.com/brink-ai/WJbJcD7e-lkr6E3X/images/procore/dmsa-connection-method.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=WJbJcD7e-lkr6E3X\u0026q=85\u0026s=b83db57e9163ff6f741e8e791095e0f8 2500w`})})]}),_jsx(Step,{title:`Connect with service account`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect with service account`}),`. There’s no redirect to Procore and no consent screen — Brink verifies the credentials with Procore directly.`]})}),_jsx(Step,{title:`Choose a company`,children:_jsxs(_components.p,{children:[`Brink then shows the same `,_jsx(_components.strong,{children:`company chooser`}),` as when connecting with a Procore account. Pick the company to finish, then bind Procore projects on the `,_jsx(_components.strong,{children:`Projects`}),` page as usual.`]})})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`If something goes wrong:`}),` if validation fails, the usual causes are that a company admin hasn’t installed the app yet in `,_jsx(_components.strong,{children:`App Management`}),`, that the version carrying the Data Connector component wasn’t promoted to `,_jsx(_components.strong,{children:`Production`}),`, or that the client secret in Brink is wrong or has been rotated. If the connection succeeds but no projects appear to bind, the service account hasn’t been granted project access — in `,_jsx(_components.strong,{children:`App Management`}),`, open the app’s `,_jsx(_components.strong,{children:`Permissions`}),` tab and add them under `,_jsx(_components.strong,{children:`Permitted Projects`}),`. If financials are missing, the declared permissions are too narrow — grant `,_jsx(_components.strong,{children:`Admin`}),` on the relevant `,_jsx(_components.strong,{children:`Financials`}),` tools, save a new version, and update the installed app.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-synced`,children:`What gets synced`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Project management records:`}),` RFIs, submittals, punch items, observations, and daily logs (manpower, notes, work, delivery, delay, and weather logs)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Financials:`}),` budget views and line items, change events, change order packages, potential change orders, prime / purchase order / work order contracts, direct costs, requisitions`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Directory:`}),` company users and vendors`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Documents:`}),` Procore files flow into the `,_jsx(_components.a,{href:`/quickstart`,children:`Document Center`}),` with full parsing and citations`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Records sync as they change in Procore, with history loaded back to the start date configured for your organization. Daily logs are collected per jobsite day using the project’s own time zone, which Brink copies from Procore when a project is imported. RFI and submittal numbers mentioned in synced email, Slack, or Teams messages are cross-linked to the Procore records automatically.`}),`\n`,_jsx(Heading,{level:`2`,id:`notes`,children:`Notes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Procore expires access credentials frequently, so a `,_jsx(_components.strong,{children:`Procore account`}),` connection may occasionally show `,_jsx(_components.strong,{children:`Needs attention`}),` — clicking `,_jsx(_components.strong,{children:`Reconnect`}),` resolves it. Service account (DMSA) connections aren’t affected.`]}),`\n`,_jsx(_components.li,{children:`A service account connection is always scoped to the single company you picked in the chooser. To cover another company, add another connection.`}),`\n`,_jsx(_components.li,{children:`Disconnecting revokes Brink’s access with Procore directly.`}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Procore","description":"Sync RFIs, submittals, change orders, budgets, and documents from Procore","href":"/integrations/procore"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Connect Procore","slug":"connect-procore","depth":2,"children":[]},{"title":"Use your own Procore app","slug":"use-your-own-procore-app","depth":2,"children":[{"title":"Create the app in Procore","slug":"create-the-app-in-procore","depth":3,"children":[]},{"title":"Connect it to Brink","slug":"connect-it-to-brink","depth":3,"children":[]}]},{"title":"Connect with a service account (DMSA)","slug":"connect-with-a-service-account-dmsa","depth":2,"children":[{"title":"Set up the DMSA in Procore","slug":"set-up-the-dmsa-in-procore","depth":3,"children":[]},{"title":"Connect it to Brink","slug":"connect-it-to-brink-2","depth":3,"children":[]}]},{"title":"What gets synced","slug":"what-gets-synced","depth":2,"children":[]},{"title":"Notes","slug":"notes","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"brink-ai","siteName":"Brink","title":"Procore - Brink","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-25T16:33:49.737Z","originalFileLocation":"integrations/procore.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Sync RFIs, submittals, change orders, budgets, and documents from Procore\">\u003cmeta data-mint-head name=\"application-name\" content=\"Brink\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Procore - Brink\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sync RFIs, submittals, change orders, budgets, and documents from Procore\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Brink\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trybrink.com/integrations/procore\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://brink-ai.mintlify.site/_mintlify/api/og/v2?division=Connectors\u0026amp;title=Procore\u0026amp;description=Sync+RFIs%2C+submittals%2C+change+orders%2C+budgets%2C+and+documents+from+Procore\u0026amp;theme=065a4b5b4a9b4bfd823d221b\u0026amp;signature=9ebbcf9936eb18ca690a5633db57ea5eb6f2c595e6a680719823528ec0ff683a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Procore - Brink\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sync RFIs, submittals, change orders, budgets, and documents from Procore\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://brink-ai.mintlify.site/_mintlify/api/og/v2?division=Connectors\u0026amp;title=Procore\u0026amp;description=Sync+RFIs%2C+submittals%2C+change+orders%2C+budgets%2C+and+documents+from+Procore\u0026amp;theme=065a4b5b4a9b4bfd823d221b\u0026amp;signature=9ebbcf9936eb18ca690a5633db57ea5eb6f2c595e6a680719823528ec0ff683a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/brink-ai/Nral_qxxJyP4qgg_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Brink\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2a67f9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trybrink.com/integrations/procore\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/procore.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trybrink.com/#organization\",\"name\":\"Brink\",\"url\":\"https://docs.trybrink.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/brink-ai/3uN1NdJRQc4oshRA/logo/light.png?fit=max\u0026auto=format\u0026n=3uN1NdJRQc4oshRA\u0026q=85\u0026s=c2d7ba10f3bda446767775313d55aaf2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trybrink.com#website\",\"name\":\"Brink\",\"url\":\"https://docs.trybrink.com\",\"publisher\":{\"@id\":\"https://docs.trybrink.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trybrink.com/integrations/procore#webpage\",\"url\":\"https://docs.trybrink.com/integrations/procore\",\"name\":\"Procore\",\"description\":\"Sync RFIs, submittals, change orders, budgets, and documents from Procore\",\"dateModified\":\"2026-08-25T16:33:49.737Z\",\"isPartOf\":{\"@id\":\"https://docs.trybrink.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trybrink.com/integrations/procore#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trybrink.com/integrations/procore#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Integrations\",\"item\":\"https://docs.trybrink.com/integrations/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Procore\",\"item\":\"https://docs.trybrink.com/integrations/procore\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trybrink.com/integrations/procore#article\",\"headline\":\"Procore\",\"name\":\"Procore\",\"description\":\"Sync RFIs, submittals, change orders, budgets, and documents from Procore\",\"url\":\"https://docs.trybrink.com/integrations/procore\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trybrink.com/integrations/procore#webpage\"},\"dateModified\":\"2026-08-25T16:33:49.737Z\",\"publisher\":{\"@id\":\"https://docs.trybrink.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trybrink.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Brink\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Brink\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/integrations/procore.md","siteName":"Brink","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Welcome to Brink","href":""},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Workspace","pages":[{"title":"Organization \u0026 members","href":"/workspace/organizations"},{"title":"Projects","href":"/workspace/projects"},{"title":"Your profile","href":"/workspace/profile"}]},{"group":"Features","pages":[{"title":"Ask the assistant","href":"/features/assistant"},{"title":"Home \u0026 tasks","href":"/features/tasks"},{"title":"Document Center","href":"/features/documents"},{"title":"Daily","href":"/features/daily"},{"title":"Schedule","href":"/features/schedule"},{"title":"Wiki \u0026 Review","href":"/features/wiki"},{"title":"Digests \u0026 notifications","href":"/features/digests"},{"title":"Agents","href":"/features/agents"}]},{"group":"Integrations","pages":[{"title":"Integrations overview","href":"/integrations/overview"},{"title":"Syncing \u0026 permissions","description":"How syncs run, what the status indicators mean, and who can manage connections","href":"/integrations/syncing"},{"group":"Connectors","pages":[{"title":"Procore","href":"/integrations/procore"},{"title":"Gmail","description":"Bring your email threads and attachments into your personal assistant — private to you","href":"/integrations/gmail"},{"title":"Outlook","href":"/integrations/outlook"},{"title":"Google Calendar","href":"/integrations/google-calendar"},{"title":"Outlook Calendar","href":"/integrations/outlook-calendar"},{"title":"Slack","href":"/integrations/slack"},{"title":"Microsoft Teams","href":"/integrations/microsoft-teams"},{"title":"Google Drive","href":"/integrations/google-drive"},{"title":"OneDrive \u0026 SharePoint","href":"/integrations/onedrive"},{"title":"Box","href":"/integrations/box"},{"title":"Dropbox","href":"/integrations/dropbox"},{"title":"AI Employee Inbox","href":"/integrations/ai-employee-inbox"}]}]}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes"}]}]},"basePath":"","title":"Procore - Brink","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-BXrZabKK.js","DynamicMarkdown-CtasenyM.js","zoom-image-lightbox-C5F0mVLH.js","lightbox-handle-r17bVUz3.js"]}