{"id":343686,"date":"2026-08-12T11:37:48","date_gmt":"2026-08-12T11:37:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/socialsync-automatic-social-media-posting-and-scheduling\/"},"modified":"2026-08-12T11:37:20","modified_gmt":"2026-08-12T11:37:20","slug":"socync","status":"publish","type":"plugin","link":"https:\/\/sr.wordpress.org\/plugins\/socync\/","author":7248497,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.2","stable_tag":"0.7.2","tested":"7.0.4","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Socync - Automatic social media posting and scheduling","header_author":"Goce Mitevski","header_description":"Automatically publish your WordPress posts to X (Twitter), LinkedIn, Facebook and Bluesky when you publish content on your site.","assets_banners_color":"","last_updated":"2026-08-12 11:37:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.gocemitevski.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":22,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.2":{"tag":"0.7.2","author":"goce.mitevski","date":"2026-08-12 11:37:20"}},"upgrade_notice":{"0.7.2":"<p>Security hardening and coding-standards fixes. Recommended upgrade.<\/p>","0.7.1":"<p>Updated admin screenshots.<\/p>","0.7.0":"<p>Plugin renamed to Socync. Reconnect your accounts after updating \u2014 settings are not migrated automatically.<\/p>","0.6.0":"<p>PHP 7.4 compatibility fix. Recommended upgrade for all users.<\/p>","0.5.9":"<p>Fixed LinkedIn image upload. Recommended upgrade for LinkedIn users.<\/p>","0.5.8":"<p>Plugin directory compliance improvements. Recommended upgrade.<\/p>","0.5.7":"<p>Security improvements including SSRF protection. Recommended upgrade for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3643610,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3643601,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3643610,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.7.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3643316,"resolution":"1","location":"assets","locale":"","width":1274,"height":1263},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3643316,"resolution":"2","location":"assets","locale":"","width":1274,"height":1263},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3643316,"resolution":"3","location":"assets","locale":"","width":1274,"height":1263},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3643316,"resolution":"4","location":"assets","locale":"","width":1274,"height":1263}},"screenshots":{"1":"Socync Connections page with OAuth setup for X (Twitter), LinkedIn, Facebook, and Bluesky","2":"Scheduled posts management interface with status indicators","3":"Log viewer with platform filter and detailed error reporting","4":"Socync Settings page"}},"plugin_section":[],"plugin_tags":[157,313,154,159,11061],"plugin_category":[56],"plugin_contributors":[275343],"plugin_business_model":[],"class_list":["post-343686","plugin","type-plugin","status-publish","hentry","plugin_tags-facebook","plugin_tags-linkedin","plugin_tags-social-media","plugin_tags-twitter","plugin_tags-x","plugin_category-social-and-sharing","plugin_contributors-gocemitevski","plugin_committers-gocemitevski"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/socync\/assets\/icon.svg?rev=3643610","icon":"https:\/\/ps.w.org\/socync\/assets\/icon.svg?rev=3643610","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/socync\/assets\/screenshot-1.png?rev=3643316","caption":"Socync Connections page with OAuth setup for X (Twitter), LinkedIn, Facebook, and Bluesky"},{"src":"https:\/\/ps.w.org\/socync\/assets\/screenshot-2.png?rev=3643316","caption":"Scheduled posts management interface with status indicators"},{"src":"https:\/\/ps.w.org\/socync\/assets\/screenshot-3.png?rev=3643316","caption":"Log viewer with platform filter and detailed error reporting"},{"src":"https:\/\/ps.w.org\/socync\/assets\/screenshot-4.png?rev=3643316","caption":"Socync Settings page"}],"raw_content":"<!--section=description-->\n<p>Socync connects your WordPress site to four major social platforms and automatically publishes your content when you publish a new post. It also supports standalone scheduled posts for full control over timing and content.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Auto-Post on Publish<\/strong>: Automatically push new WordPress posts to all connected platforms after a configurable delay (default 2 minutes)<\/li>\n<li><strong>Per-Platform Autoposting Toggle<\/strong>: Choose which connected platforms receive auto-posts on the Settings page<\/li>\n<li><strong>Multi-Platform Support<\/strong>: Post to X (Twitter), LinkedIn, Facebook, and Bluesky<\/li>\n<li><strong>Link Previews with Thumbnails<\/strong>: LinkedIn and Bluesky posts include OG thumbnail images<\/li>\n<li><strong>Standalone Scheduled Posts<\/strong>: Create posts directly from the Schedule page \u2014 no WP Post required<\/li>\n<li><strong>Flexible Scheduling<\/strong>: Schedule standalone posts at a specific date and time<\/li>\n<li><strong>Custom Content<\/strong>: Full control over post content for each platform (prefix, hashtags per platform)<\/li>\n<li><strong>Dry Run Mode<\/strong>: Preview what would be posted without actually publishing<\/li>\n<li><strong>Clean Admin Interface<\/strong>: Tabbed settings page with unified Log view<\/li>\n<li><strong>Comprehensive Logging<\/strong>: Track all posting attempts, errors, and developer-level API details<\/li>\n<li><strong>Multiple Auth Methods<\/strong>: OAuth 2.0 (X, LinkedIn, Facebook), OAuth 1.0a legacy (X fallback), App Password (Bluesky)<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<h4>X (Twitter) \u2014 OAuth 2.0 PKCE<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Connections<\/li>\n<li>Click \"Connect\" for X<\/li>\n<li>Enter your Client ID and Client Secret (Confidential Client with Read+Write + <code>offline.access<\/code> scopes)<\/li>\n<li>Click \"Authorize\" and log in with your X account<\/li>\n<\/ol>\n\n<p><strong>Legacy OAuth 1.0a fallback<\/strong>: If you previously configured OAuth 1.0a credentials (API Key\/Secret + Access Token\/Secret), they continue to work. The provider auto-detects which auth mode to use based on stored credentials.<\/p>\n\n<h4>LinkedIn \u2014 OAuth 2.0<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Connections<\/li>\n<li>Click \"Connect\" for LinkedIn<\/li>\n<li>Enter your Client ID and Client Secret<\/li>\n<li>Authorize the application via the OAuth redirect (redirects back to <code>admin-post.php?action=socync_oauth_callback_linkedin<\/code>)<\/li>\n<\/ol>\n\n<h4>Facebook \u2014 OAuth 2.0<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Connections<\/li>\n<li>Click \"Connect\" for Facebook<\/li>\n<li>Enter your Client ID and Client Secret<\/li>\n<li>Authorize the application via the OAuth redirect, then select a Facebook Page to post as<\/li>\n<\/ol>\n\n<h4>Bluesky \u2014 App Password<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Connections<\/li>\n<li>Click \"Connect\" for Bluesky<\/li>\n<li>Enter your Bluesky handle\/email and an App Password (generate one at Settings &gt; App Passwords in Bluesky)<\/li>\n<li>Save credentials (no OAuth redirect)<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>Socync sends data to the following third-party services so it can publish content to your connected accounts. Data is only transmitted when you connect an account or publish a post (automatically when a WordPress post is published, or from the Schedule page). The plugin never shares this data with anyone else.<\/p>\n\n<h4>X (Twitter)<\/h4>\n\n<p>Socync publishes your post text (title, permalink, and any configured prefix\/hashtags) to your X account using the X API v2. During connection it performs an OAuth 2.0 authorization flow and stores\/refreshes the access token.<\/p>\n\n<ul>\n<li>Data sent: your X OAuth credentials (client ID, client secret, access\/refresh tokens) and the post text you publish.<\/li>\n<li>When: when you connect your X account and when you publish a WordPress post or a scheduled post to X.<\/li>\n<li>X Terms of Service: https:\/\/x.com\/en\/tos<\/li>\n<li>X Privacy Policy: https:\/\/x.com\/en\/privacy<\/li>\n<\/ul>\n\n<h4>LinkedIn<\/h4>\n\n<p>Socync publishes your post text (and optionally a thumbnail image) to your LinkedIn profile or Page using the LinkedIn Posts API and Images API. During connection it performs an OAuth 2.0 authorization flow and stores\/refreshes the access token.<\/p>\n\n<ul>\n<li>Data sent: your LinkedIn OAuth credentials, the post text you publish, and any thumbnail image you attach.<\/li>\n<li>When: when you connect your LinkedIn account and when you publish a WordPress post or a scheduled post to LinkedIn.<\/li>\n<li>LinkedIn User Agreement: https:\/\/www.linkedin.com\/legal\/user-agreement<\/li>\n<li>LinkedIn Privacy Policy: https:\/\/www.linkedin.com\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Facebook (Meta)<\/h4>\n\n<p>Socync publishes your post text (and optionally a thumbnail image) to your selected Facebook Page or personal timeline using the Facebook Graph API. During connection it performs an OAuth 2.0 authorization flow and stores\/refreshes the access and Page tokens.<\/p>\n\n<ul>\n<li>Data sent: your Facebook app\/Page credentials (app secret, access and Page tokens), the post text you publish, and any thumbnail image you attach.<\/li>\n<li>When: when you connect your Facebook account and when you publish a WordPress post or a scheduled post to Facebook.<\/li>\n<li>Meta Platform Terms: https:\/\/developers.facebook.com\/terms\/dfc_platform_terms\/<\/li>\n<li>Meta Developer Policy: https:\/\/developers.facebook.com\/devpolicy\/<\/li>\n<li>Meta Privacy Policy: https:\/\/www.facebook.com\/privacy\/policy\/<\/li>\n<\/ul>\n\n<h4>Bluesky<\/h4>\n\n<p>Socync authenticates using your Bluesky handle\/email and an App Password (via the AT Protocol session API) and publishes your post text (and optionally a thumbnail image) to your Bluesky account.<\/p>\n\n<ul>\n<li>Data sent: your Bluesky identifier (handle or email), your App Password (for authentication only), the post text you publish, and any thumbnail image you attach.<\/li>\n<li>When: when you connect your Bluesky account and when you publish a WordPress post or a scheduled post to Bluesky.<\/li>\n<li>Bluesky Terms of Service: https:\/\/bsky.social\/about\/support\/tos<\/li>\n<li>Bluesky Privacy Policy: https:\/\/bsky.social\/about\/support\/privacy-policy<\/li>\n<\/ul>\n\n<h3>Usage<\/h3>\n\n<h4>Auto-Posting on Publish<\/h4>\n\n<p>When you publish a new WordPress post, Socync automatically enqueues it for delivery to all platforms enabled in <strong>Socync &gt; Settings &gt; Autoposting<\/strong>. The post is sent after a configurable delay (default 2 minutes, set on the Settings page).<\/p>\n\n<p>Content format: <code>{prefix}: {title} {permalink} {hashtags}<\/code> (all on one line).<\/p>\n\n<p>Configure per-platform prefix and hashtags on the Connections page. Toggle autoposting per platform on the Settings page.<\/p>\n\n<h4>Creating a Scheduled Post<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Schedule<\/li>\n<li>Click \"Add New Scheduled Post\"<\/li>\n<li>Enter the post content and select the platforms to post to<\/li>\n<li>Set the desired date and time<\/li>\n<li>Save \u2014 the post will be published automatically when the time arrives<\/li>\n<\/ol>\n\n<h4>Viewing Logs<\/h4>\n\n<ol>\n<li>Go to Socync &gt; Log<\/li>\n<li>View all posting attempts, their status, and any errors<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>socync<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Navigate to Socync in the admin menu to configure your connections<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20platforms%20are%20supported%3F\"><h3>Which platforms are supported?<\/h3><\/dt>\n<dd><p>X (Twitter), LinkedIn, Facebook, and Bluesky.<\/p><\/dd>\n<dt id=\"what%20authentication%20methods%20are%20used%3F\"><h3>What authentication methods are used?<\/h3><\/dt>\n<dd><p>X uses OAuth 2.0 Authorization Code with PKCE (with OAuth 1.0a fallback). LinkedIn and Facebook use OAuth 2.0. Bluesky uses App Password authentication.<\/p><\/dd>\n<dt id=\"can%20i%20schedule%20posts%20in%20advance%3F\"><h3>Can I schedule posts in advance?<\/h3><\/dt>\n<dd><p>Yes. Use the Socync &gt; Schedule page to create standalone scheduled posts at any future date and time.<\/p><\/dd>\n<dt id=\"is%20there%20a%20dry%20run%20mode%3F\"><h3>Is there a dry run mode?<\/h3><\/dt>\n<dd><p>Yes. Enable Developer Mode on the Settings page and then use Dry Run mode to preview what would be posted without actually sending anything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>Documented external services (what data is sent, when, and links to each provider's terms\/privacy policy)<\/li>\n<li>Removed register_uninstall_hook in favor of uninstall.php for reliable cleanup<\/li>\n<li>Sanitized OAuth callback query parameters (security hardening)<\/li>\n<li>Moved inline admin JavaScript and CSS into enqueued assets<\/li>\n<li>Fixed page-number navigation (Enter key) on the Log page<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>Updated admin screenshots<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Renamed plugin from SocialSync to Socync (all internal prefixes, classes, options, hooks, and the text domain now use the socync prefix)<\/li>\n<li>Existing SocialSync settings are not migrated automatically \u2014 reconnect your accounts after updating<\/li>\n<li>Fixed hardcoded admin version reference so asset caching uses the current plugin version<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Fixed PHP 7.4 compatibility: removed union return types (array|WP_Error) which require PHP 8.0+<\/li>\n<\/ul>\n\n<h4>0.5.9<\/h4>\n\n<ul>\n<li>Fixed LinkedIn image thumbnail upload returning 426 Upgrade Required (LinkedIn-Version header mismatch between Posts API and Images API)<\/li>\n<\/ul>\n\n<h4>0.5.8<\/h4>\n\n<ul>\n<li>Added missing plugin headers (Requires at least, Requires PHP, Tested up to, Domain Path)<\/li>\n<li>Added load_plugin_textdomain() call and \/languages\/ directory<\/li>\n<li>Created WordPress-format readme.txt for Plugin Directory<\/li>\n<li>Drop custom scheduled_posts table on uninstall<\/li>\n<li>Wrapped all static WP_Error messages in __() for i18n consistency<\/li>\n<\/ul>\n\n<h4>0.5.7<\/h4>\n\n<ul>\n<li>Added SSRF protection for OG metadata and thumbnail fetches<\/li>\n<li>Fixed Bluesky JWT storage (removed sanitize_text_field that could corrupt tokens)<\/li>\n<li>Fixed Bluesky handle URL encoding (rawurlencode for RFC 3986 compliance)<\/li>\n<li>Disabled autoloading for socync_logs option to reduce database overhead<\/li>\n<\/ul>\n\n<h4>0.5.6<\/h4>\n\n<ul>\n<li>Added Settings page integration tests<\/li>\n<li>Updated admin page dashicons<\/li>\n<li>Improved plugin headers and metadata<\/li>\n<\/ul>\n\n<h4>0.5.5<\/h4>\n\n<ul>\n<li>Security audit fixes: sanitization hardening, unified logging for Facebook, OAuth URL redaction, WP_Error redirect fixes<\/li>\n<\/ul>\n\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>Security audit fixes: token storage sanitization removal, body redaction fallback, dev logger HTML stripping<\/li>\n<\/ul>","raw_excerpt":"A lightweight, stable, and maintainable WordPress plugin that automatically pushes published posts to X (Twitter), LinkedIn, Facebook and Bluesky.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/343686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=343686"}],"author":[{"embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gocemitevski"}],"wp:attachment":[{"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=343686"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=343686"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=343686"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=343686"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=343686"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=343686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}