Volzet.

Integratiegids

Voeg online reserveren toe aan uw website met één scriptregel — of laat gasten reserveren via uw gehoste boekingspagina.

De Volzet-widget wordt geladen met één <script>-tag. Vervang pk_UW_SLEUTEL door de publieke sleutel van uw restaurant. Er zijn drie manieren om te integreren; u kunt ze combineren.

1. Zwevende knop

Plaats deze regel vlak voor </body>. De widget toont een zwevende reserveerknop rechtsonder op elke pagina.

<!-- Zwevende knop -->
<script async src="https://cdn.volzet.nl/widget/v1/loader.js" data-key="pk_UW_SLEUTEL"></script>

2. Inline reserveringsformulier

Wilt u het formulier direct in de pagina tonen in plaats van als zwevende knop? Voeg naast dezelfde scriptregel een leeg element metdata-volzet-inline toe op de plek waar het formulier moet verschijnen.

<!-- Inline reserveringsformulier -->
<script async src="https://cdn.volzet.nl/widget/v1/loader.js" data-key="pk_UW_SLEUTEL"></script>
<div data-volzet-inline></div>

Inline heeft voorrang. Staat er eendata-volzet-inline-element op de pagina, dan rendert de widget daarin en verschijnt de zwevende knop niet. Zo bepaalt u met de opmaak van uw pagina welke modus actief is, zonder de scriptregel te wijzigen.

3. Eigen knop

Gebruikt u liever uw eigen knop of link? Geef een willekeurig element het attribuutdata-volzet-action="open". Een klik opent het reserveringsvenster.

<!-- Eigen knop -->
<button data-volzet-action="open">Reserveer</button>

Events en JS-API

Na een geslaagde reservering vuurt de widget eenvolzet:booking:created CustomEventaf op window. De reserveringsgegevens staan inevent.detail — handig voor bevestigingen of conversietracking.

window.addEventListener('volzet:booking:created', function (event) {
  console.log('Reservering aangemaakt', event.detail);
});

Het venster is ook programmatisch te openen via de JS-APIwindow.Volzet.open() — bijvoorbeeld vanuit uw eigen event-handler:

document.querySelector('#reserveer').addEventListener('click', function () {
  window.Volzet.open();
});

Gehoste boekingspagina

Geen zin in embedden? Elk restaurant krijgt een gehoste boekingspagina op een vast URL-schema:

https://book.volzet.nl/{slug}

Bijvoorbeeld https://book.volzet.nl/uw-restaurant. Deel de link of gebruik hem als bestemming van een knop; u hoeft dan niets op uw eigen site te plaatsen.

Toegestane domeinen

Om misbruik van uw sleutel te voorkomen, laadt de widget alleen op domeinen die u zelf hebt geregistreerd. Registreer uw domein in het dashboard onderBeheer → Widget, of koppel het tijdens het aanmelden (zie hieronder). Domeinen die er niet in staan, worden door CORS geweigerd.

Zelf een account aanmaken

U kunt direct zelf beginnen — geen wachten op handmatige aanmaak. Ga naarapp.volzet.nl/signup en meld u aan met uw e-mailadres en de naam van uw restaurant. U ontvangt een verificatielink; zodra u die bevestigt, start uwproefperiode van 30 dagen. Daarna is Volzet€39 per maand excl. btw, maandelijks opzegbaar.

Uw domein koppelen

Om de widget op uw eigen website te laten laden, koppelt u uw domein met een verificatietoken dat u bij het aanmelden krijgt. Plaatséén van de twee onderstaande opties op uw site en klik daarna op Verifieer. Volzet haalt uw pagina op en controleert of het token aanwezig is; beide plaatsingen zijn gelijkwaardig.

Optie A — scriptregel

Voeg het attribuut data-volzet-claim met uw token toe (bijvoorbeeld op de universele loader-regel, vlak voor</body>):

<script async src="https://cdn.volzet.nl/widget/v1/loader.js" data-volzet-claim="UW_TOKEN"></script>

Optie B — meta-tag

Of plaats een meta-tag in de <head> van uw pagina:

<meta name="volzet-claim" content="UW_TOKEN">

Na een geslaagde verificatie is uw domein toegestaan en laadt de widget erop. U hoeft het token daarna niet te laten staan.

MCP-server voor agents

De volledige aanmeldstroom is ook beschikbaar voor AI-agents via een MCP-server ophttps://mcp.volzet.nl/mcp. Een agent kan hiermee namens u een restaurant aanmelden, de status volgen, de embed-snippet ophalen en uw domein koppelen. De server biedt zes tools:

get_signup_status geeft ookverification_email_status terug: de afleverstatus van de laatst verstuurde verificatiemail voor uw account bij dit restaurant, ofnull wanneer er nooit een is verstuurd — meestal doordat u zich met Google hebt aangemeld, waarbij er geen mail nodig is.queued, sent,delivered en delayed betekenen allemaal dat de mail onderweg is of al is aangekomen: even wachten volstaat.queued wordt trouwens binnen enkele secondensent. Staat er bounced, dan bestaat het adres niet of weigert het de mail; staat ercomplained, dan is de mail juist wél aangekomen, maar heeft de ontvanger die als spam gemarkeerd — nogmaals sturen schaadt dan de afleverbaarheid. In beide gevallen heeft opnieuw versturen geen zin, en het adres kan niet via de MCP-server worden gewijzigd: meld u opnieuw aan met het juiste adres, of neem contact op met support via info@volzet.nl. Bijfailed is één nieuwe poging wel zinvol.suppressed komt in de praktijk niet voor op dit veld; ziet u het toch, neem dan contact met ons op.

Het onboarding-token werkt niet meer zodra u zelf op het dashboard inlogt — met uw wachtwoord, via een wachtwoordherstel of met "Doorgaan met Google". Elke aanroep met dat token geeft daarna HTTP 401 met codenot_authenticated: exact dezelfde melding als bij een verlopen of ongeldig token, dus uw agent kan de twee niet uit elkaar houden. Dat is normaal en definitief — de agent hoeft het niet opnieuw te proberen en moet ook geen nieuwe aanmelding starten (uw e-mailadres is dan al geregistreerd, wat een 400 oplevert). Vanaf dat moment gaat u verder in de console.

Let op: inloggen met "Doorgaan met Google" geldt meteen ook als e-mailverificatie. Kiest u die route in plaats van de link in de verificatiemail, dan stopt het token op datzelfde moment en ziet uw agent bijget_signup_status mogelijk nooitemail_verified: true. Er gaat dan niets mis — de aanmelding is gewoon afgerond.

Nog geen account? Maak er zelf een aan opapp.volzet.nl/signup — 30 dagen gratis proberen. Liever hulp bij de installatie? Mailinfo@volzet.nl.

Veelgestelde vragen

Waarom heeft de scriptregel geen integrity= (SRI)?

Dat is bewust. De loader /widget/v1/loader.js is een evergreen URL die Volzet ter plekke bijwerkt — hetzelfde model als Stripe.js. Een vastgepinde hash (Subresource Integrity) zou bij elke loader-update elke embed breken, want de hash zou niet meer overeenkomen. De beveiliging zit in eerste-partij TLS op cdn.volzet.nl: het bestand komt alleen van onze eigen, met certificaat beveiligde host.

Vragen? Mail info@volzet.nl.