Practical WordPress guide

Ask About This Product: safe setup, failure cases, and rollback

A plain-language guide for nontechnical site owners. It separates what the parent plugin really knows from what a helper plugin should never guess.

Reviewed July 20, 2026Official-source links includedNo invented performance claims

Direct answer

Build one bounded HTTPS wa.me destination from a validated business number, the public product name, and the public product URL. Render one native GET button through WooCommerce's single-product summary and do nothing until the shopper clicks. Do not read customer, cart, checkout, or order data, and do not add an enquiry form, bot, tracker, popup, or server-side WhatsApp request.

Ask About This Product follows that boundary. Free provides one global number and message. Pro adds bounded product and category number choices, three fixed positions, and one short label.

Several different products are often sold under the phrase “WhatsApp for WooCommerce”:

Product type What it owns Risk and maintenance surface
Product question button One shopper-initiated external GET action Small
Floating chat widget Sitewide placement, styling, targeting, and scripts Larger
Product enquiry form Form storage, spam, email, consent, and delivery Larger
Order on WhatsApp Cart, checkout, totals, order state, and customer data High
WhatsApp Business API system Credentials, templates, webhooks, messaging, and compliance High

A merchant who only wants “ask about this product” does not need the other four systems. Keeping the job small also makes deactivation and privacy review understandable.

Render only in an exact product context

WooCommerce's template hook reference defines the single-product summary flow. A safe link checks all of the following before output:

  1. The request is a native single-product page.
  2. The runtime product exists and matches the queried product ID.
  3. The product is published.
  4. The feature is enabled.
  5. The business number and message template are valid.
  6. The hook has not already rendered the link.

Archives, search, related-product cards, posts, carts, checkouts, orders, feeds, REST responses, and mismatched product contexts receive nothing.

Keep the destination bounded

The final link should have fewer choices than an arbitrary URL field:

  • scheme and host fixed to https://wa.me;
  • business number reduced to 8 through 15 digits;
  • message capped at 180 plain-text characters;
  • tokens limited to product name and product URL;
  • message URL-encoded after token resolution;
  • label escaped and capped;
  • new tab protected with noopener and noreferrer;
  • nofollow applied to the outbound form.

The shopper's browser contacts WhatsApp only after a deliberate click. The plugin itself does not call WhatsApp from the server.

Do not pull customer data into the message

A product question needs public product context, not a customer profile. Avoid names, account IDs, phone numbers, email addresses, carts, checkout fields, order numbers, payment data, shipping details, cookies, IP addresses, referrers, and analytics identifiers.

This reduces both privacy scope and the chance that a copied link contains sensitive information. It also means the same product page can be cached without generating a shopper-specific destination.

Diagnose a missing or misplaced button

Symptom Check first Safe expected result
Button appears on many page types Exact is_product() and queried-product checks One link on one product page
Button uses an old number Product, category, then global precedence One deterministic business number
Button is missing after the summary Theme still calls the documented hook Link or quiet no-output
Out-of-stock product has no link Link is independent of Add to cart Question remains available
Label looks like ordinary text Theme's button and wp-element-button styles Recognizable native button
Message contains unknown tokens Template allowlist Reject malformed template

The selected market evidence includes a report of buttons appearing where visibility settings said they should not, a wrong number after update or downgrade, a missing product-enquiry button, and a request to show the button on out-of-stock products. Another user reported an AI assistant added without consent. These are individual public reports, not claims about every product in the category.

Use a native button without shipping frontend assets

The control uses a native GET form and a real submit button with WordPress and WooCommerce's standard button classes. The fixed wa.me action and hidden plain-text message are submitted only after the shopper clicks. This avoids a plugin stylesheet, fixed colors, theme selectors, JavaScript navigation, and another frontend request.

The release screenshot must still prove the button looks clickable. A class name alone is not enough: the first StoreFixKit UI run exposed an underlined-text result in the demo theme, and a later run caught an oversized inline link escaping its line box. The final native button avoids that inline-box ambiguity; the test locks the bounded form action, checks containment and sibling overlap, and verifies desktop and mobile dimensions.

Make Pro additive and deterministic

Pro can expand local routing without becoming a remote chat service:

  1. Product-specific number.
  2. Lowest matching configured category ID among at most 25 rules.
  3. Global Free number.

It can also choose one of three documented summary positions and one 40-character plain-text label. It should not add tracking, automatic navigation, customer data, arbitrary HTML, arbitrary destinations, or a second button.

Test the invariants

  1. A valid number and template save through an authorized settings request.
  2. Invalid or forged input preserves the previous valid setting.
  3. Exactly one button renders on the exact published product.
  4. In-stock and out-of-stock products both support the question button.
  5. The wa.me destination contains only the configured digits and encoded public product message.
  6. The label is escaped and visually recognizable as a button on desktop and mobile.
  7. Archives, carts, checkouts, orders, posts, feeds, and REST return no link.
  8. No customer or order value is read.
  9. No automatic redirect, popup, script, stylesheet, tracking, or server-side WhatsApp call occurs.
  10. Free continues with Pro removed and with the license service unavailable.
  11. Update, downgrade, rollback, deactivation, and uninstall preserve products and WooCommerce commerce data.

Resource and failure boundary

Non-product requests return before reading StoreFixKit link settings. Eligible product pages read only the bounded local values needed to build one destination. There is no catalog scan, custom table, cron, queue, telemetry, or StoreFixKit storefront request.

If WooCommerce, the product, phone, template, or context is missing or uncertain, no placeholder or guessed link appears. Quiet native output is safer than sending a shopper to the wrong business number.

Common mistakes

Installing a sitewide chat widget for one product question

This creates more placement, script, privacy, and support work than the job requires.

Prefilling customer or order data

Product name and public URL are enough. Shopper-specific data expands privacy scope and can leak through copied links or caches.

Allowing any destination URL

Fixing the destination to HTTPS wa.me removes unsafe schemes and unrelated hosts.

Hiding the question when Add to cart is unavailable

Stock unavailability can create more questions, not fewer. The link should not depend on the buy form.

Making Free depend on a Pro license

The global Free link must continue locally when billing or the license service is unavailable.

Market boundary

The category has large free distributions and public paid offers. That shows merchants install and buy WhatsApp-related WooCommerce tools; it does not establish StoreFixKit traction. The narrower hypothesis is that beginners will prefer one predictable product question link over a broader chat, order, bot, or marketing system.

Validate that with legitimate installs, completed number setup, visible-button checks, outbound-button clicks measured outside the plugin if the merchant chooses, trial starts, paid conversions, support volume, refunds, and renewals. StoreFixKit itself deliberately ships no click tracking.

FAQ

How do I add a WhatsApp button to a WooCommerce product?

Create a bounded wa.me link from the business number and public product context, then render it once in WooCommerce's native single-product summary.

Does the plugin send the message automatically?

No. The shopper clicks, reviews, and decides whether to send in WhatsApp.

Can it work on out-of-stock products?

Yes. The link is independent of Add to cart and remains useful for restock or product questions.

Does it collect customer data?

Not in this design. It uses only the merchant's configured number and the product's public name and URL.

What happens after deactivation?

The button and its bounded form disappear. Products, stock, prices, carts, orders, customers, templates, and theme files remain unchanged.

Focused plugin

Use the one-job implementation.

Add one shopper-initiated WhatsApp question button to an exact WooCommerce product page without forms, bots, tracking, customer-data reads, or server-side WhatsApp requests.