Appointments

One scheduling engine that fits your trade. Whether you run a dental practice, a plumbing firm, a salon, a tutoring service, or a haulage company, you set it up in your own words and it works the way you already work.

Start here

The fastest way in is a template. Go to Appointments → Services → Start from a template, pick your industry, then the closest match to your business.

A template sets up your services, your statuses, any checklists, and the words the product uses. Everything it creates is yours. Rename it, change it, delete it. If nothing matches, choose New service instead and build exactly what you need.

Nothing is locked. There is no "dentist mode" or "plumber mode" underneath - just settings you can change at any time.

Your services

A service is anything someone can book: a consultation, a callout, a class, an inspection. For each one you set:

Templates also add the questions a trade usually asks at booking, such as a vehicle registration or an animal's name. A developer can set your own questions through the API.

Team, rooms, and hours

Add everything a booking needs on Team and resources: people, rooms, vehicles, equipment. Give each one its working hours, and add holidays or time off as exceptions.

The type list is yours to extend. If none of the built-in types fit, type your own in the Type box and pick "Add" - a chair, a studio, a kennel, a pitch. Your services can then require it in the same way they require a team member.

Times you offer come from these hours minus whatever is already booked, so you never have to keep two calendars in step. Daylight saving is handled for you: 9am stays 9am on both sides of a clock change.

  1. Go to Appointments → Booking links → New link.
  2. Give it a Name people will recognise. The web address is made from the name, and renaming it later does not change a link you have already shared.
  3. Under What can be booked, choose Any of our services or One specific service, then click Create.
  4. Copy the link from its card and share it anywhere - your email signature, a text message, social media, a QR code.

If something is missing, such as nobody with working hours who can deliver the service, the link editor tells you what to fix before you share it. Turn off on a link stops it taking bookings but keeps the same address, so you can turn it back on later.

Anyone with the link can pick a time and book. They do not need an account, and neither do you need to be online. They get a confirmation with an add-to-calendar button and a link to reschedule or cancel themselves.

Taking payment

You can charge for a booking, and the money goes straight into your own Stripe account. Set this per booking link under Appointments → Booking links → New link → Payment:

The amount comes from the price on each service, so someone booking a follow-up pays the follow-up price. Set prices under Appointments → Services.

Payment is verified by Stripe on our servers, never in the customer's browser, so a booking cannot be marked paid unless the money actually cleared.

The first time you switch payment on, we will offer to set up Stripe for you. That installs the Payments service and takes you to Stripe to connect your account, then brings you back to finish the link. Until Stripe is connected you cannot create a paid link, because anyone using it would hit an error at the moment they tried to book.

Put it on your website

