Så bygger du en bokningsapp: tider, tillgänglighet, påminnelser och förskott
För att bygga en bokningsapp behöver du fyra saker som fungerar tillsammans: en lista över det som kan bokas (tjänster, rum, personal), regler för när varje sak är tillgänglig, ett bokningsflöde som bara erbjuder verkligen lediga tider, och en privat vy där företaget hanterar det som kommit in. En AI-appbyggare kan ta fram en fungerande första version från en kort beskrivning på några minuter; det verkliga arbetet är att bestämma reglerna – tidslängd, buffertar, avbokningar, tidszoner – och att testa att dubbelbokningar är omöjliga.
Börja med att bestämma vad "en bokning" betyder för dig
Bokningsappar ser lika ut på ytan men skiljer sig mycket under ytan. Svara på dessa först:
- Vad bokas? En tjänst (en klippning), en person (en lärare), en resurs (ett mötesrum, en bana, en skåpbil) eller en plats på ett pass (ett yogapass med 12 platser).
- Hur lång tid tar det? Fast per tjänst, eller väljer kunden?
- Vem tillhandahåller det? En person, flera anställda med egna tider, eller ingen (ett rum)?
- Vad händer efter bokningen? Omedelbar bekräftelse, eller en förfrågan som ägaren godkänner?
- Är pengar inblandade? Gratis, betala på plats, förskott eller full förbetalning?
"Begär en tid, ägaren bekräftar via e-post" är mycket enklare att bygga än "direktbokning mot tre personalkalendrar med förskott". Båda är giltiga – välj den du faktiskt behöver för version ett.
Vad appen behöver
Data
| Tabell | Viktiga fält |
|---|---|
| Tjänster | Namn, varaktighet, pris, buffert efteråt, aktiv ja/nej |
| Personal eller resurser | Namn, vilka tjänster de erbjuder |
| Tillgänglighet | Veckoarbetstider per person, plus undantag (helgdagar, enstaka stängningar) |
| Bokningar | Tjänst, personal, starttid, sluttid, kunduppgifter, status (väntande, bekräftad, avbokad), betalningsstatus |
| Kunder | Namn, e-post, telefon, anteckningar – valfritt till en början; kan ligga på bokningen |
Att lagra sluttiden på varje bokning, inte bara starttiden, gör kontroller av överlappningar mycket enklare.
Sidor
- Offentliga: tjänstelista, tidsväljare, bokningsformulär, bekräftelsesida och en länk för att avboka eller boka om.
- Privata (ägare eller personal): dagens schema, kommande bokningar, ett sätt att blockera ledig tid och inställningar för tjänster och tider.
Behörigheter
Kunder ska bara se lediga eller upptagna tider – aldrig andra kunders namn. Personal kan se bara sitt eget schema; ägaren ser allt. Skriv ner det här, eftersom det avgör om du behöver inloggningar och roller. Vår guide om hur du lägger till inloggning i din app går igenom alternativen.
De svåra delarna, och hur du hanterar dem
Dubbelbokningar
Den klassiska buggen: två personer laddar sidan, båda ser 10:00 som ledigt, och båda bokar det. Lösningen är att kontrollera igen på servern när bokningen sparas och vägra den om något nu överlappar. Be uttryckligen om detta:
När en bokning sparas, kontrollera på servern att ingen bekräftad eller väntande bokning för samma personal överlappar den begärda tiden (inklusive bufferten). Om en gör det, avvisa bokningen och visa "Den tiden blev just tagen – välj en annan."
Testa sedan med två webbläsarfönster.
Tidszoner
Lagra all tid i UTC och konvertera för visning. Bestäm vars tidszon bokningssidan visar – vanligtvis företagets för lokala tjänster och kundens för onlinesamtal – och märk ut det på sidan. Testa en bokning över en sommartid-övergång.
Buffertar, varsel och gränser
Vanliga regler att bestämma i förväg: en buffert mellan besök, minsta varsel ("inga bokningar mindre än två timmar framåt"), hur långt fram folk kan boka, och ett dagligt tak. Var och en är en mening i en prompt; utelämnar du dem väljer AI:n standardvärden åt dig.
Avbokningar och uteblivna gäster
Ge varje bekräftelse en avbokningslänk med en unik token, så att kunder inte behöver ett konto. Bestäm ditt avbokningsfönster och om förskott är återbetalningsbara, och visa policyn innan betalningen.
Påminnelser
Påminnelsemejl eller sms behöver något som körs enligt schema ("var 15:e minut, skicka påminnelser för bokningar som startar om 24 timmar"). Kontrollera hur din byggare och hosting hanterar schemalagda jobb. Om de inte gör det, använd en extern schemaläggare som anropar en endpoint i din app, eller skicka bekräftelsemejlet med en kalenderinbjudan bifogad så att kundens egen kalender påminner dem. Se hur du skickar mejl från din app för leverantörsdelen.
Förskott och betalningar
Det vanliga mönstret med Stripe:
- Kunden väljer en tid; appen skapar en väntande bokning som håller tiden en kort stund (säg 15 minuter).
- Appen skickar dem till Stripe Checkout för förskottet.
- Stripe meddelar din app via en webhook när betalningen lyckas; bokningen blir bekräftad.
- Om betalningen inte sker i tid går den väntande bokningen ut och tiden blir ledig igen.
Stripes standardpris är en procentsats plus en fast avgift per lyckad kortbetalning, utan månadsavgift (per september 2026); priserna varierar mellan länder, så kontrollera Stripes prissida för ditt land. Använd testläge och testkort tills allt fungerar. Vår guide till att lägga till betalningar går steg för steg.
En första prompt som fungerar
Bygg en bokningsapp för Northside Barbers. Tjänster: Klippning (30 min, $25), Skäggtrimning (15 min, $12), Klippning + skägg (45 min, $32). Två frisörer, Sam och Ali, som båda arbetar tisdag–lördag 9:00–18:00. Kunder väljer en tjänst, sedan en frisör eller "valfri frisör", och ser sedan bara lediga starttider med 15 minuters intervall för de kommande 14 dagarna, och anger namn, telefon och e-post. Spara bokningar i en databas, med en buffert på 10 minuter efter varje besök, och kontrollera tillgängligheten på nytt när en bokning sparas för att förhindra dubbelbokning. Visa en bekräftelsesida med en avbokningslänk. Ägaren har en privat sida som listar dagens och kommande bokningar, kan avboka en bokning och kan blockera tid. Tiderna visas i butikens lokala tidszon. Ren, mobilförst design.
Den namnger tjänsterna, personalen, tiderna, reglerna och ägarens vy – allt AI:n annars skulle gissa.
Byggsteg
- Kärnbokningsflödet först. Tjänster → tid → formulär → sparad bokning → bekräftelse. Ingenting annat förrän detta fungerar på en telefon.
- Ägarvyn. Dagens lista, kommande lista, avboka, blockera tid.
- Skydda ägarsidorna. Lägg till inloggning innan riktig data kommer in.
- Regler. Buffertar, varselperiod, bokningshorisont, helgdagar.
- E-post. Bekräftelse med kalenderinbjudan och avbokningslänk.
- Förskott om du behöver det, först i Stripes testläge.
- Testa kantfallen. Två fönster som bokar samma tid, en bokning över midnatt, ett datum med sommartid, en avbokad bokning som frigör sin tid.
- Publicera, och gör sedan en riktig bokning själv innan du delar länken.
Vanliga misstag
- Att bara kontrollera tillgängligheten i webbläsaren. Det ser rätt ut och dubbelbokar ändå.
- Att lagra lokala tider utan tidszon. Det fungerar tills klockorna byts.
- Att visa kundnamn i den offentliga kalendern. Visa bara ledigt eller upptaget.
- Att bygga personalschemaläggning, lojalitetspoäng och sms redan första dagen. Lansera kärnflödet och lägg sedan till det kunder faktiskt frågar efter.
- Inget sätt för ägaren att blockera tid. Den första sjukdagen skapar uteblivna gäster.
När Calendly (eller liknande) är det bättre valet
Om du är en person som delar din tillgänglighet för samtal är ett bokningsverktyg svårt att slå. Per september 2026 täcker Calendlys gratisplan en händelsetyp, en kalenderkoppling och en-till-en-bokning med en anpassningsbar bokningssida; betalplaner lägger till fler händelsetyper och teamfunktioner. Sådana verktyg kopplas till din befintliga kalender direkt, vilket en egenbyggd app måste göras för att kunna göra.
Bygg din egen när du behöver regler som sådana verktyg inte stöder, flera bokningsbara resurser, din egen varumärkesprofil genomgående, bokningar kopplade till annan data (kunder, beställningar, medlemskap), eller om du bygger en bokningsprodukt att sälja till andra.
Bygga den med Mythex
På Mythex beskriver du bokningsappen i chatten, den byggs i en levande förhandsgranskning, och den lägger till en Postgres-databas när bokningar behöver sparas. Bokningssidans användningsfall i dokumentationen föreslår att man börjar med ett bokningsformulär och en adminlista, och lägger till resten senare. Var tydlig med vad som ingår och vad du kopplar själv: Mythex har ingen inbyggd kalendersynk, inga sms-påminnelser och ingen förskottsprodukt. E-post går genom din egen leverantör, förskott genom dina egna Stripe-nycklar lagrade som projekthemligheter (Stripe-receptet), och dubbelbokningsregler och tidszonsregler är sådant du specificerar och testar, som ovan.
Kommandot /test låter agenten klicka igenom bokningsflödet i förhandsgranskningen och rapportera vad som går sönder. För en startprompt, prova mallarna frisörbokning för webbplats eller mötesbokare, eller bläddra bland alla appmallar.
Frågor
Vilka funktioner behöver en bokningsapp?
Som minimum: en lista över tjänster med varaktighet, ett sätt att bara visa lediga tidsluckor, ett bokningsformulär, en bekräftelse och en privat sida där företaget ser och hanterar bokningar. Påminnelser, förskott och personalkalendrar kommer sedan.
Hur förhindrar jag dubbelbokningar?
Kontrollera tillgängligheten på servern i det ögonblick bokningen sparas, inte bara när sidan laddas, och avvisa bokningen om tiden har tagits under tiden. Testa genom att försöka boka samma tid från två webbläsarfönster.
Kan en egenbyggd bokningsapp ta emot förskott?
Ja. Det vanliga sättet är att skicka kunden till en Stripe Checkout-sida för förskottet och först bekräfta bokningen när betalningen lyckas. Du behöver ett eget Stripe-konto och egna nycklar.
Ska jag bygga en bokningsapp eller använda Calendly?
Om en person behöver dela sin tillgänglighet och inget i flödet är ovanligt, är ett bokningsverktyg som Calendly snabbare och billigare att driva. Bygg din egen när du behöver egna regler, flera resurser, din egen varumärkesprofil genomgående, eller bokningar kopplade till annan data du har.