Sharraxaad
CodeAtoZ – Cloud Messaging for WooCommerce connects your WooCommerce store directly to Meta’s WhatsApp Business Cloud API. Send order confirmations, processing updates, shipping notifications, and delivery alerts to your customers on the world’s most popular messaging app — without paying any third-party BSP middleman.
You pay Meta’s per-message pricing directly. No markup, no monthly platform fees, no vendor lock-in. Meta gives every business phone number 1,000 free service messages per month, and order notifications are billed at Meta’s cheaper Utility rate with volume discounts.
✨ What’s new in 1.5.1
- 🆕 Click-to-Chat button — finally shipped. A “Chat with us” button that opens WhatsApp with your number and an optional pre-filled message. Place it automatically on product pages, with the
[wcwa_chat_button]shortcode, or as a block. This was listed as a free feature since 1.0 but had never actually been implemented — only the share button existed. It needs no Meta credentials, so it works on day one. - 🆕 Site Health checks. Tools Site Health now reports on your connection, webhook, message queue and delivery failures, and adds a WhatsApp Commerce panel to the Info tab that is safe to paste into a support request (it reports whether credentials are set, never their values).
- 🆕 Re-send from the message log. Each outbound row gets a Re-send button. It rebuilds the message from the template and the order’s current details rather than replaying the old payload, so fixing a variable mapping and re-sending actually produces a corrected message.
- 📖 Setup Guide now documents the 1.5.0 features. An “Once you are connected” section covering the variable mapper, Usage & Costs and the preference centre, plus four new FAQ entries (wrong values in messages, error #132000, how customers unsubscribe, custom order statuses).
- 🐛 Fixed: the in-plugin Setup Guide still described Meta’s retired per-conversation pricing, including “$0.005–$0.05 per conversation”. It now describes per-message billing and the October 2026 change, matching the Usage & Costs screen.
- 🐛 Fixed: uninstall left order data behind on HPOS stores. Cleanup only cleared
wp_postmeta, but with High-Performance Order Storage enabled order meta lives inwp_wc_orders_meta, so customer phone numbers and consent flags survived uninstall. Both layouts are now cleaned.
✨ What’s new in 1.5.0
Four new free features, six bug fixes, and WordPress 7.1 / WooCommerce 11.2 compatibility. Everything below is in the free version — nothing moved behind the Pro plugin.
- 🆕 Template variable mapper — Pick your Meta-approved template from a dropdown instead of typing its name, then map each
{{1}},{{2}}placeholder to the order value it should receive, with a live preview. This eliminates Meta error#132000(“number of parameters does not match”), which was by far the most common setup problem. - 🆕 Usage & Costs screen — See how many messages you sent this month, broken down by the Meta billing category that determines what each one costs, plus a meter for your 1,000 free monthly service messages. Matters more than ever now that Meta bills service and in-window utility messages.
- 🆕 Customer preference centre — A “WhatsApp” tab under My Account where customers update their number or unsubscribe themselves. Satisfies GDPR Article 7(3) (withdrawing consent must be as easy as giving it) and cuts support email.
- 🆕 Official WooCommerce checkout field — The Blocks checkout opt-in now uses WooCommerce’s own Additional Checkout Fields API, so the field also appears in My Account and on the admin order screen. Existing orders are unaffected.
- 🐛 Fixed: “Order Confirmed” notifications never fired. The setting was stored under a key no WooCommerce status ever matches, so the toggle did nothing. Your existing configuration is migrated automatically on update.
- 🐛 Fixed: dead “Notify Me” button. Free installs rendered a back-in-stock form on every out-of-stock product that always failed, because the handler ships only in Pro.
- 🐛 Fixed: two public REST endpoints returned a PHP fatal error.
/notify-meand/verify-otpwere registered publicly on every free install but called classes that ship only in Pro, so any request to them produced an HTTP 500 and an error-log entry. - 🐛 Fixed: custom order statuses from plugins like Order Status Manager are now configurable, instead of only the nine hardcoded events.
- ⚠️ Graph API upgraded from v21.0 to v25.0. v21.0 stops working on 21 January 2027, after which Meta silently downgrades calls to an older version. Updating is strongly recommended.
Why use WhatsApp for order notifications?
- 98% open rates — compared to ~20% for email. Customers read WhatsApp messages within minutes.
- No SMS costs — WhatsApp Cloud API is dramatically cheaper than SMS gateways in most countries.
- Two-way conversation — customers can reply with questions, change requests, or feedback.
- Mobile-first — works perfectly on every smartphone, no app installation needed by the customer.
- Trusted channel — customers already use WhatsApp daily, no learning curve.
Features (Free version)
Order Status Notifications
Send a WhatsApp message automatically on every WooCommerce order status change:
- Pending payment
- Processing (payment received)
- On hold (manual review)
- Shipped (triggered when a tracking number is added)
- Completed
- Cancelled
- Refunded
- Failed
- ✨ New in 1.5.0: any custom order status registered by another plugin (WooCommerce Order Status Manager and similar) — the event list is now read from WooCommerce itself rather than hardcoded
Each event has its own message template with full variable substitution — order number, customer name, total amount, shipping address, tracking URL, and more.
✨ New in 1.5.0 — Template picker & variable mapper
- Choose a template from a dropdown of your Meta-approved templates, fetched live from your account — no more typing template names and discovering the typo three orders later
- The plugin reads each template’s structure from Meta and shows you one row per
{{1}},{{2}}placeholder - Map every placeholder to the exact order value it should receive — customer name, order number, total, tracking number, and 15 more
- Live preview shows how the finished message will read, using sample data
- Maps text headers and dynamic URL buttons too, not just the message body
- Templates you haven’t mapped keep working exactly as before — mapping is opt-in per template
- This is the fix for Meta error
#132000, the most common cause of messages failing to send
✨ New in 1.5.0 — Usage & Costs
Meta moved from per-conversation to per-message billing, and since 1 October 2026 also bills service messages and utility templates sent inside the 24-hour service window. A new Settings Usage & Costs screen shows:
- Messages sent this calendar month, grouped by Meta billing category (Utility / Marketing / Authentication / Service)
- A meter for your 1,000 free service messages per month, which turns amber at 80% and red once the allowance is used up
- What each category actually costs you, in plain language
- This month’s delivery rate, with failures broken out
- A matching card on the dashboard so you notice before the invoice does
It deliberately shows message counts rather than a currency estimate — Meta’s rates vary by recipient country and volume tier, and a wrong number would be worse than no number.
GDPR-Compliant Opt-In
- Customizable consent checkbox at checkout (classic and Blocks Checkout supported)
- Configure the checkbox wording, default state, and required/optional behavior
- Records opt-in consent with timestamp and IP address (legal compliance)
- Integrates with the WordPress Personal Data Exporter and Eraser tools
- Compatible with Cookie/GDPR consent banner plugins
- ✨ New in 1.5.0: the Blocks checkout opt-in now uses WooCommerce’s official Additional Checkout Fields API, so the same field also appears under My Account and on the admin order screen — and benefits from WooCommerce’s own validation. Classic checkout is unchanged, and existing orders keep working untouched.
✨ New in 1.5.0 — Customer preference centre
- A “WhatsApp” tab under My Account where customers manage their own subscription
- Update the phone number, or unsubscribe, without emailing your support desk
- Satisfies GDPR Article 7(3): withdrawing consent is now as easy as giving it, which a checkout-only checkbox arguably was not
- Works even if you later disconnect your Meta credentials, so a subscriber can always opt out
- Enable or disable it from the settings; the URL slug is translatable via a filter
STOP-Keyword Auto-Unsubscribe
- Customers can reply “STOP”, “UNSUBSCRIBE”, “QUIT” or “END” to any message to opt out
- Automatic recognition — no manual subscriber management needed
- Confirmation message sent back to the customer
- Opt-out preserved across orders — you never need to remember it manually
- Easy admin re-opt-in tool for accidental unsubscribes
Staff Notifications (Single Phone)
- Alert your phone via WhatsApp the moment a new order arrives
- Alert on failed payments and refund requests
- Configurable per-event triggers
- (Multi-staff notification lists are available in the Pro version)
Click-to-Chat & Share Buttons
- ✨ New in 1.5.1: WhatsApp “Chat with us” button — configurable phone number, button text, pre-filled message and position
- Place it automatically on product pages, with the
[wcwa_chat_button]shortcode, or as a block (works in full-site-editing templates) - Needs no Meta credentials, no approved template and no opt-in — it is a plain
wa.melink, so it works before you connect the Cloud API - Pre-filled message supports
{product},{product_url},{store}and{page_url} - WhatsApp share button so customers can share products with friends
✨ New in 1.5.1 — Site Health & diagnostics
- Tools Site Health checks your connection, webhook configuration, queue backlog and recent delivery failures
- Each check explains the consequence, not just the state — e.g. a missing App Secret means STOP opt-outs are never processed
- A WhatsApp Commerce panel on the Site Health Info tab collects the environment facts support usually has to ask for
- Contains no credentials — only whether each is set — so it is safe to paste into a public forum
✨ New in 1.5.1 — Re-send from the message log
- A Re-send button on every outbound row in the message log
- Rebuilds the message from the template using the order’s current details, so correcting a variable mapping and re-sending produces a fixed message rather than repeating the original failure
Built-in Message Log
- Every outgoing and incoming WhatsApp message is logged with status (Sent Delivered Read Failed)
- Click any log entry to see the full payload, error code, and Meta message ID
- Filter by status, phone, date range, or specific order
- Configurable retention (default 90 days) to keep the database lean
In-Plugin Setup Guide
- 6-step walkthrough takes new merchants from “just installed” to “first message sent”
- Click-to-copy webhook URL and verify token
- Live FAQ covering Cloud API pricing tiers, template rejection causes, message delivery troubleshooting
- Accessible both as a top-level menu item and inside Settings
Technical Excellence
- Direct Meta Graph API integration (no proxy, no third-party server in the middle), pinned to Graph API v25.0 and overridable via a
wp-config.phpconstant - Encrypted access-token storage (OpenSSL AES-256-CBC)
- HMAC-verified webhook for delivery and read receipts
- Action Scheduler queue with WP-Cron fallback (reliable delivery even under load)
- HPOS (High-Performance Order Storage) compatible
- Blocks Checkout compatible
- Translation-ready with .pot file and 9 sample .po translations included
- Modern WordPress admin UI with charts (Chart.js bundled locally — no CDN loads)
- All code escapes output, sanitizes input, verifies nonces, checks capabilities
Who is this for?
- Online stores that want to stop losing customers to email-overload — WhatsApp gets read, email doesn’t.
- Stores in WhatsApp-heavy markets (India, Brazil, Indonesia, Spain, Mexico, Italy, Argentina, Saudi Arabia, etc.) where customers prefer WhatsApp over SMS.
- Direct-to-consumer (DTC) brands that want a personal, mobile-first customer experience.
- B2B / wholesale stores that need fast confirmation and shipping updates to business buyers.
- High-ticket stores where lost orders are expensive and proactive communication directly affects conversion.
- Cash-on-Delivery (COD) markets where confirmation messaging dramatically reduces fake orders (basic version free; OTP verification in Pro).
Pro version
A Pro add-on plugin is available on codeatoz.com that unlocks advanced commerce automation modules:
- Abandoned Cart Recovery — automatic follow-up sequences for incomplete checkouts (configurable delay + max messages + multi-step cadence)
- COD Verification with OTP — verify Cash-on-Delivery orders before fulfillment (massive fake-order reduction)
- Back-in-Stock Alerts — “Notify Me” widget on out-of-stock products, auto-message when restocked
- Review Collector — request product reviews a configurable number of days after delivery
- Payment Reminders — automated reminders for pending bank-transfer / unpaid orders, with auto-cancel option
- Address Confirmation — interactive button confirmation for high-value or risky orders
- WhatsApp Returns Flow — full conversational return request, photo upload, refund/exchange selection
- Catalog Sync — push your WooCommerce product catalog to WhatsApp Business Catalog
- WhatsApp OTP Login — passwordless customer login with phone + WhatsApp one-time code
- Unlimited staff phones (free is limited to 1)
- Multi-language template auto-detection for non-English markets
- Quiet Hours engine — respect customer timezones, avoid 3 AM notifications
- Analytics dashboard — charts, per-module breakdown, delivery rates, revenue recovered
- Inline-send architecture — sub-second message delivery using fastcgi_finish_request
- Premium template library + priority email support
The Pro version is a separate, standalone plugin — not a paid feature unlock of this free plugin. If you only ever use the free version, every free feature listed above will keep working forever with no nag screens or time limits.
External Services
This plugin connects to and uses the following external services to deliver its core functionality. By installing and using this plugin you acknowledge that data is transmitted to these services.
WhatsApp Business Cloud API (Meta Platforms, Inc.)
- What it is used for: Sending WhatsApp messages (order notifications, opt-in confirmations, transactional alerts), receiving delivery and read receipts via webhook, fetching the merchant’s approved message-template list.
- What data is sent: Recipient phone number (only for customers who have opted in), message template name, template variables (e.g. customer first name, order ID, order total, shipment tracking URL), and the merchant’s access token for authentication.
- When data is sent: Whenever a WooCommerce order changes status, when a customer opts in or out, when the merchant clicks “Refresh templates”, and when the merchant triggers a test message.
- Service endpoint: https://graph.facebook.com (Meta Graph API, v25.0)
- Provider: Meta Platforms, Inc.
- Terms of Service: https://developers.facebook.com/terms
- Privacy Policy: https://www.whatsapp.com/legal/business-policy
This plugin does not connect to any other external service. All other functionality (message queue, log, settings, subscriber list, dashboard) runs entirely on your own WordPress install. No telemetry, no analytics, no tracking pixels.
Privacy & Data Handling
This plugin stores the following customer data locally in your WordPress database:
- Phone numbers — in the subscribers table and the message log. Only for customers who explicitly opt in at …
Sawir-shaashado

WhatsApp order notifications on mobile — A real WhatsApp conversation showing the full order journey: confirmed shipped with tracking delivered, plus a customer reply. This is exactly what your customers receive on their phones, powered directly by Meta’s Cloud API.

Connection settings — Enter your Meta Phone Number ID, WhatsApp Business Account ID, permanent System User Token, and App Secret. The Webhook URL and Verify Token are auto-generated and copy-to-clipboard ready. A live “Test Connection” button confirms your setup works before going live.

Message templates — Browse all your Meta-approved WhatsApp templates fetched live from your account. Utility and Marketing categories shown with status indicators. Use “Refresh from Meta” to sync after creating new templates in the Meta Business portal.

Message log — Full delivery history for every outgoing and incoming message. Shows queue status (Action Scheduler), connection status, pending count, and per-message details including template name, recipient phone, direction, and delivery status.
Xayndaabyo
Kaabahani wuxuu bixinaya 1 xayndaab.
- WhatsApp Chat Button
Rakibaad
Quick setup
- Upload the plugin ZIP via Plugins Add New Upload Plugin, or unzip it into
wp-content/plugins/ - Activate the plugin from the Plugins screen
- Go to WhatsApp Commerce Setup Guide for a step-by-step walkthrough of Meta’s API setup
- Or jump straight to WhatsApp Commerce Settings Connection if you already have your Meta credentials
Detailed setup
You’ll need a Meta Business account, a Meta Developer App with WhatsApp product enabled, and a phone number not currently registered to WhatsApp Personal or Business. The built-in Setup Guide walks you through:
- Creating a Meta Business account
- Creating a WhatsApp Business App in Meta Developers
- Copying credentials (Access Token, Phone Number ID, WhatsApp Business Account ID) into the plugin
- Configuring the webhook (Callback URL + Verify Token) so the plugin receives delivery + read receipts
- Approving your message templates with Meta (utility templates auto-approve in minutes)
- Generating a permanent System User token for production use
Setup typically takes 15–30 minutes. Once connected, send a test message from the Connection tab to confirm everything works, then start enabling order status notifications.
Requirements
- WordPress 6.2 or higher
- PHP 8.0 or higher
- WooCommerce 8.0 or higher
- A Meta Business account (free)
- A phone number for your WhatsApp Business presence
SBI
-
How much does WhatsApp Cloud API cost?
-
Meta bills per message (it moved away from the old per-conversation model on 1 July 2025). Rates depend on the message category and the recipient’s country:
- Utility — order confirmations, shipping updates, delivery notices. The cheapest paid category, with volume discounts. This is what the plugin’s order notifications use.
- Authentication — one-time codes. Also discounted by volume.
- Marketing — promotional messages. The most expensive category. The free version does not send these.
- Service — your replies inside the 24-hour customer service window. The first 1,000 service messages per business phone number each calendar month are free, then they are billed per message.
Note that since 1 October 2026, service messages and utility templates sent inside the 24-hour service window are chargeable; previously they were free. The 72-hour Free Entry Point window remains free.
You pay Meta directly and this plugin charges zero markup. Use Settings Usage & Costs (new in 1.5.0) to see your own monthly volume by category.
For most small stores the bill is a fraction of equivalent SMS costs. Exact per-country rates are published by Meta and change periodically, so we deliberately do not reproduce them here.
-
Can I use my existing WhatsApp number?
-
Only if you first delete WhatsApp Personal or WhatsApp Business from the device. A phone number can only be registered to ONE of: WhatsApp Personal, WhatsApp Business app, or WhatsApp Cloud API. This plugin uses Cloud API, so you’ll need to migrate the number off WhatsApp Personal/Business first.
If you want to keep your personal WhatsApp running, get a separate business number (a VOIP number, a second SIM, or a landline that can receive SMS or voice for verification will work).
-
Why are my messages getting “rate limited”?
-
Brand-new WhatsApp Business numbers start on Meta’s lowest messaging tier — typically 250 unique customers per 24 hours. As long as your quality rating stays “High” in Meta’s assessment, Meta automatically promotes you through progressively higher tiers (1,000, then 10,000, then 100,000, then unlimited).
The progression usually takes 2–4 weeks of healthy sending. Send transactional (Utility) templates first — they build trust fastest with Meta’s quality system, because customers expect them and rarely block or report them.
Meta adjusts these tier thresholds from time to time; your current limit and quality rating are shown in the Meta Business Manager for your phone number.
-
My template was rejected by Meta. What now?
-
The most common rejection reasons:
- The template feels promotional but was submitted as “Utility” — change the category to “Marketing” OR rewrite the wording to be transactional
- The template contains unverified claims (“100% guaranteed!”, “Best price!”)
- The template has placeholders at the start or end ({{1}} as the first or last token is not allowed)
- Header or footer text exceeds character limits
Edit the template wording and resubmit. After two rejections of the same template name, use a new name (e.g.,
order_shipped_v2). -
How do I use the template variable mapper?
-
Go to Settings Notifications. For each order event, pick the Meta-approved template you want from the dropdown, then click “Map template variables”. The plugin reads that template’s structure from Meta and shows one dropdown per
{{1}},{{2}}placeholder — choose which order value belongs in each, and check the live preview underneath.You only need to do this once per template. Templates you leave unmapped keep behaving exactly as they did before 1.5.0, where the plugin guessed the variable order from a fixed priority list.
If the dropdown is empty, connect your Meta credentials first, then use Refresh from Meta on the Templates screen.
-
Customer isn’t receiving any messages — how do I debug?
-
Visit WhatsApp Commerce Message Log and find the most recent message to that customer. The status column tells you exactly what happened:
- Failed — click the row to see Meta’s error code. Common ones:
#131026(number not on WhatsApp),#132000(template parameter mismatch),#132001(template language mismatch). - Sent but not Delivered — customer has likely blocked your number, or their phone has been offline for 30+ days.
- Queued — Action Scheduler hasn’t picked up the message yet. Check your WP-Cron or visit Tools Scheduled Actions.
- Customer is opted out — check Subscribers tab. They may have replied STOP previously.
- Failed — click the row to see Meta’s error code. Common ones:
-
Does the plugin work with WooCommerce Blocks Checkout?
-
Yes. The opt-in checkbox renders on both classic checkout and the new Blocks Checkout. We update it as WooCommerce updates the Blocks API.
-
Does the plugin work with HPOS (High-Performance Order Storage)?
-
Yes. HPOS compatibility is declared in the plugin header and tested against the latest WooCommerce versions.
-
Is the plugin translation-ready?
-
Yes. The
.potfile is included in/languages/, plus sample.pofiles for German, French, Spanish, Italian, Dutch, Portuguese, Polish, Swedish, and Danish. Translations are loaded on theinithook with priority 5 so other modules can use translated strings safely. -
How is my Meta access token stored?
-
The access token is encrypted using OpenSSL AES-256-CBC before being written to the
wp_optionstable. The encryption key is derived from your WordPress AUTH_KEY constant. The token is decrypted only at the moment of an outbound API request to Meta. If you back up your database and accidentally expose it, the token cannot be used without your WordPress secret keys. -
Can I send broadcast / marketing messages?
-
The free version focuses on transactional notifications (order updates, opt-in confirmations, click-to-chat). For bulk marketing campaigns, segmented broadcasts, or abandoned cart recovery, the Pro version on codeatoz.com adds those features. The free version does not include broadcast functionality.
-
Where can I get more help?
-
- Documentation — built into the plugin. Go to WhatsApp Commerce Setup Guide for the full 6-step Meta walkthrough, click-to-copy webhook details, and a troubleshooting FAQ. Every settings tab also has inline help text.
- Free version users — community support via the WordPress.org plugin support forum
- Pro version customers — priority email support at support@codeatoz.com
Dibu-eegisyo
Ma jiraan wax dibu-eegis ah oo ku saabsan kaabahan.
Ka-qaybgalayaasha & Horumariyayaasha
“CodeAtoZ – Cloud Messaging for WooCommerce” waa softiweer il furan. Dadka soo socda ayaa wax ku biiriyay kaabahan.
Ka-qaybgalayaashaKu tarjun “CodeAtoZ – Cloud Messaging for WooCommerce” luqaddaada.
Ma xiisaynaysaa horumarinta?
Baadh koodka, fiiri bakhaarka SVN, ama iska qor diiwaanka horumarinta adigoo adeegsanaya RSS.
Isbeddellada
1.5.1
New features (all free)
- Click-to-Chat button. A “Chat with us” button opening a
wa.medeep link with your business number and an optional pre-filled message. Configurable number, button text, message and position; placeable automatically on product pages, via the[wcwa_chat_button]shortcode, or as a block that works in full-site-editing templates. The pre-filled message supports{product},{product_url},{store}and{page_url}— deliberately a small set, since the text travels in a URL the customer can read. Needs no Meta credentials, approved template or opt-in. New settings tab: Settings Chat Button.
Note: a click-to-chat button has been listed in this readme as a free feature since 1.0, but was never actually implemented — only the share button existed. This release ships it. - Site Health integration. Four checks under Tools Site Health: credentials present, webhook configured and receiving traffic, queue draining, and recent delivery failures. Each explains the consequence rather than just the state. Also adds a WhatsApp Commerce panel to the Site Health Info tab with the environment facts support usually has to ask for — it reports whether each credential is set, never its value, so it is safe to paste into a public forum.
- Re-send from the message log. Every outbound row gains a Re-send button. The payload is rebuilt from the template using the order’s current details rather than replaying the stored payload, so correcting a variable mapping and then re-sending produces a fixed message instead of reproducing the original failure. Deliberately bypasses the idempotency guard, since a re-send is an explicit operator action.
Documentation
- The Setup Guide now documents the 1.5.0 features. New “Once you are connected” section covering the variable mapper, Usage & Costs and the customer preference centre, each with its own steps and caveats.
- Four new Setup Guide FAQ entries: messages showing the wrong values in the wrong places, what Meta error #132000 means and how to fix it, how customers unsubscribe, and whether custom order statuses are supported.
- Removed outbound documentation URLs in favour of pointers to the built-in Setup Guide, which covers the same ground.
Bug fixes
- FIXED: the in-plugin Setup Guide still described Meta’s retired per-conversation billing, quoting “roughly $0.005–$0.05 per conversation” and “1,000 free service conversations per month”. Both are wrong under per-message pricing and contradicted the new Usage & Costs screen. The readme’s pricing FAQ was corrected in 1.5.0; this fixes the same claim inside the plugin.
- FIXED: uninstall left customer data behind on HPOS stores. Order-meta cleanup only ran against
wp_postmeta, but with High-Performance Order Storage enabled WooCommerce stores order meta inwp_wc_orders_meta. Phone numbers and consent flags therefore survived uninstall on HPOS sites. Both table layouts are now cleaned, guarded by a table-existence check since WooCommerce may already be deactivated at uninstall time. - FIXED: the click-to-chat pre-filled message would have been double-encoded.
add_query_arg()URL-encodes values itself, so pre-encoding produced%2520for a space and the customer would have seen a literal “%20” in their chat box. Caught before release by a regression test.
1.5.0
New features (all free)
- Template picker & variable mapper — Settings Notifications now lists your Meta-approved templates in a dropdown instead of a free-text field, and lets you map each
{{1}}/{{2}}placeholder to a specific order value, with a live preview. Covers text headers and dynamic URL buttons as well as the message body. Unmapped templates keep their previous behaviour, so the upgrade changes nothing until you opt in per template. This is the fix for Meta error#132000. - Usage & Costs screen — new settings tab reporting this month’s outbound messages grouped by Meta billing category, a meter for the 1,000 free monthly service messages (amber at 80%, red when exhausted), delivery rate, and a plain-language note on what each category costs. A matching card was added to the dashboard.
- Customer preference centre — new “WhatsApp” tab under My Account where customers update their number or unsubscribe themselves. Addresses GDPR Article 7(3). Can be disabled in settings; the endpoint slug is filterable via
wcwa_account_endpoint_slug. - Official WooCommerce checkout field — the Blocks checkout opt-in now registers through
woocommerce_register_additional_checkout_field()(WooCommerce 8.9+), so it also surfaces in My Account and on the admin order screen._wcwa_whatsapp_optinremains the canonical meta key and is written on every path, so existing orders, subscriber records and the Pro add-on are unaffected. Falls back to the previous Store API integration on older WooCommerce, or if you disableoptin_use_wc_fields. - Custom order statuses — the configurable event list is now derived from
wc_get_order_statuses(), so statuses registered by plugins like WooCommerce Order Status Manager appear in the settings UI. Filterable viawcwa_order_notification_events.
Bug fixes
- FIXED: “Order Confirmed” notifications could never fire. The settings UI wrote
notify_order_confirmed, but a pending order fires a status change topending, so the dispatcher looked upnotify_order_pendingand never found a match. No WooCommerce status is calledconfirmed. Existing configuration is migrated automatically on update, and the old key is still honoured if you never re-save your settings. - FIXED: dead “Notify Me” button in the free version. The back-in-stock form rendered on every out-of-stock product because its setting defaults to on, but the AJAX handler that answers it ships only in the Pro add-on — so every submission failed with “Could not register. Please try again.” The button is now shown only when a handler exists.
- FIXED: two public REST routes fatalled on every call in the free version.
POST /wp-json/wce-whatsapp/v1/notify-meandPOST /wp-json/wce-whatsapp/v1/verify-otpwere registered unconditionally with a public permission callback, but their handlers callBack_In_Stock_ModelandOTP_Generator— classes that exist only in the Pro add-on. Any unauthenticated request returned an HTTP 500 and wrote a fatal error to the PHP log. Both routes are now registered only when their backing classes are present. - FIXED: the Pro upsell bar never rendered.
Admin_Menu::render_pro_banner()included a partial that had never been added to the plugin, making it a silent no-op since 1.0. - FIXED: potential fatal error if
module_whatsapp_loginwas enabled on a free install — the referencedLogin_Formclass only exists in the Pro build and was called without a guard. - FIXED: rewrite rules were flushed during activation, before the plugin’s own endpoints were registered, so the flush could not include them. Now deferred to the first request after activation.
- Uninstall now also removes the template-map option, the usage transient, customer meta written by the preference centre, and WooCommerce’s own opt-in meta key.
Compatibility
- Graph API upgraded from v21.0 to v25.0. v21.0 is only available until 21 January 2027, after which Meta silently routes calls to the next-oldest usable version — changing behaviour without raising an error. v25.0 is published as available until 29 July 2028. Override with
define( 'WCWA_WHATSAPP_API_VERSION', 'v26.0' );inwp-config.phpif you need a different version. - Tested up to WordPress 7.1.
- WC tested up to WooCommerce 11.2.
- Still supports WordPress 6.2+, WooCommerce 8.0+ and PHP 8.0+.
Documentation
- Corrected the pricing FAQ, which still described Meta’s retired per-conversation model. Meta bills per message, and since 1 October 2026 also bills service messages and in-window utility templates beyond the free allowance.
- Corrected the Pro version link.
1.4.7
- COMPAT: Verified compatibility with WordPress 7.0 (Phase 3 / collaborative editing release) —
Tested up to: 7.0. - COMPAT: Bumped “WC tested up to” to WooCommerce 10.7.
- COMPAT: Continues to support WordPress 6.2+ and WooCommerce 8.0+ — no breaking changes for older sites.
- No functional changes — message queue, webhook handler, Blocks checkout opt-in, settings, encryption and all background jobs continue to work unchanged.
1.3.1
- Setup Guide promoted to top-level admin menu and Settings tab for discoverability
- Sidebar upsell now anchored to viewport right edge (position: fixed)
- Renamed for WordPress.org submission (display name and slug); internal identifiers unchanged so existing settings are preserved across updates
- readme.txt expanded with full external service disclosure and privacy section
1.3.0
- WordPress.org plugin review compliance pass
- Chart.js bundled locally under
assets/js/vendor/(MIT license attribution included) - All
$_GET/$_POSTreads wrapped withwp_unslash()before sanitization - All
$wpdbqueries useprepare()or have appropriate phpcs:ignore documentation - Template ternary output wrapped with
esc_attr()/wp_kses_post() - Inline
<script>extracted to enqueuedadmin-help.js base64_decodecalls commented with security justification- readme description rewritten to honestly reflect free-version features only
1.2.1
- Activity feed bug fix — phone column was using wrong DB field
- Active Templates mini card replaces New Subscribers in free dashboard
- Friendlier context labels in Recent Activity (“Order update #1234” vs generic “Order”)
1.2.0
- New Setup Guide tab with 6-step Meta walkthrough
- Click-to-copy webhook URL and verify token chips
- 6-question FAQ accordion (pricing, rate limits, template rejection, debugging)
1.1.1
- Pro-only Settings tabs (Cart Recovery, Quiet Hours) properly filtered in free build
- Settings save handler refuses Pro-only tabs in free (defense in depth)
1.1.0
- Plugin version bump for cache busting
- Settings tab filtering refinements
1.0.0
- Initial public release
