How to build a booking app for iPhone: 6 steps (2026)
Build a booking app for appointments or classes: the data model, sign-in, reminders, and how Apple lets you take payment for real-world services.

By Sigsten Gustavii· · Updated · 10 min read
To build a booking app, list what people can book and when you are open, decide who signs in and what staff see, describe it to an AI app builder like Borel, try booking the same slot twice to prove it is refused, then test it with a few regulars before you publish it on the App Store.
| Kind | Who books | What makes it work |
|---|---|---|
| Appointments | One client, one staff member, one time | Service lengths, each person's hours, no double booking |
| Classes | Many people, one session, limited places | A timetable, places left, a waiting list |
Salons, physios, tutors, dog groomers and driving instructors run on appointments. Yoga studios, climbing gyms, cooking schools and swim clubs run on classes. Many businesses need both: a studio sells group classes and private sessions. Decide which you have before you describe anything, because the data underneath is different.
If you just want the short version for a small business, the booking app page has a ready prompt and the screens Borel makes. This guide goes deeper: the data model, accounts, payments and Apple's rules.
What a booking app needs
| Part | What it does | How Borel builds it |
|---|---|---|
| Services or classes | What can be booked, with length and price | A table everyone can read |
| Free times | Open slots worked out from hours and existing bookings | Taken slots never show |
| Booking | Who booked what, and when | Guarded in the cloud so a slot is booked once |
| My bookings | A client's upcoming visits, with cancel | Each client sees only their own |
| Staff view | Today's bookings for each staff member | A staff role with its own screens |
| Reminders | "Your appointment is tomorrow at 10:30" | Notifications scheduled on the client's phone |
| Calendar | The booking in the iPhone's own Calendar | Apple's EventKit, with permission to add |
| Directions | How to get there | Apple Maps |
The data model behind a booking app
The data model is the list of things the app keeps and how they connect. Get it right and every screen falls into place. For appointments, it looks like this:
| Thing | Fields | Who can see it |
|---|---|---|
| Service | Name, minutes, price, description | Everyone, even before signing in |
| Staff member | Name, photo, working hours, services they do | Everyone |
| Booking | Service, staff member, start time, client, status | The client who made it, and staff |
| Time off | Staff member, from, to, reason | Staff only |
| Client | Name, email, phone | The client, and staff |
For classes, swap Staff member and Booking for Class (name, teacher, start, length, places) and Place (class, client). A class shows how many places are left: Borel can keep a running count of the places taken on each class in the database, so the timetable reads it in one go.
The one rule a booking app must never break is a double booking. Say "a slot can only be booked once" and Borel makes the staff member and start time unique together in the app's database, so the database itself refuses a second booking for the same slot, even if two people tap Book in the same second. Screens can hide taken slots, but the database is what makes it safe.
Time zones and lengths
Store every time with its time zone, and work out free slots from a service's length plus any gap you want between visits. Ask for it plainly: "a 15-minute gap after every colour appointment". Borel writes the rule into the code; you check it in the simulator.
Accounts: who signs in, and what they see
Apple's Guideline 5.1.1(v) asks that people can use an app without a login when it has no significant account features. So let anyone browse services, prices and free times, and ask for sign-in only at Book.
- Clients sign in with email and password, see their own bookings and can cancel within your rules.
- Staff sign in to a separate view: their day, the client's name and service, and buttons to move or cancel.
- The owner sets services, prices, hours and time off, and sees every booking.
Accounts and data come from the app's own cloud, which Borel runs, so there is no server or database for you to set up. Every Borel app with accounts lets people delete their account in the app, which Apple also requires under 5.1.1(v).
Payments: what Apple allows for real-world services
This is where booking apps differ from most apps. Apple's in-app purchase is for digital things used inside the app. A haircut, a massage or a spin class happens in the real world, so Guideline 3.1.3(e) says you must use a payment method other than in-app purchase for it.
| What is booked | How to take payment | Apple's guideline |
|---|---|---|
| An in-person appointment or class | In person, or card checkout | 3.1.3(e): not in-app purchase |
| A live online session between two people, like tutoring | Card checkout or in-app purchase | 3.1.3(d): other methods allowed |
| A live online class for a group | In-app purchase | 3.1.3(d): one-to-many must use it |
| Recorded videos or premium features in the app | In-app purchase | 3.1.1 |
Most small businesses take payment at the visit and use the app only to book. If you want a deposit or full payment at booking, use a card provider such as Stripe: save your key in Borel under Tools, in Keys, and Borel calls Stripe from its own server, so the key never sits inside the app. The payments guide walks through it.
If you also sell something digital, such as a library of recorded classes, Borel builds Apple's in-app purchase for that part and creates the product at Apple when you publish.
Reminders, calendar and maps
A booking is only useful if the client turns up. A Borel booking app schedules a reminder on the client's phone, for example the day before and an hour before, so it fires even with the app closed. An Add to Calendar button puts the visit in the iPhone's Calendar, and your address opens in Apple Maps with directions.
Reminders are scheduled by the phone itself, so they arrive without a server. Staff see new bookings in their day view whenever they open it.
Design a booking flow people finish
Every extra tap loses someone. Keep the flow short:
- Service, then time. Pick what you want, then see the next free times for it, soonest at the top.
- A clear week. Seven days across the top, free times as big buttons below.
- "Any staff member" as the default. Let people pick a person, but don't make them.
- One confirm screen. Service, time, person, price and address, then Book.
- Rebook in one tap. My bookings shows the last visit with Book again.
For classes, the timetable is the home screen: today's classes, places left, and a Join waiting list button when a class is full.
App Store rules for booking apps
| Guideline | What Apple asks | What to do |
|---|---|---|
| 3.1.3(e) Goods and services outside the app | No in-app purchase for real-world services | Take payment in person or with a card provider |
| 3.1.3(d) Person-to-person services | Group live classes online use in-app purchase | Check what you sell |
| 4.2 Minimum functionality | More than a repackaged website | Native booking, reminders, calendar and maps |
| 5.1.1(v) Account sign-in | Browse without a login; delete account in the app | Sign in only at Book |
| 2.1(a) Completeness | A demo account if the app has a login | Give App Review a client and a staff login |
Fill in real services and opening hours before review. An app with empty lists or placeholder prices looks unfinished to App Review.
What a booking app costs
| Item | Cost | Notes |
|---|---|---|
| Borel Free | $0 | 5 credits a day to build it and try it in your browser |
| Borel Pro | From $20 a month | Install it on your iPhone with Companion and publish it |
| Apple Developer Program | $99 a year | Paid to Apple; the app is listed under your name or business |
| Running the app | Pay as you go | Accounts and bookings in the app's cloud, from your credits |
| Card payments | Your provider's fees | Only if you take payment at booking |
If you already pay a booking platform every month, put its yearly cost next to this table. Once the app is published, it stays yours. See pricing for every tier.
Booking platform or your own app?
- A booking platform suits you if you want a ready web page, card payments and marketplace listings today, and don't mind its branding and monthly fee.
- Your own app with Borel suits you if you want your name on the App Store, your own rules, your own clients' data and native reminders, without a developer.
- Both works too: keep the platform for walk-in discovery and give regulars your own app.
How to build a booking app with Borel, step by step
Step 1: Write down services, hours and rules
List every service with its length and price, each staff member's working hours, your cancellation rule and any gaps between visits. For classes, list the weekly timetable and how many places each class has.
Step 2: Describe the app
A booking app for Studio Lind, a pilates studio in Gothenburg. Anyone can browse the weekly timetable of group classes and private sessions without signing in. Group classes have 12 places and show places left; when full, people join a waiting list. Private sessions are 55 minutes with one of three teachers, and a slot can only be booked once. Clients sign in with email to book, see My bookings, cancel up to 12 hours before, and add a booking to their Calendar. Remind them the evening before and one hour before. Show our address with directions in Apple Maps. Teachers sign in to see their day and mark who came. The owner edits classes, prices, hours and time off. Payment happens at the studio.Penny, Borel's planner, asks about anything unclear, such as what happens when someone cancels late. Then Rivet writes the app in Swift with SwiftUI, and Xcode builds it on Borel's Mac. You don't need a Mac.
Step 3: Try to break it in the simulator
The app opens in the iOS Simulator in your browser, free. Book a class, cancel it, join a full class's waiting list, then sign in as a teacher. Try to book the same private slot from two accounts: the second must be refused.
Step 4: Polish it
Attach your logo and ask for your colours. Ask for small things in plain words: "show the teacher's photo on each class", "hide classes that started already", "put Book again on the home screen".
Step 5: Test it with real clients
With Pro, Borel Companion installs the app on your own iPhone, so you can check that reminders and the calendar button work on a real phone. Then invite a few regulars through TestFlight, which takes up to 10,000 external testers, and watch where they hesitate.
Step 6: Publish it
Stamp checks the app against the reasons Apple most often turns apps down, and Publish builds, signs and uploads it under your own Apple Developer account. Add a client and a staff login for App Review in the review notes.
The Bottom Line
A booking app is a small data model with one strict rule: a slot is booked once. Get that right, keep the flow to a few taps, remind people before they come, and take payment the way Apple allows for real-world services. With Borel, you describe it, try it on a live iPhone in your browser, and publish it under your own name. Describe your services on Borel and book your own test appointment today.
Questions people ask
Can I take payment in a booking app?
Yes, but not with Apple's in-app purchase for in-person services: Guideline 3.1.3(e) asks for another method. Take payment at the visit, or add your Stripe key in Borel under Tools, in Keys, for card checkout.
How does a booking app stop double bookings?
Ask for each slot to be booked only once, and Borel makes the staff member and start time unique together in the database, so a second booking for the same slot is refused, even at the same second.
Can a booking app send reminders?
Yes. A Borel app schedules reminders on the client's phone, for example the day before, and they arrive even with the app closed.
Can it handle group classes with limited places?
Yes. Describe the number of places and a waiting list, and the timetable shows places left on each class.
Do I need a Mac or coding skills?
No. Borel writes the Swift code and builds it with Xcode on its own Mac. You describe the app and change it with messages from any computer.
How much does a booking app cost to make?
With Borel, from $20 a month for Pro to publish, plus Apple's $99 a year and small running costs for accounts and bookings. Building and testing in the browser starts free.
I like booking apps because the rules are clear and the payoff is real: fewer phone calls, fewer no-shows. Describe yours to Borel and book yourself a test slot.
– Sigsten
Make your iPhone app in Borel
Describe the app you want and see its first screens before you pay anything.
See your app free