WhatsApp website widget
A WhatsApp button that knows which ad sent the chat.
Visitors tap, WhatsApp opens with the message ready, and the chat reaches your inbox already joined to the ad click, campaign, landing page and journey that brought them.
100%of widget chats are sent tagged with the visitor, so every WhatsApp lead from your site carries its source.
How a chat gets its source
The same lead, before and after the id is read.
When a visitor taps Start chat, the widget stamps their visitor id at the start of the message and sends their cookies and click ids to your workspace under that id. When the message arrives, your inbox reads the id and joins the two.
A visitor
WhatsApp number on file
First message
[IMP: IMP7K2QX9M] Hi, is the ghee in stock?
- Visitor id
- Not knownIMP7K2QX9M
- Source
- UnknownMeta ad
- Campaign
- Not knownDiwali ghee, prospecting
- UTMs
- Not knownfacebook, paid_social
- Landing page
- Not known/products/a2-cow-ghee
- Click id
- Not knownfbclid IwAR2x…
- Journey
- Not knownMeta ad, product page, Start chat
Illustrative values. The fields are the ones a lead carries in the inbox.
Convert more chats
The first message is already written, and it names the product.
An icon sits in the corner until it is tapped; then a small card opens with your brand, whether you are online, a greeting and Start chat. Quick replies each carry their own message, and a message can name the product the visitor is looking at.
- Quick replies like Track my order or Bulk enquiry, each with its own text
- Product name, page title and page address filled in from the page
- Opens the WhatsApp app directly inside Instagram and Facebook browsers
- Optional pulse, a 1 badge, or opening by itself after a delay or scroll
The product name comes from the page. Inside Instagram and Facebook it opens the WhatsApp app itself.
Route to the right person
Sales, support and wholesale, each on its own number.
List several departments, each with its own WhatsApp number, name, photo and first message. Quick replies can go to a department. Business hours run in your workspace timezone, and outside them the card says you are away and still takes the message.
- Several departments, each with its own number
- Business hours with an away status and away greeting
- Show on all pages, only on some, or hide on some, such as checkout
- A different greeting on the pages you choose
Business hours
- Mon to Fri09:00 to 18:00
- Saturday10:00 to 14:00
- SundayClosed
Outside hours: We are away, leave a message
Page rules
Hide on pages containing /checkout
On /wholesale, greet with the trade price list.
Stay on brand
Your colour, your words, your corner.
Every word on the card can be changed, so it speaks your customers’ language. Pick the colour, a light or dark card, the size, the corner, and how high it sits on desktop and on phones. It draws in its own isolated layer, so your theme’s styles cannot break it, and it never moves your page.
- Colour, light or dark card, size and either corner
- A text label that turns the round button into a pill
- Stays hidden where AiSensy, WATI, Interakt, Gallabox, Elfsight or Tidio already run, and tags their wa.me links instead
- Keyboard and screen reader friendly, and respects reduced motion
Your colour, light or dark
A label beside the button
Either corner, raised clear of a sticky add-to-cart bar on phones.
Already have a WhatsApp widget?
Ours stays hidden and adds the visitor id to that widget's wa.me links instead.
Measure
Opens, chats started, and chats that arrived carrying the id.
The settings page counts card opens, chats started and chats that reached your inbox with a visitor id, for 7 and 30 days, with the department and quick reply each chat started from. Both widget events land in your event stream.
- Opens, chats started and chats arrived, side by side
- A breakdown by department and quick reply
- Started a WhatsApp chat as a segment condition, for audiences
- Sent to Meta as a Contact event only if you switch it on
Last 30 days
Card opens
1,240
Chats started
312
Arrived with the id
268
The gap between started and arrived: chats opened in WhatsApp and never sent, or sent with the id deleted.
| Department | Quick reply | Started |
|---|---|---|
| Sales | Is this in stock? | 164 |
| Support | Track my order | 103 |
| Wholesale | Bulk enquiry | 45 |
whatsapp_chat_started
Segment: Started a WhatsApp chat
Meta: Contact
Off until you switch it on
Illustrative numbers.
Compared with a typical chat button
Most WhatsApp buttons open a chat. This one also says which ad started it.
The link a WhatsApp button opens carries two things: your number and the text. Nothing in it says where the person came from, so the chat reaches you without its source. This widget puts the visitor's id at the start of the text, and your inbox reads it back.
| Feature | A typical chat button | Cookiebees widget |
|---|---|---|
| Opens WhatsApp with a message ready | Yes | Yes |
| Departments, quick replies, business hours | Varies by tool | Yes |
| The chat carries the visitor’s id | No | Every chat started from it |
| The lead shows the ad, campaign and landing page | A number and a first message | Yes |
| Already have another WhatsApp widget | Varies by tool | Steps aside, tags that widget’s wa.me links |
| Chats as events for segments and Meta | Varies by tool | Segments now, Meta Contact when you switch it on |
Running AiSensy, WATI, Interakt, Gallabox, Elfsight or Tidio? Keep it. The widget stays out of its way and tags the wa.me links it opens, so those chats are joined to the visit too. A widget that opens WhatsApp from its own script, not a link, cannot be tagged.
Install
One line, then never touch your theme again.
Everything else lives in your workspace, so a new number or a new greeting is a Save, not a developer.
<script src="https://app.cookiebees.io/form/wa-widget.js?key=YOUR_KEY" async></script>1. Add your number and save
Settings, WhatsApp, Website widget. Your connected WhatsApp number is offered first. A number WhatsApp would refuse is refused here, in plain words.
2. Paste one line
Before </body> on every page, or as a Custom HTML tag on All Pages in Google Tag Manager. The line carries only your key.
3. Change it from Settings
Numbers, words, colours and rules are saved in your workspace and reach your site within a minute. The live preview is the real widget with your unsaved settings.
4. Check my site
One button confirms the line is on your page with the right key, and flags an old snippet that still has a number baked into it.
Where the chat goes next
Attribution
Every order credited to the ad that earned it, with the receipt and a match score.
OpenAudiences
Segments from behaviour the store records, sized against what Meta can match before they sync.
OpenSignals back
Enriched conversions to Meta, Google and GA4, 44 parameters, every payload open before it leaves.
OpenWhatsApp & email
An inbox, templates, broadcasts, flows and sequences that know who they are talking to.
OpenQuestions
What people ask before they paste the line.
Every chat started from the widget leaves with the visitor’s id at the start of its message, and when it reaches your Cookiebees inbox the id joins the chat to that visit: its click ids, UTMs, landing page and journey. The settings page counts how many chats arrived carrying the id, so you can check it against chats started. Chats that start somewhere else, such as a saved number or a QR code, do not carry it.
Put it on your own site
Every chat,with the ad that started it.
Start free, add your number, paste one line. The first chat from the widget arrives with its source. 30-day free trial, no card required.