Astro-integratie
Boekingen in een Astro-site
Niets aan nisebookings is Astro-specifiek, en daar gaat het om. Het boekingsformulier is een webcomponent dat zelf met de API praat, dus een volledig statische Astro-site is genoeg. Server-rendering en server-routes zijn optioneel: voor als je diensten op de server wil renderen of webhooks in je eigen project wil ontvangen.
Waarom het bij een statische site past
-
Geen backend aan jouw kant
Het boekingsformulier laadt van het CDN van nisebookings en roept de publieke API aan met de publieke sleutel van de site. Je build blijft statisch: geen adapter, geen serverless functie.
-
Jouw lettertypen en kleuren
Het component draait in een shadow DOM en neemt het lettertype van de pagina over. Kleuren, radius en witruimte zijn CSS-variabelen op het element.
-
Server-rendering als je wil
Op een server-gerenderde pagina haal je diensten op in de frontmatter en render je je eigen markup. Boeken gaat met een form-post of fetch, via dezelfde API als het boekingsformulier.
-
Webhooks naast je code
Een Astro-server-route (`export const POST`) ontvangt ondertekende webhooks en stuurt ze door naar een CRM, Slack of een spreadsheet.
Drie patronen
Kopiëren, plakken, aanpassen. De publieke sleutel staat in de accountinstellingen, bij Toegestane websites.
Statische pagina met het boekingsformulier
Twee regels in elk .astro-bestand, zonder eigen client-JavaScript. De snelste route, en het werkt met output: 'static'.
<script src="https://app.nisebookings.com/widget.js" defer></script>
<nise-booking data-key="YOUR_PUBLIC_KEY"></nise-booking> Diensten op de server gerenderd
Haal in de frontmatter kaarten, prijzen en duur op uit de publieke API. Houd het boekingsformulier voor de boekingsstap, of boek rechtstreeks via de publieke API.
---
// src/pages/book.astro — output: 'server' or 'hybrid'
const res = await fetch('https://app.nisebookings.com/api/public/YOUR_PUBLIC_KEY/services');
const { services } = await res.json();
---
<ul>
{services.map((s) => <li>{s.title} — {s.duration} min — € {s.price}</li>)}
</ul>
<script src="https://app.nisebookings.com/widget.js" defer></script>
<nise-booking data-key="YOUR_PUBLIC_KEY"></nise-booking> Een webhook-route
Ontvang boekingsgebeurtenissen in src/pages/api/webhooks.ts, controleer de handtekening met de gedocumenteerde verifier en stuur door wat je nodig hebt.
// src/pages/api/nisebookings.ts
import type { APIRoute } from 'astro';
export const POST: APIRoute = async ({ request }) => {
const raw = await request.text();
// Verify the signature before trusting it — the webhooks guide has the
// verifier to copy (Standard Webhooks, HMAC-SHA256, raw body).
return new Response(null, { status: 200 });
}; Eigen stijl
Zet --nb-accent, --nb-radius en de andere variabelen op het element of in je globale stylesheet. Het component neemt font-family, font-size en kleur van de pagina over, zodat het voelt als deel van de site en niet als een ingebed formulier.
<style>
nise-booking {
--nb-accent: #E8276B;
--nb-radius: 4px;
}
</style> Wat getest is
Wat wel en wat niet
Het uitvoerbare voorbeeld achter deze pagina is tegen een sandbox gecontroleerd. Het boekingsformulier toonde de catalogus. De server-gerenderde pagina boekte een echte afspraak en ving een tijdslot op dat intussen bezet was. De webhook-route accepteerde een correct ondertekende payload en weigerde een verkeerde. Niet getest: view transitions. Bij navigatie in de browser wordt het element opnieuw aangemaakt, dus probeer dat pad voordat je erop bouwt. Mis je iets? Stuur een mail.
Nu proberen, zonder account
curl -s -X POST https://app.nisebookings.com/api/sandbox
# → a 24-hour account with a public key and an API key.
# Mail is captured, payments are fake. Volgende stappen
-
Astro-voorbeeld
Een uitvoerbare Astro-app: het boekingsformulier op een statische pagina, een eigen server-gerenderde interface en een webhook-route.
-
Widgetreferentie
Elk attribuut, elke themavariabele en elk event, met de exacte embedregels.
-
Publieke API
Diensten, slots, prijzen, boekingen en betalingen, met OpenAPI 3.1.
-
Snelstart
Van leeg account naar een live boeking, stap voor stap.
-
Next.js-voorbeeld
Een uitvoerbaar project met een pagina met boekingsformulier, een eigen interface en een webhook-route.
Boekingen op je volgende site.
Begin gratis en bouw tegen een sandbox. Je betaalt zodra je klant echte boekingen krijgt.
Gratis account. Alleen een e-mailadres nodig.