WhatsApp booking page generator

Free · no signup

List your services with duration and price. Customers tap one and land in your WhatsApp with the service, duration and price already written.

Clear a service name to drop it from the page.
Aurora Nail Studio
Tue to Sat, 9am to 6pm
Tapping a service opens WhatsApp with the details written
Drop into any page
Enter your WhatsApp number and name a service, and the page appears here.
Next step

From tap to confirmed booking.

DMly takes it from there, offering real availability, holds the slot with a deposit and reminds them twice.

Three Questions, Three Columns

What do you do, how long does it take, and what does it cost. Every enquiry a service business gets is those three questions in some order, usually spread over four messages and a wait. A list that answers all three before anybody asks removes the whole exchange, and the WhatsApp booking page generator above builds exactly that: a name, your hours, and a row per service with a duration and a price on it.

Then it makes each row a link, so tapping one opens WhatsApp with the service, the duration and the price already written in the customer’s message.

What the WhatsApp Booking Page Generator Builds

One self-contained block of HTML. Your business name, your opening hours, the service list, and a line at the bottom explaining that tapping a service opens WhatsApp with the details written.

Every row is a plain link. There is no script tag anywhere in it, nothing loaded from anywhere, and nothing that depends on this page still existing. All the styling is written into the block and scoped to one class name, so your theme cannot repaint it and it cannot repaint your theme.

That matters because of where it ends up. This gets pasted into a page builder, and page builders have a habit of stripping or sandboxing anything with a script in it. A list of anchors has nothing to break.

The Fields

The left hand card is four settings and then as many service rows as you want.

  • Business name and opening hours. The two lines at the top of the page. The hours are free text, so write them the way you would say them rather than as a timetable.
  • Code and WhatsApp number. A dial code picker covering 249 countries and territories, opening on the United Kingdom, and the national number beside it.
  • Currency. Twenty of them, from pounds and dollars through to naira, rand, rupees and rupiah. It sets the symbol in front of every price.
  • Service rows. A name, a duration and a price each. Add a service adds another, and clearing a service name drops that row from the page. You can have up to twelve.

The panel opens on a worked example, a nail studio with three services, so there is a finished page on the right before you type anything. Type over it and it follows.

The Message the Customer Arrives With

This is the part doing the actual work, and it is worth reading before you change anything else.

Tapping a row opens WhatsApp with a message already in the compose box: a greeting with your business name, the service they picked, its duration and price, and then a question asking what times you have free.

Three things follow from that. You know which service before you have read a word the customer wrote. They have already seen the price, so the awkward part of the conversation happened on a web page rather than in a chat. And the message ends on a question you can answer with a list of times, which is the fastest possible version of this exchange.

The customer can edit that text before sending, and some will. What survives almost every time is the service name, which is the piece you actually needed.

Duration Is Text, Not a Number

The duration field takes whatever you type. The example page uses 45 min, 1 hr 30 and 30 min, and any of those forms is fine because nothing is calculated from it.

Write it the way you say it to a customer on the phone. An hour and a half reads better than 90 minutes for most trades, and 45 min reads better than 0:45 for all of them.

If a service genuinely has no fixed length, leave the duration out. The message the customer arrives with joins together whatever details exist, so a service with a price and no duration still reads as a proper sentence rather than as a gap.

How Many Services to List

Twelve is the ceiling. Five is usually the right answer.

A booking page is not a price list. It is the thing somebody scans on a phone while deciding whether to bother, and a list of twelve options is a decision they will put off. Put the services people actually book, in the order you would like them booked, and leave the unusual ones to be asked about.

Order is a real lever here and it costs nothing. The first row gets read the most. If one of your services is more profitable or fills the quiet hours, that is the row to put at the top.

On prices, put a real number wherever you can. A page full of prices with one gap in it draws attention to the gap. If a service genuinely varies, name the starting point and let the conversation do the rest.

Where the Block Goes

Anywhere your site accepts raw HTML. A custom HTML block, a code widget, a page section that takes markup. The kicker above the code box says drop into any page, and that is genuinely the instruction.

The block is about 420 pixels wide at most and centres itself, so it sits happily in a column, in a sidebar, or as the whole content of a short page. It does not need a full width section and it will not fight one.

What it does need is a field that hands your markup through untouched. If the list arrives as plain blue links stacked down the page with no card around them, the styles were stripped on the way in. Find a raw HTML field rather than the visual editor, and check the published page rather than the preview.

