Skip to content

Rename to Connect for Procore for WordPress.org guideline 17 - #11

Merged
ibuilder merged 1 commit into
mainfrom
rename/connect-for-procore
Aug 16, 2026
Merged

Rename to Connect for Procore for WordPress.org guideline 17#11
ibuilder merged 1 commit into
mainfrom
rename/connect-for-procore

Conversation

@ibuilder

Copy link
Copy Markdown
Owner

Auditing the plugin against the WordPress.org submission requirements turned up one hard blocker.

The blocker

Guideline 17 forbids a plugin slug or display name that begins with someone else's trademark, and "Procore" is a registered trademark of Procore Technologies, Inc. (registered for construction project-management SaaS). "Procore Connect" would have been rejected on human review. The enforcement post extends this to the display name and the directory images, and applies to every plugin approved after 2015.

The new name uses the format the guideline itself prescribes for integrations written by non-employees.

Plugin Check does not catch this. Its trademark test compares against a hardcoded list of well-known brands in Trademarks_Check.php, and "procore" is not on it — so the plugin passed clean at severity 1 with experimental checks enabled while still being unshippable. A green Plugin Check is necessary, not sufficient.

What was renamed

Slug, directory, main file, display name, text domain (378 gettext calls plus wp_set_script_translations and block.json), the POT, and the wordpress.org banner and icon.

What deliberately was not

None of it affects guideline 17, and all of it would break working sites:

  • every option name
  • the procore_connect_ hook prefix
  • the /wp-json/procore-connect/v1/ REST namespace
  • the yourtheme/procore-connect/ template override directory
  • the procore-connect CSS classes
  • the block name and the wp procore-connect CLI command

So settings, template overrides and custom CSS all survive. The only user-visible cost is a one-time reactivation, because WordPress identifies a plugin by its directory — hence the major version bump.

Two real defects found while auditing the old name

Both were artifacts of the earlier ProcoreWPProcore Connect rename:

  • The REST proxy sent a malformed HTTP header. X-Procore Connect-Cached contains a space, which RFC 7230 does not permit in a field name. Now X-Connect-For-Procore-Cached.
  • The User-Agent product token contained a space. Procore Connect/2.0.6 is not a valid token. Now ConnectForProcore/3.0.0.

Verification

  • 106 tests, 401 assertions — pass
  • PHPCS clean across 52 files, with the text_domain property switched to connect-for-procore — so it would have errored on any gettext call I missed
  • Plugin Check clean on the staged distributable, all categories plus experimental at severity 1, with the directory named for the new slug
  • Activates in a real WordPress 7.0 install with no _load_textdomain_just_in_time notice; shortcodes, the opt-in REST routes and wp procore-connect cache-clear / reset-token all confirmed working after the rename

Still outstanding before submission

Contributors: ibuilder is not a WordPress.org account — profiles.wordpress.org/ibuilder/ 404s (verified against /matt/ as a control). That field needs a real wp.org username, and the submission is tied to that account.

🤖 Generated with Claude Code

"Procore" is a registered trademark of Procore Technologies, Inc. Guideline 17
forbids a plugin slug or display name that *begins* with someone else's
trademark, so "Procore Connect" would have been rejected on human review. The
new name uses the format the guideline itself prescribes for integrations
written by non-employees.

Plugin Check does not catch this. Its trademark test compares against a
hardcoded list of well-known brands in Trademarks_Check.php and "procore" is not
on it, so the plugin passed clean at severity 1 with experimental checks on
while still being unshippable. That is worth recording: a green Plugin Check is
necessary, not sufficient.

Renamed: slug, directory, main file, display name, text domain (378 gettext
calls plus wp_set_script_translations and block.json), the POT, and the
wordpress.org banner and icon, which the guideline also covers.

Deliberately not renamed, because none of it affects guideline 17 and all of it
would break working sites: every option name, the procore_connect_ hook prefix,
the /wp-json/procore-connect/v1/ REST namespace, the yourtheme/procore-connect/
template override directory, the procore-connect CSS classes, the block name and
the wp procore-connect CLI command. Settings, template overrides and custom CSS
therefore survive the rename; only a one-time reactivation is needed, because
WordPress identifies a plugin by its directory.

Two real defects surfaced while auditing the old name, both artifacts of the
earlier ProcoreWP to Procore Connect rename:

- The REST proxy sent a cache-status header named `X-Procore Connect-Cached`.
  A header field name may not contain a space (RFC 7230); it is now
  `X-Connect-For-Procore-Cached`.
- The User-Agent product token was `Procore Connect/2.0.6`, which is likewise
  not a valid token. It is now `ConnectForProcore/3.0.0`.

Major version because the directory change forces a reactivation.

Verified: 106 tests pass; PHPCS clean across 52 files with the text_domain
property switched to connect-for-procore, so it would have failed on any missed
gettext call; Plugin Check clean on the staged distributable across every
category with experimental checks at severity 1; and the plugin activates in a
real WordPress 7.0 install with no textdomain-too-early notice, with shortcodes,
the opt-in REST routes and the WP-CLI subcommands all confirmed working.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ibuilder
ibuilder merged commit 6d0e3ff into main Aug 16, 2026
13 checks passed
@ibuilder
ibuilder deleted the rename/connect-for-procore branch August 16, 2026 02:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant