Title: CodeAtoZ – Cloud Messaging for WooCommerce
Author: codeatoz
Published: <strong>May 20, 2026</strong>
Last modified: October 5, 2026

---

Search plugins

![](https://ps.w.org/codeatoz-cloud-messaging-for-woocommerce/assets/banner-772x250.
png?rev=3539414)

![](https://ps.w.org/codeatoz-cloud-messaging-for-woocommerce/assets/icon-256x256.
png?rev=3539414)

# CodeAtoZ – Cloud Messaging for WooCommerce

 By [codeatoz](https://profiles.wordpress.org/codeatoz/)

[Download](https://downloads.wordpress.org/plugin/codeatoz-cloud-messaging-for-woocommerce.1.5.1.zip)

 * [Details](https://test.wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/#description)
 * [Reviews](https://test.wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/#reviews)
 *  [Installation](https://test.wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/#installation)
 * [Development](https://test.wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/codeatoz-cloud-messaging-for-woocommerce/)

## Description

**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
   in `wp_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-
   me` and `/verify-otp` were 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.me` link, 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.php` constant
 * 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](https://codeatoz.com/cloud-messaging-for-woocommerce-pro/)
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 …

## Screenshots

[⌊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.⌉⌊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.⌉[

**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.⌉⌊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
.⌉[

**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 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 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.⌉⌊
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
.⌉[

**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.

## Blocks

This plugin provides 1 block.

 *   WhatsApp Chat Button

## Installation

#### Quick setup

 1. Upload the plugin ZIP via **Plugins  Add New  Upload Plugin**, or unzip it into`
    wp-content/plugins/`
 2. Activate the plugin from the **Plugins** screen
 3. Go to **WhatsApp Commerce  Setup Guide** for a step-by-step walkthrough of Meta’s
    API setup
 4. 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:

 1. Creating a Meta Business account
 2. Creating a WhatsApp Business App in Meta Developers
 3. Copying credentials (Access Token, Phone Number ID, WhatsApp Business Account ID)
    into the plugin
 4. Configuring the webhook (Callback URL + Verify Token) so the plugin receives delivery
    + read receipts
 5. Approving your message templates with Meta (utility templates auto-approve in minutes)
 6. 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

## FAQ

### 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.

### 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 `.pot` file is included in `/languages/`, plus sample `.po` files for German,
French, Spanish, Italian, Dutch, Portuguese, Polish, Swedish, and Danish. Translations
are loaded on the `init` hook 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_options` table. 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](https://wordpress.org/support/plugin/codeatoz-cloud-messaging-for-woocommerce/)
 * **Pro version customers** — priority email support at support@codeatoz.com

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“CodeAtoZ – Cloud Messaging for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ codeatoz ](https://profiles.wordpress.org/codeatoz/)

[Translate “CodeAtoZ – Cloud Messaging for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/codeatoz-cloud-messaging-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/codeatoz-cloud-messaging-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/codeatoz-cloud-messaging-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/codeatoz-cloud-messaging-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/codeatoz-cloud-messaging-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.1

**New features (all free)**

 * **Click-to-Chat button.** A “Chat with us” button opening a `wa.me` deep 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 in `wp_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 `%2520` 
   for 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_optin`
   remains 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 disable `optin_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 via `wcwa_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 to `
   pending`, so the dispatcher looked up `notify_order_pending` and never found 
   a match. No WooCommerce status is called `confirmed`. 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-me` and `POST /wp-json/wce-whatsapp/v1/verify-
   otp` were registered unconditionally with a public permission callback, but their
   handlers call `Back_In_Stock_Model` and `OTP_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_login` was enabled on a 
   free install — the referenced `Login_Form` class 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' );` in `wp-config.php` if 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` / `$_POST` reads wrapped with `wp_unslash()` before sanitization
 * All `$wpdb` queries use `prepare()` or have appropriate phpcs:ignore documentation
 * Template ternary output wrapped with `esc_attr()` / `wp_kses_post()`
 * Inline `<script>` extracted to enqueued `admin-help.js`
 * `base64_decode` calls 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

## Meta

 *  Version **1.5.1**
 *  Last updated **8 hours ago**
 *  Active installations **20+**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/)
 * Tags
 * [cloud api](https://test.wordpress.org/plugins/tags/cloud-api/)[messaging](https://test.wordpress.org/plugins/tags/messaging/)
   [order notifications](https://test.wordpress.org/plugins/tags/order-notifications/)
   [whatsapp](https://test.wordpress.org/plugins/tags/whatsapp/)[woocommerce](https://test.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://test.wordpress.org/plugins/codeatoz-cloud-messaging-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/codeatoz-cloud-messaging-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/codeatoz-cloud-messaging-for-woocommerce/reviews/)

## Contributors

 *   [ codeatoz ](https://profiles.wordpress.org/codeatoz/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/codeatoz-cloud-messaging-for-woocommerce/)