What's New

v1.23.4 — May 15, 2026

Fixed:

  • ACF metafield sync reliability — one invalid URL field in a batch no longer drops every other metafield (Shopify's atomic mutation rolled the whole batch back). The worker now identifies the failing entries, drops them, and retries the rest once
  • ACF image fields with object payloads (URL + alt + dimensions) now sync correctly; garbage values ([object Object], bare attachment IDs) are rejected instead of being sent to Shopify
  • Stale - placeholders are no longer written to source articles when a translation arrives before its source metafield exists

v1.23.3 — May 10, 2026

Changed:

  • Plan picker now routes to Shopify's Managed Pricing page directly (Plans link in the in-app nav, Change Plan button, and the WP plugin's upgrade link all behave consistently)
  • In-app /app/billing page removed — plan info still shows on the Dashboard

Fixed:

  • Webhook handler no longer overwrites authoritative billing-period dates with a guessed "first of next month" value
  • Plan name typos in Shopify Partner Dashboard no longer silently downgrade paying shops to FREE — sync is skipped and logged instead

v1.23.2 — May 10, 2026

Removed:

  • Translation Status report retired — the coverage numbers it surfaced were misleading on real shops. The underlying per-language stats endpoint stays available for future surfaces

v1.23.1 — May 9, 2026

Fixed:

  • Multi-language tag preservation — editing a post in one language (e.g. Polish) no longer wipes tags applied to its German, Spanish, or other translations on the shared Shopify article. Resolves a Polylang/WPML regression where tags were periodically disappearing for non-source locales

Added:

  • Per-locale tag tracking via a new wash.tracked_tags article metafield so every sync merges only its own locale's tags. Tags added manually in Shopify Admin are now preserved across syncs

v1.23.0 — May 9, 2026

Added:

  • Translation Status report — new per-connection page showing WP truth vs Synced vs Shopify totals, broken down by Global and Market-scoped locales plus WordPress categories. Includes coverage progress bars and CSV export (retired the next day — see v1.23.2)
  • WordPress /wash/v1/stats endpoint now returns per-language and per-category post counts, auto-detecting Polylang or WPML
  • Two new Grafana panels surface the same content-by-language signal on the operator dashboards

v1.22.0 — May 6, 2026

Changed:

  • Bulk publish now shows a live progress page with a real progress bar and a cancel button instead of one long request. Migrations of 500+ posts now complete reliably without timeouts
  • Each batch runs with extended PHP time limits, so shared hosts that can't change max_execution_time are no longer a blocker
  • Settings → Sync Preferences exposes "Inline progress mode" (default on) and "Auto-clear stale sync errors" (default on)

v1.21.0 — May 4, 2026

Added:

  • ↻ Refresh status row action on every post — calls Shopify to confirm whether the article still exists and reconciles local sync metadata. Useful for posts whose error is weeks old or whose Shopify article was deleted manually
  • Auto-clear stale sync errors — a daily WordPress cron removes the red ⚠️ icon from posts whose last sync failure is older than 30 days (retention period filterable)

Fixed:

  • Sync-failure icons (red ⚠️ for errors, blue 🕐 for translations waiting on their source) now show on every failure mode, not just one
  • Error icons only appear on currently-published posts — drafts and scheduled posts no longer inherit stale error meta from a past life
  • Bulk publish shows the spinning "queued" icon immediately on click, not only after the cron fires

v1.20.9 — May 2, 2026

