meetergo
A website contact section on the left with a WhatsApp button, and the same conversation continuing in a WhatsApp chat window on the right

WhatsApp for Websites: Link, Button or Managed Inbox

|14 min read
Dominik Rapacki
Dominik Rapacki
Dominik Rapacki is the CEO and founder of meetergo.com, driving GDPR-compliant scheduling innovation. Featured in leading podcasts, he’s a recognized expert in SaaS, sales, and digital transformation
The chat never happens on your page. Link, button or widget, every method hands the visitor off to the WhatsApp app or to WhatsApp Web. Nothing is embedded in the way the word suggests.
A plain link covers most sites. The wa.me URL with a pre-filled message does the same job as most paid widgets, at no cost and with nothing loaded on the page.
The cheap billing rule is attached to ads, not to your website. Meta's free entry point window opens from a Click-to-WhatsApp ad in the mobile app. A link on your own homepage does not qualify for it.
Inbound is free, answering at volume is not. Messages from a visitor to you are never charged, and since 1 October 2026 your service replies are charged once you pass 1,000 per number per month.

Two things about putting WhatsApp on a website are true at once. The entry point is the cheapest channel you can install: one anchor tag, no account with anyone, no script. The answering is the part that gets billed, and the billing rule most guides quote does not apply to websites at all. Meta's free entry point window, the one that makes up to seven days of messages free, opens only when someone taps a Click-to-WhatsApp ad from the Android or iOS app. A visitor who clicks a link on your homepage starts an ordinary conversation on an ordinary rate card (WhatsApp Business Platform pricing, checked 2026-11-06).

That detail sets the order of work. Install the link first, because it is free and it already works. Decide on a widget second, on evidence rather than on the widget's own sales page. Move to a managed number last, once a specific flow has a number next to it that beats its own message fees.

What "WhatsApp for websites" actually means

Most searchers want a WhatsApp chat window sitting inside the page, the way a live chat tool works. That one does not exist, and not for want of a plugin. WhatsApp Web sends a frame-ancestors content security policy that permits framing only from WhatsApp's own domains (checked 2026-11-06), so a browser refuses to render web.whatsapp.com in an iframe on your domain. Everything marketed as a WhatsApp embed is either a styled link or a small panel that collects a message and then opens WhatsApp with it.

So the real choice is between the entry point on your page and the inbox at the other end. Those are two separate decisions, and conflating them is how teams end up paying for a platform to solve a problem a link already solved.

The three routes, side by side

RouteClick-to-chat link or button
What the visitor getsTaps once, WhatsApp opens with your message pre-typed
What you needA number with WhatsApp on it, and one anchor tag
What it costsNothing
RouteHosted chat widget
What the visitor getsA floating bubble, sometimes with agent names or opening hours
What you needA third-party script or CMS plugin
What it costsFree to mid-range, plus page weight and a consent entry
RouteManaged number on the Business Platform
What the visitor getsSame entry point, but the reply comes from a team inbox
What you needA Meta-registered WhatsApp Business number and a provider
What it costsProvider subscription plus Meta's per-message fees

The routes stack rather than compete. Route one is a prerequisite for the other two, because the link is the thing a widget wraps and the thing a managed inbox receives.

Step 1: Write the number the way WhatsApp reads it

Full international format, no decoration: country code first, no plus sign, no leading zero, no spaces, dashes or brackets. A German mobile written locally as 0151 1234 5678 becomes 4915112345678. A US number written as (415) 555-0132 becomes 14155550132. Get this wrong and the link still resolves, WhatsApp still opens, and the chat is simply addressed to nobody, which reads as a broken site to the visitor and as nothing at all in your analytics.

Step 2: Build the URL

The short form is https://wa.me/<number>. To pre-fill the first message, append a URL-encoded text parameter:

https://wa.me/4915112345678?text=Hi%2C%20I%27d%20like%20to%20book%20an%20appointment

That URL is a redirect rather than a destination. A request to it returns a 302 to https://api.whatsapp.com/send/?phone=4915112345678&text=...&type=phone_number&app_absent=0 (checked 2026-11-06), so you can point straight at api.whatsapp.com/send and skip the hop. What to avoid in a web page is the whatsapp:// scheme, which webviews refuse because they only follow http, https and file. Encode the text properly: spaces become %20, apostrophes %27, and one unencoded ampersand truncates everything after it.

Step 3: Put it where the decision happens

The markup is a link, nothing more:

<a href="https://wa.me/4915112345678?text=Hi%2C%20I%27d%20like%20to%20book%20an%20appointment"
   target="_blank" rel="noopener">Chat on WhatsApp</a>

