Customer portal & your website

The customer portal is two things, not one embeddable page:

  • A public booking form — add the shortcode [pc_booking_request] to any page (e.g. “Book with us”) and link it from your menu. New and existing customers use it to request bookings.
  • Private customer links — each client gets a secure, no-login link to view their bookings and invoices, pay, and set a profile picture for each of their pets. These are included automatically in booking and invoice emails; to grab one by hand go to Clients, hover a client and click Portal preview.

Same WordPress site: put the shortcode on a page, link it, and you are done — portal and invoice pages already render on your domain using a clean, theme-free template.

A different or non-WordPress site (Wix, Squarespace, another WordPress): install this plugin on a subdomain (e.g. portal.yourbusiness.com) or a subfolder, then link to it from your main site’s menu. You can also embed the booking page in an <iframe> to keep customers on-site.

Matching your colours: set Settings → General → Theme colour to your brand colour and the portal’s headers, buttons and badges follow it. Invoices can use their own accent and logo under Finance → Invoice template. For fonts and finer styling, use Custom portal styling in the Client portal section. Clear your cache after changing colours.

Example

You add the booking form to a “Book with us” page, set the theme colour to your brand blue, and email each client their private link — your existing site now feeds straight into the portal.

FAQ

What does a customer see if their account link stops working?
From 2.498.0, the Get your account link screen — in your colours, saying what happened, with a box for their email address and a button to have the link sent again. It used to be the WordPress login form: a password box, shown to somebody who has never had a password, for an account that opens from a link. Most people stopped there and rang up instead. It is drawn on the portal page rather than sending them somewhere else, which matters for anyone who has installed the app: the app is fenced to the portal, and a link out of it drops them into a browser tab. Customers who do have a password get a quiet Sign in instead underneath.

Can a customer cancel a booking themselves?
Yes — from the Visits list in their account, and from the booking’s own page (the one they open from the link in a confirmation email). A booking you have not confirmed yet reads Withdraw this request; a confirmed one reads Cancel this booking. Either way it shows as Cancelled in your admin with “by the customer” and the date beside the status, the time is free again, and any package credit spent on it is handed back.

A customer asked to move a visit — can they still cancel it?
Yes, from 2.605.0. The line saying a new time has been requested stays, and the cancel button sits underneath it. Before that a pending reschedule replaced every button, so somebody who changed their mind entirely had no way to say so and the slot stayed held. They cannot ask for a second new time while the first is unanswered — that would leave you two requests and no way to know which to answer. Cancelling clears the request to move it, so it stops showing in your list as a decision still to make.

How do I stop customers cancelling at the last minute?
Two settings, both under Settings. A notice period in hours — inside it the button is replaced with a line telling them to contact you — and cancellations come to me as a request, which sends you the cancellation to approve instead of applying it. Four things are refused whatever you set: a visit already invoiced or paid, a walk under way, one already cancelled, and any booking with a deposit already paid — money that has arrived is a refund decision and that is yours.

How do customers log in?
They do not need to. Each customer uses their own private, secure link (sent in booking and invoice emails) — no password to remember. If you’d rather give them a password login, the same portal also accepts a WordPress customer account linked to their client record.

How does the loyalty card work?
You set how many completed visits earn a reward and what the reward is — a percentage or an amount off the next visit. Stamps are given as visits are completed, not when the invoice is paid: the customer has had the groom, and whether the money has cleared is between you and your bank. When the card fills, the customer is emailed a discount code automatically and you are emailed a copy, so nobody is surprised at the door. The card shows on the customer’s own account screen, and Pet Central → Loyalty shows you who is close — the ones marked one away are the conversation worth having.

Can I choose which treatments earn a loyalty stamp?
Yes — Pet Central → Loyalty, under Which treatments count. Tick nothing and every visit counts. Tick some and a visit earns its stamp if any of them is on it, wherever it sits in the basket: a groom added on to a nail trim counts exactly the same as a nail trim added on to a groom. It is still one stamp per visit however many treatments that visit carries — it is a card of visits, and paying three stamps for one appointment would let a card be filled in a fortnight.