The booking form can sit inside a page of your own website. It needs a public key and the address of one of your booking links.

  1. Go to Appointments → Developer and open Embed the widget.
  2. Under Public widget keys, type your website address as the Allowed origin (for example https://www.example.com) and click Generate key. Copy the key from the Save this key now window.
  3. Paste this where the booking form should appear, with your key and the last part of your booking link (the part after /book/):
<script src="https://app.softsolz.uk/softsolz.js"
  data-public-key="pk_live_your_key"
  data-service-id="appointments"
  data-booking-slug="your-booking-link"></script>

The booking form appears where you put the snippet. If you use the SoftSolz AI Website Builder, just connect Appointments from the Integrations tab and it places the booking page for you.

Working the diary

The calendar has day, week, month, agenda, and a side-by-side team view. The board view groups everything by status so you can see what is waiting on what.

Open any booking to see its full history, add notes, work through an on-site checklist with photos, capture a signature, and move it to the next status. Statuses are yours to define - a garage might run Booked, In bay, Awaiting parts, Ready, Collected.

Reminders and replies

Email confirmations and reminders go out from your own email address, never from SoftSolz, so connect it once under Marketplace → Email sending (see Email sending). Until you do, bookings still arrive as normal but no emails are sent to your customers. To send by SMS or WhatsApp, or to call customers from your business number, add your own provider account under Marketplace → Messaging. For WhatsApp you can Continue with Facebook and have the details filled in for you, or enter them by hand. Text messages and calls go through Twilio, Telnyx or Plivo; WhatsApp goes through Meta, whose WhatsApp Business Platform is the only route WhatsApp itself supports for this. Appointments → Settings → Messaging and calling shows which provider sends your texts, WhatsApp messages and calls.

You use your own provider account, so messages come from your number and you stay in control of what you spend. We check your credentials before saving them, then load your numbers so you can pick which one to send from.

Paste the address from the Replies tab of the messaging setup into your provider, and customers can reply YES to confirm or NO to cancel (Y, C and OK also confirm; N, X and CANCEL also cancel). Their reply updates their next booking and is saved on the booking's history.

Campaigns and the shared inbox

Sending one message to a whole list, contact books, approved WhatsApp templates and the shared inbox where every reply lands all live in Outreach. Install Outreach from Marketplace to use them. It sends from the same number you connected for reminders, so there is nothing to set up twice.

Every text and WhatsApp message counts against a monthly allowance that comes with your plan: 100 on Free, 3,000 on Basic, 20,000 on Growth, and 50,000 on Business. Text and WhatsApp reminders, Outreach campaigns and inbox replies all draw from the same pool; email reminders do not. The allowance resets at the start of each billing period, and you can see what is left on the WhatsApp and SMS messages meter under Manage subscriptions → Usage. Your provider bills you separately for the messages themselves.

Answering common questions automatically

If you have Knowledge Hub installed, open Appointments → Settings → Auto reply (the same setting as Outreach → Settings → Auto reply) and pick one knowledge collection to answer from. Anything it is not confident about, anything it cannot find an answer for, and anything containing a word you list (such as refund or complaint) goes to your team instead of being guessed at. It also stands down as soon as one of your team replies, whether or not they took ownership of the conversation. To silence it for one person without switching it off for everyone, use the auto reply switch on that conversation in the Outreach inbox.

Make it speak your language

Under Settings → Your words, rename the four things the product talks about. A vet sees Patient and Animal. A haulier sees Job and Vehicle. A school sees Student and Tutor. Change them once and the whole product follows.

Reports

See how the diary is performing over any period: how much was booked, completion and cancellation rates, no-shows, revenue, how busy each person was, and how many customers came back.

No-show risk is worked out from real attendance history, not a guess, so a customer badge only appears once there is enough history to mean something.

Test it step by step

Follow these steps once from start to finish to prove Appointments works for your workspace. You need nothing outside SoftSolz except an email inbox you can check.

  1. Get access. You need the Super Admin or Admin role, or a custom role that includes the Appointments permissions (Members & access → Roles).
  2. Pick where to test. To try things without touching live data, open the workspace menu and choose Switch to Sandbox mode. The sandbox has its own diary, booking links and keys.
  3. Install Appointments. Open Marketplace, find Appointments and click Install. Appointments now appears in the sidebar.
  4. Connect your email. So the booking confirmation reaches the customer, connect a sending address under Marketplace → Email sending (see Email sending). Without it the booking still works, but no email goes out.
  5. Add yourself to the team. Go to Appointments → Team and resources and click Add. Type your name, leave the type as Team member and click Save. Then choose Working hours on your row, set hours for the next few days and click Save hours.
  6. Create a service. Go to Appointments → Services → New service. Name it "Test call", set Length (minutes) to 30 and click Save. Leave Who can deliver it unticked so anyone with hours can take it.
  7. Make a booking link. Go to Appointments → Booking links → New link, name it "Test booking", choose Any of our services, leave Payment on No payment and click Create. The link's card shows Live and its web address, which ends in /book/test-booking.
  8. Book yourself. Open the link in a private browser window, pick "Test call" and a time, enter your name and email and click Confirm booking. You see You are booked in. Back in SoftSolz the booking is on Appointments → Calendar at that time, and the bell shows New appointment booked. If your email is connected, the confirmation arrives with a link to reschedule or cancel.
  9. Make a key for the Widget Tester. Go to Appointments → Developer, open Embed the widget, enter https://developer.softsolz.uk as the Allowed origin and click Generate key. Copy the key from the Save this key now window.
  10. Try the booking form in the Widget Tester. Open developer.softsolz.uk/widget-tester and choose Appointments. In the Embed snippet box, replace pk_live_REPLACE_WITH_YOUR_KEY with your key and REPLACE_WITH_BOOKING_SLUG with test-booking, then click Load widget. The booking form appears on the example page. Book a second time: you see You are booked in with a reference, and the booking appears on the Calendar.
  11. Put it on your own site. On the same Developer page, generate a second key with your own website address as the allowed origin (www and no www count as different addresses). Paste the snippet from Put it on your website into a page, publish it and make one booking.
  12. Tidy up. Cancel the test bookings, turn off or delete the test link, and revoke any key you no longer need.

For developers

In the sandbox, open Appointments → Developer → Use the API, click New API key and tick View appointments and availability. Sandbox keys start with sk_test_. Then list your booking links from your server:

curl https://app.softsolz.uk/api/v1/services/appointments/booking-links \
  -H "Authorization: Bearer sk_test_your_key"

A 200 reply lists each link with its slug, which is the value for data-booking-slug. A 401 api_key_invalid means the key is wrong or revoked, and 403 missing_scope means it lacks the scope above. See the API Reference and the Appointments API guide for booking, availability and every other endpoint.

If something goes wrong

You seeWhat it means
Online booking is not available for this yet. Please get in touch directly. (booking page) or No times free that week. (widget) Nobody who can deliver the service has working hours in that week, or your booking rules (shortest notice, how far ahead) rule them out. Set working hours on Team and resources and check Settings → Booking rules.
This booking page is not available right now. The link is turned off or deleted, the address is wrong, or Appointments is not active for the workspace. Check the link shows Live on Booking links.
Invalid embed key or origin not allowed. (inside the widget) The page address is not on the key's allowed origins, or the key was revoked. Generate a key for the exact address the page runs on, starting https:// with no path. A sandbox key only finds sandbox booking links.
This booking widget is missing its data-booking-slug attribute. The snippet has no booking link address. Add data-booking-slug with the last part of your booking link.