WPCUSN - WordPress ClickUp Sync-nator
Two-way status synchronization between WordPress and ClickUp
by Krafty Sprouts Media, LLC · github.com/krafty-sprouts-media-llc/wpcusn · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/krafty-sprouts-media-llc/wpcusn/archive/refs/heads/main.zipReadme
=== WPCUSN - WordPress ClickUp Sync-nator === Contributors: kraftysprouts Tags: clickup, sync, wordpress, tasks, status Requires at least: 6.8 Tested up to: 6.8 Requires PHP: 8.0 Stable tag: 1.5.6 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html
Two-way status synchronization between WordPress posts and ClickUp tasks using slug-based matching.
== Description ==
WPCUSN (WordPress ClickUp Sync-nator) enables seamless two-way synchronization of post statuses between WordPress and ClickUp tasks. Posts are automatically linked to ClickUp tasks by matching post slugs to task names.
== Features ==
- Auto-Linking: Automatically links WordPress posts to ClickUp tasks when slug matches task name
- Two-Way Sync: Syncs status changes in both directions (WordPress ↔ ClickUp)
- OAuth2 Support: Secure OAuth2 authentication with ClickUp (API key fallback available)
- Status Mapping: Configurable status mappings between WordPress and ClickUp
- Webhook Support: Receives status updates from ClickUp via webhooks
- Manual Controls: Force sync and unlink tasks from post editor
- Sync Logging: Tracks all sync events for monitoring
== Installation ==
- Upload the plugin files to the
/wp-content/plugins/wpcusndirectory, or install the plugin through the WordPress plugins screen directly. - Activate the plugin through the 'Plugins' screen in WordPress.
- Go to Settings → ClickUp Sync to configure the plugin.
- Set up OAuth2 credentials or use an API key.
- Configure your ClickUp List ID.
- Set up webhook in ClickUp (optional, for ClickUp → WordPress sync).
== Configuration ==
OAuth2 Setup (Recommended):
- Register an app at https://app.clickup.com/settings/apps
- Set redirect URI to:
https://yourdomain.com/wp-admin/options-general.php?page=wpcusn&action=oauth_callback - Enter Client ID and Client Secret in plugin settings
- Click "Connect to ClickUp"
API Key Setup (Alternative):
- Get your API key from ClickUp Settings → Apps → API Token
- Enter the API key in plugin settings
List ID:
- Open your ClickUp list
- Copy the List ID from the URL:
app.clickup.com/.../{list_id} - Enter in plugin settings
Webhook Setup:
- In ClickUp: Space Settings → Integrations → Webhooks
- Add webhook with URL:
https://yourdomain.com/wp-json/clickup/v1/webhook - Select event: "Task Status Updated"
- Filter by your list
== Status Mappings ==
WordPress → ClickUp:
- draft → IN PROGRESS
- pending → PENDING (Review)
- ready → READY
- schedulable → SCHEDULED
- scheduled → SCHEDULED
- publish → PUBLISHED
ClickUp → WordPress:
- TO DO → draft
- IN PROGRESS → draft
- PENDING (Review) → pending
- READY → ready
- SCHEDULED → schedulable
- PUBLISHED → publish
== Frequently Asked Questions ==
= How does auto-linking work? =
When you save a post with a slug (e.g., "best-cat-breeds-for-seniors"), the plugin searches ClickUp for a task with the matching name ("Best Cat Breeds for Seniors"). If found, it automatically links them.
= Can I manually link a task? =
Yes, you can manually link tasks by entering the task ID in the post meta box, or the plugin will auto-link on save if the slug matches.
= What happens if a task isn't found? =
The post will not be linked, but you can manually link it later or rename the ClickUp task to match the post slug.
= Does this work with custom post types? =
Currently, the plugin only works with the default "post" post type. Support for custom post types may be added in future versions.
== Changelog ==
= 1.5.6 =
- Added: Auto-link now matches when the post slug is longer than the ClickUp task name — e.g. AI-generated slugs that combine the task name with the article title. Supports exact, prefix, and word-boundary containment matching; links only when one unambiguous candidate is found and skips tasks already linked to another post.
= 1.5.5 =
- Fixed (CRITICAL): Saving, publishing, trashing, restoring, or scheduling any unlinked post no longer blocks the admin thread with a synchronous ClickUp API search.
save_postnow only schedules a WP-Cron job (wpcusn_do_auto_link) and returns instantly; the search runs asynchronously off the admin thread (Phase 3 — mirrors Phase 2 pattern for status sync). - Fixed (CRITICAL): Trash, auto-draft, and inherit post statuses are now skipped immediately — no ClickUp search is triggered when a post is being deleted or is a WordPress placeholder.
- Fixed (CRITICAL): A 6-hour "not found" cooldown transient is set per slug after a failed search. Consecutive saves of the same unlinked post are now instant instead of triggering the full exhaustive API search each time.
= 1.5.4 =
- Fixed: Auto-link matching for hyphenated words in ClickUp (e.g. "4-Year-Old") vs slugs that use spaces ("4-year-old" in the URL).
- Changed: Background auto-link cron runs about every 6 hours instead of twice per day (WP-Cron timing still depends on site visits unless real server cron is configured).
= 1.5.3 =
- Fixed: Auto-link no longer runs during Bulk Edit or Quick Edit on the posts list (avoids many ClickUp API calls in one request). Full editor save, manual “Try Auto-Link Now”, and the scheduled cron job still perform linking as before.
= 1.5.2 =
- Fixed: ClickUp API debug logging now uses the same database log as all other sync events (no more legacy wp_options writes); entries show in the settings log panel.
- Fixed: Log viewer row formatting initializes message text per entry correctly.
= 1.5.1 =
- Fixed: Settings sync log panel reads from the database table introduced in 1.5.0 (was still reading the old option).
= 1.5.0 =
- Added: Dedicated sync log database table; replaces large serialized log in wp_options.
- Changed: WordPress to ClickUp status sync runs via WP-Cron after save so the editor does not block on ClickUp API calls.
= 1.4.4 =
- Fixed: Removed auto AJAX ClickUp calls on every post edit load; reduced API timeout; cached list status validation; sync log option no longer autoloads.
= 1.4.0 =
- Fixed: Auto-link now paginates through all pages when searching a specific List ID (previously only fetched first 100 tasks, causing misses on large lists)
- Fixed: List-based search now respects the "Include Closed Tasks" setting
= 1.0.0 =
- Initial release
- OAuth2 authentication support
- Auto-linking by slug
- Two-way status synchronization
- Webhook support
- Admin settings page
- Post meta box with manual controls
- Sync logging
== Upgrade Notice ==
= 1.0.0 = Initial release of WPCUSN. Configure OAuth2 or API key in settings to get started.
Read the full README on GitHub →
Releases
| Tag | Published |
|---|---|
| v1.5.6 | Jun 18, 2026 |
| v1.5.5 | Apr 9, 2026 |
| v1.5.4 | Apr 6, 2026 |
| v1.5.3 | Apr 4, 2026 |
| v1.5.2 | Apr 2, 2026 |
| v1.4.3 | Apr 1, 2026 |
| v1.4.2 | Mar 31, 2026 |
| v1.4.1 | Mar 28, 2026 |
| v1.4.0 | Mar 28, 2026 |
| v1.3.9 | Mar 23, 2026 |
| v1.3.8 | Feb 27, 2026 |
| v1.3.7 | Feb 10, 2026 |
| v1.3.6 | Feb 10, 2026 |
| v1.3.5 | Jan 24, 2026 |
| v1.3.4 | Jan 24, 2026 |
| v1.3.3 | Jan 5, 2026 |
| v1.3.2 | Jan 5, 2026 |
| v1.3.1 | Jan 3, 2026 |
| v1.2.8 | Jan 2, 2026 |
| v1.2.7 | Jan 2, 2026 |
| v1.2.6 | Jan 2, 2026 |
| v1.2.5 | Jan 2, 2026 |
| v1.2.4 | Jan 2, 2026 |
| v1.2.3 | Jan 2, 2026 |
| v1.2.2 | Jan 2, 2026 |
These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.