6rsh Messaging & Notifications

Changelog

1.5.3

  • Removed legacy per-cart cron scheduling (dead code). Added automatic cleanup of stale sixrsh_sync_cart cron events left by versions < 1.5.2, fixing high CPU on affected sites. Hardened cron scheduling with deduplication.

1.5.2

  • Performance: fixed high server CPU/load on busy stores. The hourly order-sync reconciliation sweep used to re-push up to 100 recent orders every hour regardless of whether anything changed; it now only re-syncs orders modified since the previous sweep, so a quiet store does almost no work.
  • Performance: order snapshots are now sent to 6rsh as non-blocking, fire-and-forget requests with a short timeout, and the blocking request timeout was reduced from 15s to 8s. A slow or unreachable network can no longer tie up PHP workers during order sync (sends already ran after the page response; now they no longer hold the worker either).
  • Performance: removed the broad added_post_meta/updated_post_meta listeners that ran on every metadata write site-wide. Late courier/tracking updates are still captured via the dedicated WooCommerce Shipment Tracking / AST hooks plus the hourly reconciliation sweep.
  • Performance: removed the redundant per-order delayed WP-Cron fallback that churned the WordPress cron option on every order event; the non-blocking shutdown push and the reconciliation sweep already cover delivery.
  • Added an independent kill-switch: turning Order Sync off now fully unhooks the AI order-sync path (no hooks attached) and unschedules the reconciliation sweep, leaving order notifications and abandoned-cart recovery running.
  • No database schema changes. No configuration changes required.

1.5.1

  • Updated plugin branding: new icon and banner assets for the WordPress.org listing.
  • Refreshed the readme/listing with an SEO-friendly description, a clearer benefit-led feature list, and updated metadata and tags.
  • AI order lookup now learns about NEW orders within seconds. Order sync to 6rsh uses the same robust hook set as order notifications (order created, every status transition, and each per-status entry) and is delivered on shutdown after the response is returned — no WP-Cron dependency on the live path. Previously a new order placed directly into a status (POS / async gateway) could be missed.
  • Late tracking is captured: when a courier/tracking number is added or edited a day or more after the order (WooCommerce Shipment Tracking / AST, AfterShip, or legacy tracking meta), the order is re-synced immediately so the AI can answer “where is my order?” with the carrier, tracking number, link and ship date.
  • Added an hourly reconciliation sweep (safety net) that re-syncs orders modified in the last 7 days, catching anything a missed push or a later tracking edit left behind. Idempotent — never duplicates an order.
  • A delayed WP-Cron push is kept only as a fallback for the rare case the shutdown push cannot run.

1.5.0

  • WordPress.org compliance fixes: uninstall.php now resolves the plugin directory dynamically with plugin_dir_path( FILE ) instead of a hardcoded path under WP_PLUGIN_DIR, so uninstall still works if the plugin folder is renamed.
  • Tightened the /save-followups REST permission_callback from manage_woocommerce to manage_options, matching the manage_options capability required by the settings page.
  • Removed the redundant load_plugin_textdomain() call; WordPress.org auto-loads translations for hosted plugins (Requires at least: 6.0).

1.4.1

  • Added the GPL License headers (License and License URI) to the main plugin file to match the readme.
  • Security hardening: database queries in the cart tracker, logger, and admin now reference table names as fixed literals rather than via an interpolated variable, resolving the unescaped-table-parameter warning. Query values were already bound with prepared statements; no data was ever interpolated unescaped.

1.4.0

  • Renamed the plugin slug, folder, main file and text domain from 6rsh-whatsapp to 6rsh-messaging-notifications (no trademarked term in the slug). Display name is unchanged: “6rsh Messaging & Notifications”.
  • Added automatic, idempotent settings migration: an install switching from the legacy 6rsh-whatsapp plugin keeps its API key and configuration (the sixrsh_* option namespace is preserved). Safe order: deactivate the old plugin, install and activate this one, verify, then delete the old plugin.
  • WordPress.org compliance: rewritten readme with an External Service disclosure, distinct Plugin URI and Author URI, descriptive (non-trademark) tags, and current “Tested up to” version.
  • Updated setup troubleshooting to reflect the REST API connection approach (no admin-ajax.php).

1.3.15

  • Abandoned cart capture now hydrates the WooCommerce cart/session inside the REST capture request, so live carts are reliably tracked for guests and logged-in customers.
  • Recovery template send is spec-driven from the approved template (correct header/body/URL-button parameters), and the recovery link reliably restores the cart.

1.3.13

  • Abandoned Cart Recovery now works for ANY customer — guests and logged-in alike — not just logged-in users with a saved mobile.
  • Live phone capture: billing_phone (and billing_email) are captured on the checkout page as the customer types (on blur/change), before the order is placed, via a WordPress REST endpoint (6rsh/v1/capture-cart) — not admin-ajax.php (WAF-safe).
  • New checkout opt-in checkbox: “Send me order updates and offers on WhatsApp” (label + default-checked configurable). Opt-in can be required before any phone is stored for recovery (on by default) to protect WhatsApp quality and Meta compliance.
  • Phone is validated and normalized to E.164 before storing; invalid numbers are discarded. Email is stored for context only — WhatsApp recovery always targets the phone.
  • Recovery sends now go through 6rsh’s queued send path (never inline), with dedupe (one recovery per cart) and STOP/opt-out respected. Completing the order cancels the pending recovery.
  • Free on all plans.

1.1.0

  • Fixed critical settings page bug: tabs now use WordPress native nav-tab-wrapper with URL-based (?tab=) switching instead of broken JS class selectors.
  • Fixed selector mismatch: JS now targets correct IDs matching the HTML (e.g. #sixrsh-test-connection-btn).
  • Registered missing AJAX action sixrsh_save_setting so auto-save on the settings page now works.
  • Added new AJAX handlers: sixrsh_dismiss_banner, sixrsh_dismiss_checklist.
  • Added onboarding checklist on Connection tab (dismissible).
  • Added persistent status bar showing connected account name, phone, and plan.
  • Added connection error notice when 6rsh.com is unreachable.
  • Added setup banner shown after wizard completes, linking to Notifications tab.
  • Added failed-log badge in admin menu (cached 5 min).
  • Template transient caching (1 hour) for faster settings page load.
  • Added North African phone codes: MA (+212), DZ (+213), TN (+216).
  • After wizard completes, redirects to Notifications tab instead of Connection tab.
  • Bumped version to 1.1.0.

1.0.4

  • Switched wizard connect and setup to WordPress REST API (/wp-json/6rsh/v1) — bypasses WAF rules targeting admin-ajax.php.
  • Fixed critical bug: JS was reading window.sixrshAdmin but PHP was creating window.SixRshAdmin — nonce was always empty, causing all AJAX to 403.
  • Added version footer to wizard so installed version is always visible.
  • Version text on Integrations page download button now kept in sync.

1.0.3

  • Improved error messages: 403/WAF blocks now show actionable fix instructions instead of a generic error.
  • Added “Test API key directly” fallback button when WordPress AJAX is blocked.
  • Fixed wizard success message showing “Your account” instead of the connected account name.
  • Debug: all AJAX responses are logged to browser console for easier diagnosis.

1.0.0

  • Initial release.

Plugin Website
Visit website

Author
6rsh
Version:
1.5.3
Last Updated
July 4, 2026
Requires
WordPress 6.0
Tested Up To
WordPress 7.0
Requires PHP
8.0

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.