WhatsApp Chat Button
A floating WhatsApp chat button with pre-filled message templates, per-page number routing and click analytics — with nothing loaded from a remote server and no personal data collected.
Why it exists
For a lot of businesses, especially outside the US and Western Europe, WhatsApp is the channel customers actually use. A contact form is a message into a void that may be answered in two days. A WhatsApp thread is a conversation that starts now.
The plugins that add a WhatsApp button to WordPress tend to go one of two ways. Either they are a free stub that puts a green circle on the page and stops there, or they are a chat-widget suite that loads a remote script, sets cookies, and routes your visitors' behaviour through somebody else's analytics platform.
This one is deliberately in between: enough features to be useful for a real business, with nothing loaded from a remote server and no personal data collected.
What it does
Why it matters
A pre-filled message is the single biggest advantage this has over a bare wa.me link. A visitor typing their own opener has to decide what to say, and some will not bother. Over a few weeks the difference shows up in your inbox: instead of twenty messages saying “hello”, you get twenty messages naming the page each person was on.
How it works
The plugin generates standard wa.me links, which is the mechanism WhatsApp itself documents. There is no API integration and no account to connect. You enter your number in international format — 15551234567, with no spaces, punctuation or plus sign, and the plugin strips those anyway before saving.
Routing rules are evaluated in a fixed order — page, then post, then category, then default — and the first match wins. If no rule matches it falls back to the default rule, and then to your primary number. Sales enquiries from the pricing page can go to one phone while support questions from the docs go to another.
Analytics are stored locally in your own database. Each click records three things: the page URL, the timestamp, and a mobile or desktop label. It does not store IP addresses, does not set cookies and does not call any external analytics service. That keeps the reporting useful while leaving very little for a privacy policy to have to explain.
Asset loading is scoped rather than global. Front-end assets load only on pages where the button can actually render, admin styles load only on the plugin's own screens, and the routing script loads only on the routing page.
Requirements and limits
- A WhatsApp number in international format
- Licensed GPLv2 or later
What it does not do
This is version 0.1.0 and the scope is an MVP. Three message variables are supported and no more. Routing covers pages, posts, categories and a default — not tags, custom taxonomies or custom post types.
There is no scheduling, so you cannot show the button only during business hours. There is no WhatsApp Business API integration, no shared team inbox and no conversation history: once the visitor taps through, the conversation lives in WhatsApp, not here.
Analytics count clicks on the button. They cannot tell you whether the conversation converted, because WhatsApp does not report that back.
Getting the setup right
Two settings decide whether this works or annoys people. The first is the delay. Zero delay means the button appears while the visitor is still orienting on the page, and it reads as an interruption. A few seconds means it appears once they have started reading, which is when a question is likely to have formed. Set it, then load your own pages on a phone and see how it feels — this is a judgement call, not a number to copy from a blog post.
The second is the message template. The default of an empty message wastes the single biggest advantage the plugin has. A pre-filled “Hi, I have a question about {page_title}” removes the friction of deciding what to say and, just as usefully, means the enquiry arrives already labelled.
Routing is worth configuring only once you have more than one destination. If everything goes to a single number, leave it on the primary and skip the rules. Where it earns its keep is a site with genuinely different enquiry types — a pricing page that should reach sales and a documentation section that should reach support. Set the default first, add specific rules second, and remember the first match wins.
Frequently asked questions
What number format should I use?
International format, for example 15551234567. Spaces, punctuation and plus signs are stripped automatically.
Which variables can I use?
{page_title}, {url} and {site_name}, replaced when the button renders.
How are routing rules evaluated?
Page, then post, then category, then default. The first match wins, with a fallback to your primary number.
What data does it store?
The page URL, the click time, and a mobile or desktop label. No IP addresses, no cookies, no personal data and no third-party services.
Does it slow the site down?
Front-end assets load only on pages where the button renders, and nothing is fetched from a remote host.
How is this different from Zignites Chat?
This is only the button. Zignites Chat is a full WooCommerce integration with order notifications, a chatbot widget and opt-out handling through Twilio or the WhatsApp Cloud API. If you just want a link customers can tap, this is the smaller option.
How do I get it?
It is free and available on request. It is not in the WordPress.org directory — contact us and we will send you a packaged build.
Related plugins
Zignites Chat
WhatsApp order notifications and a floating chat widget for WooCommerce. Works with Twilio or the WhatsApp Cloud API, using your own business number.
View WooCommerceZignites Chat Pro
Cart recovery, post-purchase follow-ups, bulk campaigns, analytics and A/B testing on top of the free Zignites Chat.
View UtilitiesCustom Accordion Slider
A lightweight accordion slider widget for Elementor. Responsive tabbed content with smooth transitions.
ViewInterested in WhatsApp Chat Button?
Tell us about your site and we will send you a build or quote the work.