Can a customer pass their reward on to a friend?
No. The code is tied to the account that earned it and is refused on anybody else’s, so a code shared in a Facebook group is worth nothing to a stranger. It can be used once. Without that, the first person to see the code spends it and the customer who earned it arrives to find it gone.

What if a visit is cancelled after it was marked done?
The stamp is taken back. A reward already issued is not — the customer has been told they have it, and taking it away again costs more in goodwill than the discount is worth. And if you shorten the card later, anyone already past the new line is paid out, keeping whatever visits they have over it.

Can I use it on a non-WordPress site?
Yes. Install the plugin on a subdomain or subfolder and link to it, or embed the booking form in an iframe.

How do I match my brand colour?
Set the Theme colour in Settings and the portal follows it. Invoices have their own accent and logo in the Invoice template. Add Custom portal styling for fonts and finer tweaks.

Can customers install it as an app?
Yes — the portal is an installable app (PWA). When a customer opens their portal on a phone they see an “Add to your phone” prompt; on iPhone they use Share → Add to Home Screen. It then opens full-screen with your logo and colour, has a bottom tab bar, and works from the home screen like a native app. See the “Customer app” help topic.

A customer says their app has started asking them to sign in.
From 2.497.0 this should not happen on its own. The installed app carries the customer’s private link inside it, and Android re-reads the app’s details roughly once a day from inside the app. If that read could not tell who the customer was, it used to be answered with a version that had no link in it — and Android took that as the app having moved, rebuilt it around the link-less address, and the customer lost their automatic sign-in without anything visible having happened. The site now declines to answer at all when it cannot tell who is asking, which leaves the installed app exactly as it was. If a customer is still asked to sign in, the ordinary causes apply: an iPhone that has cleared an unused app’s data, a new phone, or a cleared browser. Send them their account link again, or point them at Get your account link and they can request it themselves.

The installed app keeps signing customers out — why?
It shouldn’t any more. The installed app now carries the customer’s secure token in its own launch address, so it signs itself back in every time it opens — even if the phone has cleared the app’s cookies. Two things still help: (1) this applies to apps added to the home screen from 2.28.3 onward, so a customer affected before then should re-add it to their home screen (or just open their latest portal/invoice email link once); (2) on iPhone, if the app hasn’t been opened for about a week Apple can wipe its data entirely — opening a fresh emailed link re-signs them in. Customers who use a password login stay signed in as well.

Does the app show the real price when I add a treatment?
Yes, since 2.634.0. Each treatment on the “Change treatments” sheet is priced for the animal that booking is for, with the coat and size allowances included and spelled out underneath, and the length it will really take. Before that it showed price-list figures, which is a number you could read out to an owner and then not charge them.

Why is the price column briefly empty on that sheet?
Because it is fetching the figures for that particular animal. A list price would be there instantly and would be the wrong number, so it waits rather than showing one. If it cannot reach them at all it falls back to the list prices and the total underneath says — list prices so you know which you are looking at.

Is there an easier way to add a treatment?
Yes — Settings → New treatment, or the “Set one up step by step” button beside Add New on the treatments list. It asks in five short tabs and explains every setting as it goes. Only the name is needed; press Create treatment whenever you like and the rest keeps its defaults.

Does the wizard set things up differently from the normal screen?
No. It hands exactly the same fields to exactly the same saving routine, so a treatment made in the wizard is indistinguishable from one made on the edit screen. It is a friendlier way of asking, not a second way of saving.

I skipped a tab in the wizard. What happens?
Nothing bad. Every setting it did not get keeps its default — one animal per appointment, anyone on the team can do it, no size or breed rule, no deposit of its own, both allowances applied. The treatment opens straight afterwards on its own screen, where all of it can be changed.

A nail trim is being charged more for a big dog. Why?
Because it was set to price by the coat and the size, and until 2.632.0 every treatment was. A groom genuinely is more work on a big double-coated dog; a nail trim is the same quarter of an hour on any dog. Untick the two boxes under Does the animal change the price? on that treatment, or set the whole list at once under Settings → Coat & size pricing.

