Troubleshooting

Start here

Procore → Connection → Test connection.

It reports six stages separately and then probes every endpoint. Nearly every problem below is identified by that screen in one click, so run it before reading further. The same thing is available as wp procore-connect test.


“My shortcode shows nothing”

Work down this list.

1. The service account lacks that tool permission

By far the most common cause. A perfectly valid token can read projects and still get 403 on RFIs, because the app manifest never declared the RFIs permission.

The endpoint probe table shows failed against that endpoint. Fix it in Procore: update the app’s Permissions Builder declaration and have a company administrator reinstall or update the app. Adjusting the service account by hand in the Directory tool creates inconsistencies and is not a fix.

2. Nothing to show

Not every project has drawings, specifications or open RFIs. Check in Procore directly. A 0 records result and a permission failure look identical from the front end — but the probe reports the first as ok.

3. Wrong project or company ID

They come from the Procore URL:

https://app.procore.com/companies/4242/...   → company 4242
https://app.procore.com/projects/123/...     → project 123

Or run wp procore-connect projects.

4. The default company is not set

Project-scoped shortcodes still need a company for the Procore-Company-Id header. Set one under Connection, or pass company_id explicitly.

5. You are looking at a sandbox

If Environment is not Production, the site is showing sandbox data. An admin notice says so.

6. Stale cache

Data changed in Procore but not on the page. Clear the cache under Procore → Cache, or wp procore-connect cache-clear.

Log in as an administrator and reload the page. Administrators see the real Procore error message inline; visitors see a neutral notice. That one step usually ends the investigation.


Connection problems

“Enter your Procore Client ID and Client Secret”

Neither field is populated. If you set them in wp-config.php, check the constant names — PROCORE_CONNECT_CLIENT_ID and PROCORE_CONNECT_CLIENT_SECRET — and that they are defined before wp-settings.php is required.

“Procore rejected the authentication request”

  • Credentials belong to a different environment. Production, Developer Sandbox and Monthly Sandbox each need their own.
  • The app has no OAuth component with the client_credentials grant type.
  • The secret was regenerated in the Developer Portal.
  • The secret was truncated on paste. Re-enter it — the field shows a mask, and leaving it blank keeps the old value rather than clearing it.

“Procore returned no companies”

The credentials authenticate but no company has installed the app. A Procore company administrator has to install it and select which projects it may access.

“The Procore connection has expired”

Authorization Code mode, and the refresh token was rejected. Procore invalidates a refresh token the moment it is used, so this happens if the token was rotated elsewhere or the user’s Procore access was revoked. Click Connect to Procore again.

This is a good reason to prefer the service account mode on any unattended site.

The redirect URI is rejected

It must match what is registered in the Developer Portal exactly — scheme, www, path and query string. Copy it from the Connection screen rather than typing it.

“Another request is currently authenticating”

Two requests tried to refresh at once and one waited. Harmless and self-clearing. If it persists, an object cache may be dropping the lock; wp procore-connect reset-token clears the state.


Rate limits

“Procore is rate limiting this site”

Check remaining headroom on Procore → Status.

  • Confirm caching is on under Procore → Cache — it is the single biggest factor.
  • Raise the minimum cache lifetime.
  • Reduce how many different shortcodes appear on one page.
  • Look for a shortcode with a low cache value or all="true" on a large data set.

“Procore requests are paused after repeated failures”

The circuit breaker opened after five consecutive failures. It resumes automatically after five minutes, serving cached data meanwhile. Clearing the cache also resets it.

Consecutive failures usually mean a credential or permission problem, not a Procore outage — run the connection test.


Display problems

Emails are missing

Working as intended. Publishing them needs both the global setting unticked under Display and show_email="true" on the shortcode.

Dates or currency look wrong

Procore → Display sets a date format override and a currency symbol. Blank uses the site’s own date format.

Styling is missing

The stylesheet loads only on pages containing Procore Connect output. If output comes from a widget or a direct do_shortcode() call in a template, it loads in the footer instead of the head. Check that Load the Procore Connect stylesheet is on under Display.

A template override is ignored

  • Path: wp-content/themes/your-theme/procore-connect/collection.php
  • The filename must match the template name exactly, lowercase, .php extension
  • A child theme takes precedence over its parent

After upgrading from 1.x

The plugin looks deactivated

Expected. The main file was renamed from index.php to procore-connect.php, so WordPress sees a different plugin. Activate Procore Connect once — your settings are imported automatically.

It still does not connect

Version 1.x never obtained a token, because it authenticated against the wrong host. Any credentials it stored were never validated against a real Procore response. Re-run the connection test; it will show which stage fails.

Also rotate the client secret. Version 1.x stored it as plaintext in an autoloaded option, so treat it as exposed.


Gathering diagnostics

Turn on Procore → Tools → Record API diagnostics, reproduce the problem, then read the last 50 events on Procore → Status. Secrets, tokens and authorization codes are redacted before anything is written.

With WP_DEBUG and WP_DEBUG_LOG on, the same entries also go to debug.log.

When reporting an issue, wp procore-connect doctor output is the most useful single thing to include — it reports whether credentials are set without printing them.


Still stuck?

Open an issue at github.com/ibuilder/ProcoreWP/issues with the doctor output, which endpoint probes failed, and the shortcode you are using.

Please redact any real credentials. For a security problem, use private reporting instead.


Back to top

Procore Connect is licensed GPL-2.0-or-later. It is not affiliated with, endorsed by, or sponsored by Procore Technologies, Inc.

This site uses Just the Docs, a documentation theme for Jekyll.