{"id":319228,"date":"2026-05-29T17:11:48","date_gmt":"2026-05-29T17:11:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-content-sync\/"},"modified":"2026-05-29T17:11:38","modified_gmt":"2026-05-29T17:11:38","slug":"sutrify-post-relay","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sutrify-post-relay\/","author":14203661,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Sutrify Post Relay","header_author":"Aayush Shrestha","header_description":"Automatically pushes posts from one WordPress site to another via secure REST API with AES-256-CBC database encryption, transaction log, and multisite compatibility.","assets_banners_color":"5e338d","last_updated":"2026-05-29 17:11:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/sutrify-post-relay\/","header_author_uri":"https:\/\/profiles.wordpress.org\/aayushshrestha\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"Aayush.shrestha","date":"2026-05-29 17:11:38"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3553922,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3553922,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3553979,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":486},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3553979,"resolution":"772x250","location":"assets","locale":"","width":772,"height":243}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3553979,"resolution":"1","location":"assets","locale":"","width":2360,"height":742},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3553922,"resolution":"2","location":"assets","locale":"","width":1050,"height":350}},"screenshots":{"1":"Connection settings tab \u2014 configure target URL, credentials, and test the connection.","2":"Post type mapping tab \u2014 map local post types to their remote equivalents.","3":"Sync rules tab \u2014 choose which status transitions trigger a sync.","4":"Sync logs tab \u2014 audit every sync attempt with payload and response inspection.","5":"Bulk sync tab \u2014 retroactively push existing posts with a progress bar."}},"plugin_section":[],"plugin_tags":[529,1859,441,23853,1558],"plugin_category":[51,59],"plugin_contributors":[264984],"plugin_business_model":[],"class_list":["post-319228","plugin","type-plugin","status-publish","hentry","plugin_tags-content","plugin_tags-export","plugin_tags-multisite","plugin_tags-rest-api","plugin_tags-sync","plugin_category-multisite","plugin_category-utilities-and-tools","plugin_contributors-aayushshrestha","plugin_committers-aayushshrestha"],"banners":{"banner":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/banner-772x250.png?rev=3553979","banner_2x":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/banner-1544x500.png?rev=3553979","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/icon-128x128.png?rev=3553922","icon_2x":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/icon-256x256.png?rev=3553922","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/screenshot-1.png?rev=3553979","caption":"Connection settings tab \u2014 configure target URL, credentials, and test the connection."},{"src":"https:\/\/ps.w.org\/sutrify-post-relay\/assets\/screenshot-2.png?rev=3553922","caption":"Post type mapping tab \u2014 map local post types to their remote equivalents."}],"raw_content":"<!--section=description-->\n<p>Sutrify Post Relay lets you automatically replicate posts from one WordPress site to another using the standard WordPress REST API. All credentials are encrypted in the database using AES-256-CBC so nothing sensitive is stored in plain text.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>AES-256-CBC Encryption at Rest<\/strong> \u2014 API credentials are encrypted with a SHA-256 derived key before being stored in the database.<\/li>\n<li><strong>Granular Status Rules<\/strong> \u2014 Choose exactly which status transitions (Publish, Draft, Pending, Private) trigger a sync dispatch.<\/li>\n<li><strong>Custom Post Type Mapping<\/strong> \u2014 Map local CPT slugs to the matching slugs registered on the remote site.<\/li>\n<li><strong>Retry Queue<\/strong> \u2014 Failed syncs are queued in a custom log table and retried automatically via WordPress Cron.<\/li>\n<li><strong>Audit Log Viewer<\/strong> \u2014 Browse request payloads and response bodies from the admin dashboard and export them as CSV.<\/li>\n<li><strong>Bulk Sync<\/strong> \u2014 Retroactively push any existing set of posts with a batched, progressive bulk runner.<\/li>\n<li><strong>Multisite Compatible<\/strong> \u2014 Fully network-compatible, storing settings in network option tables when running on a multisite installation.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sutrify-post-relay<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin from the <strong>Plugins<\/strong> screen (or Network Activate on Multisite).<\/li>\n<li>Go to <strong>Settings \u2192 Sutrify Post Relay<\/strong> (or <strong>Network Settings \u2192 Sutrify Post Relay<\/strong> on Multisite).<\/li>\n<li>Enter your target site URL, WordPress application username, and application password.<\/li>\n<li>Tick <strong>Test Connection<\/strong> to verify credentials, configure your post type mappings, then click <strong>Save Settings<\/strong>.<\/li>\n<\/ol>\n\n<p><strong>Generating an Application Password on the target site:<\/strong><\/p>\n\n<ol>\n<li>On the target site, go to <strong>Users \u2192 Profile<\/strong>.<\/li>\n<li>Scroll to <strong>Application Passwords<\/strong>, enter a label (e.g. \"Sutrify Post Relay\"), and click <strong>Add New Application Password<\/strong>.<\/li>\n<li>Copy the generated password and paste it into the Application Password field in this plugin.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20modify%20the%20public-facing%20site%3F\"><h3>Does this plugin modify the public-facing site?<\/h3><\/dt>\n<dd><p>No. All output is limited to the WordPress admin area. Nothing is added to your public pages.<\/p><\/dd>\n<dt id=\"is%20the%20rest%20api%20password%20stored%20securely%3F\"><h3>Is the REST API password stored securely?<\/h3><\/dt>\n<dd><p>Yes. The application password is encrypted with AES-256-CBC before being saved to the database. The encryption key is derived from your site's <code>SECURE_AUTH_KEY<\/code> constant.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20wordpress%20multisite%3F\"><h3>Does it work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. When Multisite is active, settings are stored in the network options table and the plugin appears under <strong>Network Settings<\/strong>.<\/p><\/dd>\n<dt id=\"can%20i%20test%20against%20a%20local%20development%20site%3F\"><h3>Can I test against a local development site?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Allow non-HTTPS \/ local URLs<\/strong> in the Connection settings. This skips HTTPS enforcement and private IP blocking. Disable this option before using in production.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20sync%20fails%3F\"><h3>What happens if a sync fails?<\/h3><\/dt>\n<dd><p>Failed syncs are logged in the Sync Logs tab. If the <strong>Auto-Retry Failures<\/strong> option is enabled, WordPress Cron will automatically retry failed entries every 5 minutes, up to the configured maximum retry count.<\/p><\/dd>\n<dt id=\"will%20the%20plugin%20clean%20up%20after%20itself%20when%20uninstalled%3F\"><h3>Will the plugin clean up after itself when uninstalled?<\/h3><\/dt>\n<dd><p>Yes. When the plugin is deleted through the WordPress admin, it removes the encrypted settings option and drops the custom sync log table from the database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Redesigned admin UI with tabbed navigation and dark-mode support removed for WordPress admin compatibility.<\/li>\n<li>Setting to sync automatically when post is published, updated or moved to trash.<\/li>\n<li>Bulk sync runner with batched dispatch and live progress bar.<\/li>\n<li>CSV export for audit logs.<\/li>\n<li>Retry queue via WordPress Cron.<\/li>\n<li>Added Allow non-HTTPS \/ local URLs toggle for development environments.<\/li>\n<li>Improved URL validation to correctly bypass WordPress's internal SSRF guard in dev mode.<\/li>\n<\/ul>","raw_excerpt":"Securely push posts from one WordPress site to another via the REST API, with AES-256 encryption, a retry queue, and full audit logs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/319228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=319228"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aayushshrestha"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=319228"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=319228"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=319228"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=319228"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=319228"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=319228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}