Placement matters more than styling. A floating bubble in the corner is a catch-all, not a call to action. Clicks come from next to the thing the visitor is hesitating over: beside a price, under a product variant that needs explaining, on the contact page, and where a form asks for more than someone will type. Give each placement its own pre-filled message. A chat that opens with "Hi, about the Tuesday 18:00 class" is worth more to whoever answers than five identical "Hi" messages.

If you would rather not hand-build the URL, our WhatsApp link and QR code generator produces the link, a scannable code and a pre-styled button in one pass, entirely in the browser, so the number is turned into a link on your device rather than sent to a server.

The identical URL encodes into a QR code, which is where this entry point earns its second life: shop window, menu, invoice, van door, business card. Scanning it opens the same chat with the same pre-filled text. When the thing you actually want from a walk-past is a slot rather than a conversation, QR code appointment booking does the same trick straight into a calendar.

What a widget adds, and what it takes

A hosted widget buys three things a bare link does not have: a presence that does not depend on scrolling to the footer, display rules for pages and hours, and click tracking out of the box. For a site where WhatsApp is the primary contact method that is a fair trade. Three things come attached.

The first cost is page weight in the critical path. In a thread on the Joinchat support forum about render-blocking CSS, a WooCommerce site owner reported Lighthouse flagging the plugin's stylesheet as a roughly 150 ms render-blocking resource on product pages. The two replies are more instructive than the complaint: the maintainers had shipped non-blocking loading once and reverted it after third-party optimisers stripped the stylesheets, then lost the delayed-loading path again when WordPress 6.9 began relocating styles into the header on classic themes. A chat bubble is not a heavy feature, but it sits in a dependency chain with your theme, your optimiser and your CMS version, and that is where the milliseconds come from.

The second cost is measurement you do not own. Another thread on the same forum about a GA4 event tracks a generate_lead event that stopped firing after an update while every other event kept working. Five replies in, the cause was a second plugin renaming the Google data layer, so the chat plugin could no longer find it. When a widget reports your conversions, an unrelated update elsewhere in the stack can take that number to zero with no visible symptom on the page. A click event on your own anchor tag has a shorter failure chain.

The third cost is consent. A plain anchor loads nothing and stores nothing until someone clicks it, which keeps it out of your cookie banner's dependency list. A hosted widget pulls a third-party script and usually writes to local storage, so under EU rules it belongs behind consent like any other third-party embed, and it should not render before that consent exists. Worth checking where the assets come from too: a support thread about a WhatsApp logo loading from Wikimedia was opened as a data protection concern and answered, in a single reply, by the maintainer pointing out that the external URL sat in the site's own theme CSS rather than in the plugin. An audit that stops at the plugin list misses that.

Skip this section if your site has one number and one person answering it. The link plus the free WhatsApp Business app on that phone is the whole solution, and a widget adds a dependency without adding an answer.

When a managed WhatsApp number earns its fees

The moment two people need the same number, a phone stops working as an inbox. That, not message volume, is the trigger for moving to the WhatsApp Business Platform. The cost model is worth reading first, because it changed twice in the last eighteen months. Figures below are from the Meta pricing documentation linked above, checked 2026-11-06.

  • Billing has been per message, not per conversation, since 1 July 2025. The conversation-based model is deprecated.
  • You are charged on delivery only, and messages from a WhatsApp user to a business are never charged. Your website traffic costs nothing on the way in.
  • A visitor's message opens a 24-hour customer service window. Inside it you can reply freely in form; outside it you need an approved template.
  • Service replies are free for the first 1,000 delivered per business phone number per month, then charged from the 1,001st, with no roll-over.
  • On 1 October 2026 Meta resumed charging for service messages and for utility templates sent inside an open service window. Both had been free since late 2024 and mid-2025, so any budget built on that assumption is now wrong.
  • Rate changes land only on 1 January, 1 April, 1 July and 1 October, across 47 markets on the current rate card. That cadence is the one genuinely useful thing on the pricing page: you can plan against it.

Then the asymmetry worth planning around. The free entry point window, up to seven days of free messages, is triggered by a Click-to-WhatsApp ad opened in the Android or iOS app. Desktop and web are unsupported, and a link on your own site does not open it. Paid traffic into WhatsApp is cheaper to answer than your own organic traffic, which is a strange incentive and a real one.

The data side matters as much as the fees. Per Meta's data privacy documentation (checked 2026-11-06), Cloud API processes messages on servers in Meta data centres, with a Local Storage option to hold message data in another designated country. Messages carry a maximum 30-day retention, and the identifiers used as message sources and destinations are deleted within 30 days of a message's last status update. Meta describes itself as a processor acting on the business's instruction, which leaves the controller duties with you: a processing agreement, a privacy-notice entry, a documented position on the transfer. Cloud API also decrypts the message before forwarding it to the business and manages the keys on the business's behalf, so the end-to-end encryption people associate with WhatsApp does not describe the business leg of the trip.