Until you have entered a number and named at least one service, the code box holds a sentence instead of markup. That is deliberate: a booking page whose rows opened a chat with nobody would look finished and fail only once it was live.

It Produces a Request, Not a Booking

This is the honest centre of the page and it is better said plainly than discovered.

Nothing is reserved when somebody taps a row. No time is held, no availability is checked, and two people can tap the same service four seconds apart and both arrive expecting Thursday at two. What you have built is a very good enquiry form that happens to look like a booking page.

For a lot of businesses that is exactly right, and it is better than the alternative. A one-person business with an irregular diary does not want a calendar making promises on its behalf, and answering with three real times you know you have is a more reliable exchange than a slot picker that is out of date by Tuesday.

What it does mean is that somebody has to reply, and reply reasonably quickly. The page raises the number of enquiries and it does nothing at all about answering them.

What the WhatsApp Booking Page Generator Cannot Do

Everything a booking system does, this does not do. Worth being specific about which parts.

  • No availability. It has no calendar, no diary and no idea when you are free.
  • No confirmations or reminders. Nothing is scheduled, so nothing gets sent later.
  • No payments. A price on the page is a number the customer has read, not money taken.
  • No cancellations or changes. Both happen in the chat like everything else.
  • No record. Nothing is stored anywhere, including by you: the only trace of an enquiry is the WhatsApp message.
  • No tracking. You cannot see how many people tapped a row, which service they looked at, or who left without tapping.
  • No check on the number. Whatever digits you give it become the link, so tap your own page once before you publish it.

The whole panel is built on the server before any script runs, which is why the preview and the code are already finished when the page appears.

The Fifteen Minute Version of a Booking System

Where this earns its place is the gap between having nothing and having a proper system.

A business with no booking page at all is fielding the three questions over and over, in DMs, in comments and on the phone, and every one of those exchanges is four messages that could have been one. Fifteen minutes with this panel removes most of that, at no cost, with no account and nothing to maintain.

It is also a genuinely useful thing to have even once you have a real system, because a list of services with prices on it is the page people want to see before they commit to anything. Put it in the link in your bio, on your Google profile, at the bottom of your quotes. The link in bio generator builds the page that holds it all together.

And before you publish a price list, be sure about the policy behind it. The cancellation policy generator writes the wording for your trade, which is the thing you will wish you had the first time somebody books three services and arrives for none.

What Happens After the Tap

The tap is the easy part. Everything after it is a person, on a phone, answering the same message they answered yesterday.

That is where this stops being free labour saved and starts being work created. With DMly the conversation the page starts can be answered with real times from your own calendar, and the appointment that comes out of it gets a reminder before it, which is the difference between an enquiry and a booking that happens.

If you are wondering whether that is worth doing, price the problem first. The no-show cost calculator puts a number on the appointments you already have and lose, which is usually a bigger figure than the one you would gain from a better booking page.

Frequently asked

An empty business name falls back to the example wording, on the preview and inside every link's message. The opening hours line falls back the same way on the preview and in the pasted page. A booking page headed by nothing at all would be pasted live and look wrong only to the customer, so that field always carries a name. Type over the example rather than emptying the field.

Yes. A price that is a plain number gets the currency symbol in front of it and commas in the thousands, so 1200 becomes 1,200 with the symbol in front and 35.5 becomes 35.50. Anything else prints exactly as you typed it, so Free, from 30 and POA all survive intact. One consequence: a price you typed a symbol into yourself counts as text, so it will not follow the currency picker when you change it.

Clearing the name is the whole of the delete, and the cleared row stays in the panel, so the list on the left only ever grows while the page on the right gets shorter. There is no drag to reorder either, so to change the order you retype each row's name, duration and price in the order you want them. Add a service also disappears for good once you reach twelve rows, because clearing a name does not hand the slot back.

The picker is served on the United Kingdom, then swapped to whatever country your browser's own time zone reports, a moment after the page appears. Nothing leaves the browser to work that out, and the language setting is used when the time zone says nothing useful. Pick a code yourself and that pick is remembered for next time. Whatever you type beside it is reduced to digits with any leading zero dropped, so 07700 900123 on +44 becomes 447700900123.

Because every value sits in the row twice: once as the text on the page, and once inside the wa.me link behind it, encoded into the message the customer arrives with. Editing the visible price, duration or service name leaves that link untouched, so the page and the message disagree. Your business name is written into every link as well. Change it in the panel above, copy the code again, and replace the whole block.

Scroll to Top