{"id":363893,"date":"2026-09-11T18:03:17","date_gmt":"2026-09-11T18:03:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zinn-connector\/"},"modified":"2026-09-14T12:29:25","modified_gmt":"2026-09-14T12:29:25","slug":"zinn-connector","status":"publish","type":"plugin","link":"https:\/\/gu.wordpress.org\/plugins\/zinn-connector\/","author":23304153,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.4","stable_tag":"1.2.4","tested":"7.1","requires":"6.6","requires_php":"8.2","requires_plugins":null,"header_name":"Zinn\u00ae Connector","header_author":"Neil Lock \u2014 CEO, Zinn Digital\u00ae Ltd","header_description":"Connects this WordPress site to Zinn Digital\u00ae so scheduled articles can be published to it. Paste a pairing code from your Zinn\u00ae dashboard and the plugin sets up its own credential \u2014 nothing is copied by hand.","assets_banners_color":"14308a","last_updated":"2026-09-14 12:29:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/zinndigital.com\/wordpress-plugins\/zinn-connector","header_author_uri":"https:\/\/zinndigital.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":129,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"zinndigital","date":"2026-09-11 18:02:54","revision":3691874},"1.2.2":{"tag":"1.2.2","author":"zinndigital","date":"2026-09-11 22:37:38","revision":3692176},"1.2.3":{"tag":"1.2.3","author":"zinndigital","date":"2026-09-13 02:21:06","revision":3693254},"1.2.4":{"tag":"1.2.4","author":"zinndigital","date":"2026-09-14 12:29:25","revision":3695205}},"upgrade_notice":{"1.2.2":"<p>Clearer messages when a connection cannot be completed, and three translation fixes. Recommended for everyone.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3691873,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3691873,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3691873,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3691873,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0","1.2.2","1.2.3","1.2.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3692175,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3692175,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3692175,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3692175,"resolution":"4","location":"assets","locale":"","width":1280,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3692175,"resolution":"5","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"Pairing: paste the code from your Zinn Digital\u00ae dashboard and press Connect \u2014 the plugin creates and hands over its own credential.","2":"Publishing controls: live or draft, the author and category to use, whether images and edits are allowed, and an email per published article.","3":"Off-site backups: switch them on, leave folders out, and set a size limit so a large site stops with a message instead of failing silently.","4":"The Zinn Digital\u00ae overview in wp-admin shows whether each Zinn\u00ae plugin on the site is working.","5":"Every screen is translated \u2014 here the Connection tab in Arabic, right to left."}},"plugin_section":[262246],"plugin_tags":[8097,2015,151,7143,186],"plugin_category":[55,59],"plugin_contributors":[280285],"plugin_business_model":[],"class_list":["post-363893","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-application-passwords","plugin_tags-auto-post","plugin_tags-backup","plugin_tags-publishing","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_category-utilities-and-tools","plugin_contributors-zinndigital","plugin_committers-zinndigital"],"banners":{"banner":"https:\/\/ps.w.org\/zinn-connector\/assets\/banner-772x250.png?rev=3691873","banner_2x":"https:\/\/ps.w.org\/zinn-connector\/assets\/banner-1544x500.png?rev=3691873","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/zinn-connector\/assets\/icon-128x128.png?rev=3691873","icon_2x":"https:\/\/ps.w.org\/zinn-connector\/assets\/icon-256x256.png?rev=3691873","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/zinn-connector\/assets\/screenshot-1.png?rev=3692175","caption":"Pairing: paste the code from your Zinn Digital\u00ae dashboard and press Connect \u2014 the plugin creates and hands over its own credential."},{"src":"https:\/\/ps.w.org\/zinn-connector\/assets\/screenshot-2.png?rev=3692175","caption":"Publishing controls: live or draft, the author and category to use, whether images and edits are allowed, and an email per published article."},{"src":"https:\/\/ps.w.org\/zinn-connector\/assets\/screenshot-3.png?rev=3692175","caption":"Off-site backups: switch them on, leave folders out, and set a size limit so a large site stops with a message instead of failing silently."},{"src":"https:\/\/ps.w.org\/zinn-connector\/assets\/screenshot-4.png?rev=3692175","caption":"The Zinn Digital\u00ae overview in wp-admin shows whether each Zinn\u00ae plugin on the site is working."},{"src":"https:\/\/ps.w.org\/zinn-connector\/assets\/screenshot-5.png?rev=3692175","caption":"Every screen is translated \u2014 here the Connection tab in Arabic, right to left."}],"raw_content":"<!--section=description-->\n<p><strong>Zinn\u00ae Connector links a WordPress site hosted anywhere to Zinn Digital\u00ae, so the articles you write and schedule there are published here automatically \u2014 with their images, in the category and under the author you choose \u2014 and, if you want it, the whole site is backed up off-site.<\/strong><\/p>\n\n<p>If you write your articles in Zinn Digital\u00ae and this WordPress site is hosted somewhere else, this plugin is how the two are introduced.<\/p>\n\n<p>Paste a pairing code from your Zinn Digital\u00ae dashboard and the plugin creates a WordPress <strong>application password<\/strong> for itself and hands it to Zinn Digital\u00ae. You never see or copy the credential, so it cannot be pasted into the wrong window or left in a support ticket.<\/p>\n\n<p>The plugin does not change your site. It adds no endpoint, no shortcode and nothing to your public pages, and it makes no outbound request at all until you pair it.<\/p>\n\n<p>Everything it sends is listed under <strong>External services<\/strong> below. In short: one request when you press Connect, a connection-status check for its own screen, and \u2014 only if you switch scheduled backups on in your Zinn Digital\u00ae dashboard \u2014 an hourly check for a due backup, plus the upload itself when one is due.<\/p>\n\n<h4>What you can do with it<\/h4>\n\n<ul>\n<li><strong>Pair in one step.<\/strong> A single-use pairing code replaces copying an application password between two browser tabs.<\/li>\n<li><strong>Publish scheduled articles automatically.<\/strong> Articles go live straight away, or arrive as drafts if you would rather read everything first.<\/li>\n<li><strong>Decide what may happen on your site.<\/strong> Choose the author shown on each article and the category it lands in, and switch image uploads, edits to earlier articles and a per-article email notification on or off.<\/li>\n<li><strong>See whether the connection works.<\/strong> The status panel says whether the site is paired and, when something is wrong, what is wrong and what to do about it \u2014 with a button to check again.<\/li>\n<li><strong>Disconnect for real.<\/strong> \"Disconnect this site\" deletes the application password, so the credential Zinn Digital\u00ae holds stops working at once.<\/li>\n<li><strong>Back the site up off-site (optional).<\/strong> Files and database are archived and streamed in fixed-size chunks straight to object storage, so memory use does not grow with the site. Leave folders out, set a size limit, and a backup is skipped rather than started when the disk has no room for it.<\/li>\n<li><strong>Ask for help without exposing secrets.<\/strong> A support report shows you the exact, already-redacted payload before anything is sent.<\/li>\n<li><strong>Use it in your language.<\/strong> Every screen is translated into 57 languages, right-to-left included.<\/li>\n<\/ul>\n\n<h4>Who it is for<\/h4>\n\n<p>Anyone who writes, schedules or commissions articles in Zinn Digital\u00ae for a WordPress site that Zinn Digital\u00ae does not host \u2014 a client's site, a brand site on another host, or a network of sites. Sites hosted with Zinn Digital\u00ae are connected for you and do not need it.<\/p>\n\n<h4>What it needs<\/h4>\n\n<ul>\n<li>WordPress application passwords must be enabled (they are, by default, on any site served over HTTPS).<\/li>\n<li>The WordPress user connecting the site must be able to publish posts. The credential inherits that user's permissions.<\/li>\n<\/ul>\n\n<h4>Disconnecting<\/h4>\n\n<p>Press <strong>Disconnect this site<\/strong> on the plugin's Connection tab, or revoke the \"Zinn Digital\u00ae (publishing)\" application password under Users \u2192 Profile \u2192 Application Passwords. Deactivating the plugin does <strong>not<\/strong> revoke it, deliberately \u2014 deactivating a connector to test something should not silently stop your publishing.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects your WordPress site to Zinn Digital\u00ae so that articles scheduled there are\npublished to this site. It is useless without that service, and it only ever talks to it.<\/p>\n\n<p><strong>What is sent, and when<\/strong><\/p>\n\n<ul>\n<li><strong>Pairing (once, when you paste a pairing code and click Connect).<\/strong> The plugin posts the code\nto <code>https:\/\/api.zinndigital.com\/v1\/connector\/claim<\/code> together with your site URL, and \u2014 this is\nthe part to be clear about \u2014 <strong>it creates a WordPress application password for the connecting\nadministrator and sends that password to Zinn Digital\u00ae.<\/strong> That credential is what lets the\nservice publish posts to this site through the WordPress REST API. It is created by\n  WP_Application_Passwords, is scoped to one user, and is visible and revocable at any time\nunder <strong>Users \u2192 Profile \u2192 Application Passwords<\/strong>.<\/li>\n<li><strong>Disconnecting.<\/strong> Removing the connection deletes that application password from this site, so\nthe credential Zinn Digital\u00ae holds stops working immediately.<\/li>\n<li><strong>Scheduled backups \u2014 only after you switch them on in your Zinn Digital\u00ae dashboard.<\/strong> A\nWordPress cron event then asks <code>https:\/\/api.zinndigital.com\/v1\/connector\/backup\/claim<\/code>, once\nan hour, whether a backup is due; the answer is normally \"no\" and nothing else happens. When\none <em>is<\/em> due the plugin builds a <code>.tar.gz<\/code> of this site's files and database, <strong>uploads it\nstraight to object storage<\/strong> using a short-lived, single-use URL the previous answer supplied\n\u2014 the archive never passes through Zinn Digital\u00ae's own servers \u2014 and then posts the outcome\nto <code>\/v1\/connector\/backup\/complete<\/code>. Until you switch backups on, that hourly event finds no\nbackup token and returns without contacting anything.<\/li>\n<\/ul>\n\n<p><strong>No content, visitor data or analytics are transmitted.<\/strong> The plugin makes no outbound request\nof any kind until you pair it.<\/p>\n\n<p>Service terms: https:\/\/zinndigital.com\/legal\/terms\nPrivacy policy: https:\/\/zinndigital.com\/legal\/privacy<\/p>\n\n<ul>\n<li><p><strong>Support diagnostics (only when you press send).<\/strong> If you ask us for help, the plugin can send\na support report to <code>https:\/\/api.zinndigital.com\/v1\/connector\/diagnostics<\/code>. <strong>You are shown the\nexact payload first, already redacted, and nothing leaves your site until you press send.<\/strong>\nCredentials are excluded by declaration rather than by matching key names, and render as\n  [not sent \u2014 credential]. The plugin never sends this on its own initiative.<\/p><\/li>\n<li><p><strong>Connection status.<\/strong> <code>https:\/\/api.zinndigital.com\/v1\/connector\/status<\/code> reports whether this\nsite's pairing is still live, for the connection state shown on the plugin's own screen.<\/p><\/li>\n<\/ul>\n\n<h3>Translations<\/h3>\n\n<p><strong>Every string this plugin adds to your admin is translated into 57 languages<\/strong> \u2014 labels, notices,\nerrors and settings, not a subset. The catalogues are bundled in the plugin, so they work as soon\nas you set your site language; there is no separate language pack to install.<\/p>\n\n<p>They are bundled rather than left to translate.wordpress.org because that service can only offer\nthe languages volunteers have got to, and Zinn Digital\u00ae sells its platform in all 57 of these \u2014 a\ncustomer whose site is in Amharic or Khmer would otherwise read an English admin screen\nindefinitely. A community translation is always preferred where one exists: WordPress loads a\nlanguage pack ahead of a bundled catalogue, so contributing on translate.wordpress.org replaces\nours rather than competing with it.<\/p>\n\n<p>Every user-visible string is complete in each of the 53 languages WordPress can serve today:<\/p>\n\n<p>Amharic (am), Arabic (ar), Azerbaijani (az), Bulgarian (bg_BG), Bengali (Bangladesh)\n(bn_BD), Czech (cs_CZ), German (de_DE), Greek (el), Spanish (Spain) (es_ES), Persian\n(fa_IR), French (France) (fr_FR), Gujarati (gu), Hebrew (he_IL), Hindi (hi_IN), Croatian\n(hr), Hungarian (hu_HU), Armenian (hy), Indonesian (id_ID), Italian (it_IT), Japanese\n(ja), Georgian (ka_GE), Kazakh (kk), Khmer (km), Kannada (kn), Korean (ko_KR), Lao (lo),\nMalayalam (ml_IN), Mongolian (mn), Marathi (mr), Malay (ms_MY), Myanmar (Burmese)\n(my_MM), Nepali (ne_NP), Dutch (nl_NL), Panjabi (India) (pa_IN), Polish (pl_PL), Pashto\n(ps), Portuguese (Brazil) (pt_BR), Romanian (ro_RO), Russian (ru_RU), Sinhala (si_LK),\nAlbanian (sq), Serbian (sr_RS), Swahili (sw), Tamil (ta_IN), Telugu (te), Thai (th),\nTagalog (tl), Turkish (tr_TR), Ukrainian (uk), Urdu (ur), Uzbek (uz_UZ), Vietnamese\n(vi), Chinese (China) (zh_CN)<\/p>\n\n<p>A further 4 ship complete in the plugin \u2014 Hausa (ha), Somali (so_SO), Tajik (tg), Yoruba (yo) \u2014 but\nWordPress core does not currently provide a locale for them, so WordPress cannot load them.<\/p>\n\n<h4>Right-to-left<\/h4>\n\n<p>Arabic, Persian, Hebrew, Pashto and Urdu are right-to-left. Every screen this plugin adds was\nrendered in a real WordPress install in each of those languages and checked, not assumed.<\/p>\n\n<h4>For translators<\/h4>\n\n<pre><code>languages\/ holds the `.pot` template plus a `.po`, `.mo` and `.l10n.php` for every language, so\n<\/code><\/pre>\n\n<p>corrections and new languages can be contributed directly.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In wp-admin, open Plugins \u2192 Add New Plugin, search for <strong>Zinn\u00ae Connector<\/strong>, then choose Install Now and Activate.<\/li>\n<li>In Zinn Digital\u00ae, open Content \u2192 Other sites and press \"Get a pairing code\".<\/li>\n<li>In WordPress, open Zinn Digital\u00ae \u2192 Connector, paste the code, and press Connect this site.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20plugin%20free%3F\"><h3>Is the plugin free?<\/h3><\/dt>\n<dd><p>Yes. The plugin is free and GPL-licensed. It connects your site to a Zinn Digital\u00ae account, which is where articles are written and scheduled; there is no paid version of the plugin and nothing in it is locked.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20any%20host%3F\"><h3>Does it work with any host?<\/h3><\/dt>\n<dd><p>Yes. It runs on any WordPress 6.6 or later with PHP 8.2 or later, wherever the site is hosted. The only requirement is that WordPress application passwords are enabled, which they are by default on any site served over HTTPS.<\/p><\/dd>\n<dt id=\"can%20articles%20arrive%20as%20drafts%20instead%20of%20going%20live%3F\"><h3>Can articles arrive as drafts instead of going live?<\/h3><\/dt>\n<dd><p>Yes. On the Publishing tab, set \"Publish articles as\" to a draft and every article waits for you to review and publish it yourself.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20content%20anywhere%3F\"><h3>Does it send my content anywhere?<\/h3><\/dt>\n<dd><p>No. It sends the site's address, the WordPress username, and a credential it creates for Zinn Digital\u00ae. Nothing else leaves the site.<\/p><\/dd>\n<dt id=\"can%20i%20connect%20without%20the%20plugin%3F\"><h3>Can I connect without the plugin?<\/h3><\/dt>\n<dd><p>Yes. Create an application password yourself under Users \u2192 Profile and enter it in your Zinn Digital\u00ae dashboard. The plugin exists so you do not have to handle the credential.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>No. Pairing and every screen it adds are in wp-admin, and it adds nothing at all to your public\npages \u2014 no script, no stylesheet, no markup.<\/p>\n\n<p>If you switch scheduled backups on, WordPress's own cron runs the hourly \"is a backup due?\"\ncheck, and WordPress cron is triggered by a visit. That check is one short request to Zinn\nDigital\u00ae and it happens <strong>after<\/strong> the page has been sent to the visitor, so it does not delay\nanybody. With backups off, the plugin never runs on a front-end request.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>The admin screens' styles and scripts are now enqueued through WordPress rather than printed into the page, so they can be dequeued, deferred or optimised by your site like any other asset \u2014 and they still work on a site whose security policy forbids inline code.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Translations: every string this plugin's admin shows is now translated in every bundled language. A few strings the machine translator refused were shipping in English; they are now translated by hand.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fixed: when Zinn Digital\u00ae could not finish a connection, the plugin said your pairing code had been refused and told you to generate a new one. It now says the problem is on our side and that the same code still works.<\/li>\n<li>Fixed: the \"not connected\" notice on the Zinn Digital\u00ae overview told you to paste the code \"below\", where there is no field. It now points to this plugin\u2019s settings.<\/li>\n<li>Fixed three translations: Arabic showed \"\u062b\u0644\u0627\u062b0\" instead of \"thirty\" minutes, Amharic showed a garbled label for Backups, and Thai carried a stray digit in the settings-import message.<\/li>\n<li>Now listed in the WordPress.org plugin directory, so you can install it from Plugins \u2192 Add New Plugin by searching for \"Zinn\u00ae Connector\".<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Hardening: a settings rule can no longer be mistaken for a PHP function with the same name. The same shared settings code is what stopped Zinn\u00ae Translate saving its settings. Nothing about how this plugin behaves changes.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<p>A real connection status that says what is wrong and what to do about it, a Disconnect button that actually revokes the credential, and full control over what may be published to your site \u2014 status, author, category, images, edits and email notifications. Backups gain an on\/off switch, exclusions and a size limit.<\/p>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Fixed: a scheduled backup could exhaust PHP's memory on a large site. The archive is now compressed and uploaded in fixed-size chunks, so peak memory no longer depends on how big the site is.<\/li>\n<li>Added: a backup is not attempted unless there is room on disk for it, rather than filling the disk and taking the site down.<\/li>\n<li>Corrected the description of what the plugin sends and when \u2014 it listed one outbound request and made several.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Fixed: a new release of this plugin could not reach a site that already had it, so no update ever appeared on the Plugins screen.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added the Zinn\u00ae panel: links to Zinn Digital\u00ae hosting, the Zinn\u00ae marketplace, Zinn Hub\u00ae and this plugin's user guide, from inside the WordPress admin.<\/li>\n<li>Removed an unreachable dashboard screen that no menu entry pointed at.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Auto-publish articles from Zinn Digital\u00ae to this WordPress site, with optional off-site backups. Pair once with a code \u2014 no password to copy.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/363893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=363893"}],"author":[{"embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zinndigital"}],"wp:attachment":[{"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=363893"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=363893"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=363893"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=363893"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=363893"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/gu.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=363893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}