Added:

  • Blog Mappings list overhaul — rule position badges (#N), translation scope badges (🌍 Global / 📍 Market / — Primary), sortable column headers, four combined filters (Destination, Blog/Page, WP Language, Translation), live N / M counter, and Reset filters
  • Row hover, auto-scroll to form on Edit, and icon-only action buttons (✏️ Edit / 📄 Duplicate / 🗑️ Delete) with full keyboard / screen-reader labels
  • New 🌍 Global (no market) option group in the Market & Locale dropdown — lets shops with Shopify Markets pick a shop-wide Translate & Adapt locale without binding to a market

Fixed:

  • Drag-and-drop reordering of mapping rules no longer wipes their data (priority-only updates are now sparse)
  • Editing a Global-only mapping no longer reverts the market selection to "Default"
  • Bogus "duplicate rule" and "locale without market" warnings have been removed

v1.20.6 — May 1, 2026

Added:

  • Blog mappings now support a Global locale (no market) — sends translations to shop-wide Translate & Adapt instead of binding them to a single Shopify Market

Fixed:

  • Saved mappings no longer lose their locale / market selection (the form action handlers were dropping those fields on submit)

v1.20.5 — May 1, 2026

Changed:

  • App Store compliance — removed the manual shop-domain field from the /auth/login fallback page so installs initiate from a Shopify-owned surface
  • Subscribed to APP_SUBSCRIPTIONS_UPDATE so local plan rows automatically reflect cancellations, expiries, and declines from Shopify

Fixed:

  • Synced pages once again carry the SEO meta title and description they had in WordPress (the field was being read but never forwarded to Shopify)

v1.20.3 — April 20, 2026

Fixed:

  • "Connect to Shopify" no longer 404s for shops on specific custom domains — the app slug used in the connect URL is now correct

v1.19.1 — April 19, 2026

Fixed:

  • "Blogs" tab no longer shows the red unsaved-changes dot after you save or delete a mapping rule via the AJAX buttons

v1.18.1 — April 16, 2026

Added:

  • Bricks Builder support — Bricks-built pages now sync their actual rendered content plus the scoped CSS Bricks generates, instead of the empty post_content WordPress stores

v1.18.0 — April 16, 2026

Added:

  • Mapping rules now have a Shopify Destination (Blog Article or Page) and a WP Post Types field, so custom post types like recipe or news can be routed to either Shopify blogs or pages independently
  • Mapping cards show destination and post-types badges at a glance

v1.17.6 — April 16, 2026

Fixed:

  • Synced pages now appear in the internal-links search and resolve correctly in cross-content links (they used to be silently skipped due to a stale meta key)
  • Smart Redirections are now created during async (queued) sync jobs — previously the redirect condition always failed because of a wrong option name

v1.17.4 — April 15, 2026

Fixed:

  • WPML / Polylang / TranslatePress / Weglot are now detected only when actually active — inactive or uninstalled plugins no longer trigger false-positive language tabs

v1.17.3 — April 15, 2026

Fixed:

  • Image sync stops retrying images that return permanent 401/403/404/410 from WordPress, instead of looping until the queue gives up
  • Custom metafields now respect existing Shopify definition types (URL, JSON, color, number) instead of always writing plain text

v1.17.1 — April 15, 2026

Fixed:

  • URL Redirections now strip inline # comment text from imported rules and respect the post types selected in settings (instead of always being limited to posts and pages)

v1.17.0 — April 14, 2026

Removed:

  • Managed WordPress Hosting (MANAGED plan at $249/mo) — the feature has been retired. Existing plans, sync, and content are unaffected

v1.16.0 — April 13, 2026

Added:

  • Metafield translations — ACF, custom, and SEO metafields now appear in Shopify Translate & Adapt with per-locale values from translated WordPress posts. Definitions are created with the right translation permissions so the merchant UI handles them as multilingual

v1.15.3 — April 13, 2026

Added:

  • Search & Replace tab (Business plan) — define text-replacement rules applied to post content before it ships to Shopify. Useful for shortcode → HTML conversion, domain rewriting, or stripping unwanted attributes

v1.15.2 — April 13, 2026

Fixed:

  • WordPress categories now sync as Shopify article tags (deduplicated, "Uncategorized" excluded)
  • Translation posts merge their tags into the shared source article on Shopify
  • Double titles in articles fixed — the leading <h1> matching the post title is stripped from the body so Shopify renders it once
  • Non-source translations no longer overwrite the source article's metafields

v1.15.0 — April 10, 2026

Added:

  • Blog Mappings now have independent Category and Language selectors with their own dropdowns. Combined rules match both filters at once and take priority over single-axis rules
  • Language selector is populated automatically from the active translation plugin (WPML / Polylang / TranslatePress / Weglot) and hides itself when none is active

v1.14.0 — April 9, 2026

Changed:

  • Meta Fields tab — per-field toggles — replaced the plugin-level "WP Core / Yoast / RankMath / ACF" cards with a flat list of every detected meta field, each with its own on/off toggle, source badge, and type
  • New Refresh Fields button rescans recent posts for new keys without leaving the settings page

v1.13.0 — April 8, 2026

Fixed:

  • Metafields are now actually sent to Shopify after async syncs (the callback wasn't triggering the metafield job)
  • ACF fields sync even when the ACF plugin is deactivated — the plugin falls back to raw post meta with field_* references
  • Checkbox values save correctly in all settings tabs, including the unchecked state
  • Meta Fields toggles are always editable; un-installed plugins show a yellow "Not detected" hint instead of being disabled

v1.12.19 — April 2, 2026

Added:

  • Bidirectional Settings Sync — settings saved in the Shopify App now push to WordPress automatically (the WP → Shopify direction was already in place). The unified Refresh buttons in both admins pull plan info, settings, and updates in one click
  • Smart Redirections toggle added to the Shopify App's Redirections page; it stays in sync with the matching WordPress setting

v1.12.18 — April 2, 2026

Added:

  • Reset to Defaults button in Advanced — restores every sync, metafield, files, and Gutenberg setting to its documented default (with a confirmation popup). Shopify connection and synced content are untouched
  • Admin Access Control — restrict the WordPress plugin's UI to administrators (or a custom list of allowed usernames). Non-permitted users see a read-only "View Only Mode" notice and can't submit forms

v1.12.17 — April 2, 2026

Added:

  • Bulk actions for Shopify sync (Publish, Re-publish, Unpublish) in WordPress posts list
  • make seed-wordpress-dev command for demo content seeding
  • Seed articles with Gutenberg blocks, inline CSS, and SEO metafields

Changed:

  • Moved "Include Block CSS" option below "Enable Custom Blocks" in settings
  • Added documentation link to Shopify theme CSS configuration guide

Fixed:

  • Authorization redirect in Shopify embedded app (reconnect functionality)
  • Missing "Enable Smart Redirections" checkbox in WordPress plugin Redirections tab

v1.12.16 — March 31, 2026

Fixed:

  • Custom frontmatter fields now correctly accessible in SSG templates
  • Screencasts page video player and playlist rendering
  • Docs page lastUpdated display
  • Error page errorCode display
  • Post template language attribute

v1.12.15 — March 29, 2026

Changed:

  • Simplified WordPress plugin connection flow
  • Removed API Secret field (only API Key needed)
  • Removed Manual Configuration section (OAuth only)

v1.12.14 — March 28, 2026

Added:

  • Screencasts page with video tutorials
  • Getting Started guide video
  • Plugin Installation walkthrough
  • Content Sync Overview screencast

v1.12.13 — March 27, 2026

Fixed:

  • Landing page SEO metadata rendering
  • Pricing card feature list alignment
  • Mobile navigation toggle animation

v1.12.12 — March 26, 2026

Added:

  • Blog hub page with article listings
  • Category filtering for blog posts
  • Featured image support for articles

Changed:

  • Improved dark theme contrast ratios (WCAG 2.2 AA)
  • Updated pricing tier descriptions

View full changelog on GitHub →