None of that makes the channel unusable. It does mean the entry point is yours and the transport is not, and your documentation has to say so.

Where meetergo fits

The free generator above covers route one with no account, and for a solo business that is where this should stop. Route three is what meetergo's WhatsApp Business app is for: the number connects to a browser inbox the whole team works from, chats are assigned so two people do not answer the same enquiry, and the contact's record sits beside the thread in the built-in CRM rather than in a second system. Booking links and form links send with one click, which is where a website chat turns into a confirmed slot instead of a thread that needs chasing, and routing rules from routing forms apply to chat-originated bookings the same way they apply to web ones.

The AI agent answers from your own company knowledge, checks real availability, books inside the chat, and hands over to a person with the full thread attached. It runs on European models, Mistral in France and Melious in Germany, hosted in the EU with no US cloud in the path and zero data retention at the providers. That posture is documented on our security page.

The billing unit is the number, not the seat: €39 per WhatsApp number per month, with no cap on how many team members work it and no setup fee. Extra numbers for separate locations or service lines are billed one by one (checked 2026-11-06). The integration sits on the Premium plan; plan detail is on the pricing page.

Two honest limits. Meta's per-message fees apply on top of the subscription exactly as described above, because this is a Business Platform product and no provider opts you out of Meta's rate card. And if what your visitors want is a time slot rather than a conversation, chat is the slower path: adding a booking button to your website or embedding the booking calendar gets there in fewer steps. Chat wins when the question has to be answered before anyone is willing to pick a time.

AI-scheduled, human-booked

Turn website chats into booked appointments.

Shared WhatsApp inboxAI agent books in-chat€39 per number, unlimited seats
Connect WhatsApp free

Five mistakes that cost you the chat

Check these before you ship the button

0/5 completed

The expensive one is the last. Teams size the channel assuming replies are free, then meet the rate card in a month when traffic was good, which is the worst month to meet it.

FAQ

Can I put an actual WhatsApp chat window inside my website?

No. WhatsApp Web restricts framing to WhatsApp's own domains through a content security policy, so a browser refuses to render it in an iframe on your site. Products advertised as WhatsApp embeds collect a message on your page and then open WhatsApp with it pre-filled.

No. The link works with any number that has WhatsApp on it, personal or business. A Business account becomes necessary for a catalogue, a verified profile, greeting and away messages, or a team inbox, and a Meta-registered Business number is required for the Business Platform.

The link is. Creating the URL costs nothing, there is no account to open with anyone, and incoming messages are never billed by Meta. Costs start when you reply through the Business Platform rather than from a phone, and then they are per delivered message.

Yes. It opens the WhatsApp desktop app if installed, otherwise WhatsApp Web, where the visitor needs a linked session. Desktop conversion is therefore lower than mobile, so desktop placements are worth pairing with an email address or a booking link.

How do I track clicks without a widget?

Attach your own handler to the anchor and send one event. The destination is an external domain, so it registers as an outbound click and no plugin has to report it for you. One event per placement, named after the placement, tells you which position on the page is doing the work.

Is a WhatsApp number on a website GDPR-compliant?

The entry point is unremarkable; the transport needs documenting. Messages pass through Meta infrastructure, Meta positions itself as a processor acting on your instruction, and the controller duties stay with you. In practice: a processing agreement in place, WhatsApp named in your privacy notice, a position on the third-country transfer, and any hosted widget behind consent. meetergo itself is hosted in the EU, and the messaging leg remains Meta's.

What to do this week

Build one link with a pre-filled message, put it in three places rather than one, and give each placement its own text and its own click event. That is under an hour, it costs nothing, and two weeks of click data will tell you more than any vendor comparison. If more than one person is replying, price the move properly: expected monthly reply volume against the rate card for your main market, remembering the first 1,000 service messages per number and that website traffic never earns the ad-only free window. Teams who live in chat all day, customer support teams most of all, usually find the answer flips the moment two people need the same number. For everyone else, the link was the whole answer.

See meetergo more often on Google

One click marks meetergo as a preferred source. Our articles then show up more often in your search results, in AI Mode and in AI Overviews.

Make us preferred on Google
GDPR-compliant. Hosted on EU servers.

Replace five tools with one. Add only the apps you need.

Start with scheduling. Turn on forms, video, CRM and AI notes only when they fit your workflow.

No credit card required. Cancel anytime.