{"id":374385,"date":"2026-09-27T21:01:48","date_gmt":"2026-09-27T21:01:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pairly-connect\/"},"modified":"2026-09-27T21:01:20","modified_gmt":"2026-09-27T21:01:20","slug":"pairly-connect","status":"publish","type":"plugin","link":"https:\/\/kab.wordpress.org\/plugins\/pairly-connect\/","author":23572599,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.1.2","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"Pairly Connect","header_author":"Pairly","header_description":"Connect your site to Pairly so your workspace can draft, schedule and publish posts here. Your content stays in WordPress.","assets_banners_color":"0d3626","last_updated":"2026-09-27 21:01:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/pairlyhq.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"pairlyhq","date":"2026-09-27 21:01:20","revision":3716052}},"upgrade_notice":{"0.1.2":"<p>Code-quality release. If Pairly was already connected, approve the connection again once after updating.<\/p>","0.1.1":"<p>Fixes a site-wide fatal error alongside Wordfence. Update immediately.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3716052,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3716052,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3716052,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3716052,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3716052,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3716052,"resolution":"1","location":"assets","locale":"","width":1280,"height":820},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3716052,"resolution":"2","location":"assets","locale":"","width":1280,"height":820}},"screenshots":{"1":"Settings \u2192 Pairly Connect once your site is connected.","2":"The approval screen an administrator sees when connecting to Pairly."}},"plugin_section":[],"plugin_tags":[2353,323,529,242115,7143],"plugin_category":[],"plugin_contributors":[283010],"plugin_business_model":[],"class_list":["post-374385","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-blog","plugin_tags-content","plugin_tags-mcp","plugin_tags-publishing","plugin_contributors-pairlyhq","plugin_committers-pairlyhq"],"banners":{"banner":"https:\/\/ps.w.org\/pairly-connect\/assets\/banner-772x250.png?rev=3716052","banner_2x":"https:\/\/ps.w.org\/pairly-connect\/assets\/banner-1544x500.png?rev=3716052","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/pairly-connect\/assets\/icon.svg?rev=3716052","icon":"https:\/\/ps.w.org\/pairly-connect\/assets\/icon.svg?rev=3716052","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pairly-connect\/assets\/screenshot-1.png?rev=3716052","caption":"Settings \u2192 Pairly Connect once your site is connected."},{"src":"https:\/\/ps.w.org\/pairly-connect\/assets\/screenshot-2.png?rev=3716052","caption":"The approval screen an administrator sees when connecting to Pairly."}],"raw_content":"<!--section=description-->\n<p>Pairly Connect links this WordPress site to your <a href=\"https:\/\/pairlyhq.com\">Pairly<\/a> workspace. Once connected, you and the AI workers in Pairly can draft, schedule and publish posts on this site, without copying anything across by hand.<\/p>\n\n<p>WordPress stays the source of truth. Posts are stored here as normal WordPress posts, so anything you edit in WordPress is what Pairly sees next.<\/p>\n\n<h4>What Pairly can do on your site<\/h4>\n\n<ul>\n<li>Read your posts, including drafts<\/li>\n<li>Create and edit drafts<\/li>\n<li>Publish, schedule and unpublish posts<\/li>\n<li>Add the images a post uses to your Media Library, and set featured images<\/li>\n<li>Set SEO titles, descriptions and social previews. They are written to Yoast SEO or Rank Math when either is active.<\/li>\n<\/ul>\n\n<h4>What Pairly cannot do<\/h4>\n\n<p>Pairly cannot install or change plugins or themes, see or manage users, change site settings, or delete posts. The plugin exposes only its own post tools; nothing else on your site is reachable through the connection.<\/p>\n\n<h4>How the connection works<\/h4>\n\n<ul>\n<li>An administrator approves the connection on a WordPress screen, much like signing in with Google. Pairly never sees your WordPress password.<\/li>\n<li>The connection uses OAuth 2.1 with PKCE. Access tokens expire after an hour, and they are stored only as hashes.<\/li>\n<li>Pairly acts with the permissions of the administrator who approved it, and only through this plugin's endpoint. A Pairly token cannot be used anywhere else on your site's REST API.<\/li>\n<li>You can disconnect at any time from Settings \u2192 Pairly Connect. Access ends immediately.<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>The site must be served over HTTPS and reachable from the internet.<\/li>\n<li>WordPress must be installed at the root of its domain (example.com, not example.com\/blog).<\/li>\n<li>Your web server must pass <code>\/.well-known\/oauth-authorization-server<\/code> through to WordPress. Almost every host does; the settings page checks it for you.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects your site to Pairly, a service run by Pairly. It is needed so your Pairly workspace can manage posts on this site.<\/p>\n\n<ul>\n<li><strong>When you click \"Connect to Pairly\"<\/strong>, your browser opens the Pairly app (<code>https:\/\/app.pairlyhq.com<\/code>), with your site's address in the link, so Pairly can start the connection.<\/li>\n<li><strong>When you approve the connection<\/strong>, Pairly registers itself with your site and receives an access token. From then on, Pairly's servers (<code>https:\/\/api.pairlyhq.com<\/code>) call this site's endpoint (<code>\/wp-json\/pairly\/v1\/mcp<\/code>) to read and write posts. They send and receive post content, SEO fields and tags. Your site does not send data to Pairly on its own; it only answers Pairly's requests.<\/li>\n<li><strong>When Pairly publishes a post that has images<\/strong>, your site downloads those images from Pairly's media storage into your Media Library.<\/li>\n<\/ul>\n\n<p>The plugin sends no analytics or tracking data, and makes no requests while it is not connected, apart from checking its own address on the settings page.<\/p>\n\n<p>Pairly <a href=\"https:\/\/www.pairlyhq.com\/legal\/terms-and-conditions\">terms and conditions<\/a> and <a href=\"https:\/\/www.pairlyhq.com\/legal\/privacy-policy\">privacy policy<\/a>.<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Bundles the WordPress MCP Adapter (GPLv2 or later) and the Space Grotesk and DM Sans typefaces (SIL Open Font License 1.1, see assets\/fonts\/OFL.txt).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Pairly Connect from Plugins \u2192 Add New.<\/li>\n<li>You are taken to Settings \u2192 Pairly Connect. If anything needs fixing first, such as HTTPS, the page tells you what to do.<\/li>\n<li>Click <strong>Connect to Pairly<\/strong> and sign in to your Pairly workspace.<\/li>\n<li>Back in WordPress, review what Pairly will be able to do, then click <strong>Approve<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20pairly%20account%3F\"><h3>Do I need a Pairly account?<\/h3><\/dt>\n<dd><p>Yes. Pairly Connect links your site to a Pairly workspace, so you need one to connect.<\/p><\/dd>\n<dt id=\"will%20pairly%20change%20my%20existing%20posts%3F\"><h3>Will Pairly change my existing posts?<\/h3><\/dt>\n<dd><p>Only when you, or an AI worker in your Pairly workspace, edit or publish a post. Publishing from AI workers goes through approval in Pairly by default. Pairly cannot delete posts.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20formatting%20pairly%20does%20not%20understand%3F\"><h3>What happens to formatting Pairly does not understand?<\/h3><\/dt>\n<dd><p>Blocks Pairly cannot edit, such as galleries, embeds or columns, are kept exactly as they are. They show in Pairly as a placeholder you can keep or remove, and your WordPress markup is never rewritten unless you change that block.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20yoast%20seo%20or%20rank%20math%3F\"><h3>Does it work with Yoast SEO or Rank Math?<\/h3><\/dt>\n<dd><p>Yes. SEO titles, descriptions, canonical URLs, robots settings and social previews set in Pairly are written to whichever of the two is active, and edits made in them are what Pairly reads back.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%3F\"><h3>How do I disconnect?<\/h3><\/dt>\n<dd><p>Go to Settings \u2192 Pairly Connect and click <strong>Disconnect<\/strong>. Every token is revoked at once. Disconnecting from inside Pairly revokes access too.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Each site in a network connects separately, from its own Settings \u2192 Pairly Connect page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Styles are loaded with wp_enqueue_style() from bundled CSS files.<\/li>\n<li>Request values are read with filter_input() or unslashed and sanitised before use.<\/li>\n<li>Tokens are stored as hashes in a single non-autoloaded option instead of a custom table. Existing connections need to be approved again once.<\/li>\n<li>Code now meets the WordPress Coding Standards in full.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix: a fatal error on every page when a security plugin such as Wordfence checks the signed-in user very early in the page load.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: connect a site to Pairly, and manage posts, images, tags and SEO fields from your Pairly workspace.<\/li>\n<\/ul>","raw_excerpt":"Connect your site to Pairly so your workspace can draft, schedule and publish posts here. Your content stays in WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=374385"}],"author":[{"embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pairlyhq"}],"wp:attachment":[{"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374385"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374385"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374385"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374385"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374385"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kab.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}