Did updating change any of my prices?
No. Every treatment that existed before 2.632.0 still applies both allowances exactly as it did. The switches start turned on, and only you can turn one off — that is a price cut, and an update does not get to make one for you.

What does the Coat & size pricing screen suggest, and how?
It looks at each treatment’s length and price: short and fixed-price usually does not scale, longer and dearer usually does. It is a rough rule and it says so — you know which of your own treatments are which. Nothing is saved until you press the button, and anything you have already set by hand is left alone rather than re-suggested at.

Does the careful-handling allowance follow these switches?
No, it always applies. A nervous dog is nervous whichever treatment it is having, and that allowance is mostly extra minutes rather than money, so a difficult dog’s nail trim still gets the time it needs.

What does the line under a price mean?
It is the allowances this animal earns, each with what it adds in money and how much longer it makes the visit — for example Double coat +£8.00, 18 min longer · 20kg +£7.60, 17 min longer. They add up to the price and the length shown beside them, so a customer can check the figure rather than take it on trust. Before 2.631.0 the same line named the multipliers instead, which said nothing about what they came to.

Can a customer see what they have chosen before the last step?
Yes, since 2.630.0. The running total pinned at the bottom is a button: pressing it opens the basket, listing every treatment with its price, the total, how long the visit will take, who it is for, when it is, any package credit and any deposit wanted up front. It closes on the backdrop, on Escape, or by itself if they take the last treatment off.

Can they remove a treatment from that basket?
No — it says what has been chosen; the cards behind it are still where it is changed. That is deliberate: the basket and the cards would otherwise be two places that could disagree about the same visit.

Is the basket the same figure as the final screen?
It is the same code. The sheet and the check-and-confirm step are filled by one function rather than two written separately, so they cannot come to different answers about a visit.

Can a customer book more than one treatment?
Yes, and this is the normal case — a dog in for a groom is the dog whose nails want doing. They tap as many cards as they like and see one running total — and can press that total to see the itemised basket without leaving the treatments screen. It becomes one booking, one slot long enough for all of it, and one bill. Every price they are shown is priced for their own animal, so the basket total is the figure on the booking.

Can a customer book again straight after booking?
Yes. After a request goes in they see the confirmation on its own — the booking screens are put away so there is nothing half-filled to be confused by — and a Book another visit button opens a fresh, empty booking underneath it.

Can a customer choose which groomer they want?
Where the time they picked suits more than one person, yes: an Anyone in particular? question appears with the free names, and Doesn’t matter as the default. It is a preference, not a booking — you still choose when you confirm, and their answer is shown to you at that moment. Where only one person is free the question is not asked, because it would not be a choice.

Where does the photo a customer adds to a pet actually go?
It becomes that pet’s profile picture, and only that — the picture on the pet’s card in their app and on the pet’s record in your admin. The button says Add profile photo for that reason. It used to say “Add photo”, which invited a photo without saying where it went, and the honest answer to that question is the thing somebody needs before they choose which photo to use.

Why does a customer get asked to move the photo around?
Because a phone photo is a tall rectangle and a profile picture is a square, and something has to decide which part of the animal survives that. Left to the browser it is the middle, which on a photo taken from standing height is the dog’s back. So choosing a picture now opens a square: drag to move it, pinch or use the slider to zoom, then Use photo. What is inside the square is what is saved.

Where does a customer see their reference number?
On their invoice — under their name and again in the payment details, which is where it is needed, because it is what a bank transfer has to quote. It used to head every screen of the app as well; a filing code above someone checking when their dog is booked in is noise, so it is gone from the app itself.

Do customers see how long a visit takes?
Yes — every visit shows its start and finish time, on the Visits list, on the booking itself and on the home screen. With several treatments on one booking that is the question they actually have: not when to drop off, but when to come back.

Where do customers see availability?
The portal has a “Check availability” screen: they pick the service type (only the ones you run — Groomer, Walker, Sitter and/or Trainer show up), see the next open days at a glance, tap a day for times, and tap a time to send a booking request.