Elke bevestigde reservering, vanaf de server gerapporteerd aan Google Ads, Meta, TikTok, Microsoft Ads en GA4

TapTime maakt van een tafelreservering of afspraak een conversie waarvan advertentieplatforms kunnen leren: server-side verzonden met het klik-id van de gast, ontdubbeld tegen je pixel en via webhook, postback of API afgeleverd bij je eigen systemen. Inbegrepen bij reserveringen en afspraken vanaf 29 € per maand.

14 dagen gratisGeen kaart nodigKoppel Google, Meta en TikTok in 10 minuten

Advertentieklik of link gclid · fbclid · UTM-tags
Reservering bevestigd evt_… · waarde · attributie
  • Google AdsUpload van klikconversies
  • MetaConversions API
  • TikTokEvents API
  • Microsoft AdsUET Conversions API
  • GA4Measurement Protocol
  • Tag ManagerdataLayer op de pagina
  • WebhookOndertekende JSON, elke 2xx
  • PostbackTracker-URL met macro's
  • REST APIReserveringen en eventfeed
Eén bevestigde reservering, negen bestemmingen, één event-id.

Wat is conversietracking voor reserveringen?

Conversietracking voor reserveringen betekent dat je elke bevestigde reservering of afspraak terugmeldt aan het platform dat de gast bracht, zodat Google Ads, Meta, TikTok, Microsoft Ads en Google Analytics 4 reserveringen meten in plaats van paginaweergaven, en optimaliseren op mensen die echt boeken. TapTime doet dit vanaf de server, gekoppeld aan het klik-id van de advertentie, met één event-id per reservering zodat een pixel op de pagina haar nooit dubbel telt.

In het kort

  • Conversies worden vanaf de server van TapTime verzonden zodra een reservering is bevestigd, zodat adblockers, een gesloten tabblad of een trage telefoon ze niet kunnen laten verdwijnen.
  • Google Ads krijgt de klikconversie met de gclid, gbraid of wbraid; Meta en TikTok krijgen een server-event via hun Conversions API en Events API; Microsoft Ads krijgt een UET-event met de msclkid; GA4 krijgt een Measurement Protocol-event dat aan de sessie van de bezoeker is gekoppeld.
  • Elke reservering draagt één event-id. Je pixel of conversietag vuurt met hetzelfde id, en de platforms houden er precies één over.
  • Alleen reserveringen die gasten zelf maakten, tellen mee. Telefonische reserveringen en walk-ins die het personeel invoert, worden nooit als conversie gerapporteerd.
  • Webhooks, server-to-server-postbacks en een REST API leveren dezelfde reservering, met haar attributie, aan je CRM, tracker, Zapier of je eigen code.
  • Bestellingen van gasten en nieuwe loyaliteitsleden kunnen ook worden gerapporteerd — als aankoop met waarde en artikelen, en als aanmelding — elk één keer.
  • Telegram, Slack, Microsoft Teams, Google Chat, Discord en Mattermost krijgen elke nieuwe reserveringsaanvraag, bestelling of beloning als leesbaar bericht; Zapier, Make, n8n en Pipedream krijgen ze als data voor elke workflow.
  • Er zijn geen extra kosten. Conversietracking, webhooks, postbacks, chatmeldingen, automatisering en de API horen bij elke module.
9
bestemmingen voor één bevestigde reservering
1
event-id gedeeld door server en browser
30 dagen
wordt de campagne van de gast onthouden
8
leveringspogingen verspreid over ongeveer een dag

Waarom de meeste advertenties van restaurants en salons op het verkeerde optimaliseren

Advertentieplatforms leren van alles wat je als conversie rapporteert. Zien ze alleen een paginaweergave, dan vinden ze mensen die kijken. Zien ze bevestigde reserveringen, dan vinden ze mensen die boeken.

01

‘De pixel zegt 12 reserveringen. Het bord zegt 31.’

Een browsertag vuurt alleen als de browser van de gast dat toelaat: geen adblocker, geen strenge privacyinstelling op iOS, tabblad nog open als de bevestiging laadt. Elke reservering die hij mist, is een signaal waarvan Google en Meta nooit leren.

02

‘Mijn conversies bevatten de telefoontjes die mijn personeel invoerde.’

Een reservering die je receptionist met de hand invoerde, kwam niet van een advertentie. Telt die als conversie, dan lijkt de campagne beter dan ze is en gaat het budget naar de verkeerde zoekwoorden.

03

‘Ik kan niet zien welke campagne het terras echt vulde.’

Zonder de campagne, het klik-id en de verwijzer opgeslagen op de reservering zelf, ziet elke reservering er op het bord hetzelfde uit. De Instagram-post, de Google-advertentie en het partnerhotel krijgen allemaal dezelfde erkenning, namelijk geen.

Hoe een reservering in TapTime een conversie wordt

Vier stappen, en op geen ervan hoef je te passen. Het hele traject loopt aan de kant van TapTime, van de klik tot het verzendlogboek.

  1. 1

    De gast komt binnen met een klik-id of een getagde link

    Google Ads voegt gclid, gbraid of wbraid aan de link toe. Meta voegt fbclid toe, Microsoft msclkid, TikTok ttclid. Je eigen links bevatten utm_source, utm_medium, utm_campaign, utm_term en utm_content. Het id van een affiliatetracker komt binnen als click_id, clickid of subid. TapTime leest ze één keer, op je reserveringspagina, je menu of de reserveringswidget op je eigen site, en bewaart ze 30 dagen op het apparaat van de gast.

  2. 2

    De reservering wordt bevestigd

    Automatisch, of doordat je personeel later een openstaande aanvraag goedkeurt. Hoe dan ook: op het moment dat de reservering bevestigd wordt, schrijft TapTime een reserveringsevent en één leveringsrij per bestemming, in dezelfde databasetransactie als de reservering zelf. Een levering kan nooit tussen twee systemen verloren gaan.

  3. 3

    Elke bestemming krijgt het event met één gedeeld id

    Google Ads ontvangt een upload van een klikconversie met het klik-id en de conversiewaarde. Meta en TikTok ontvangen een server-event via hun Conversions API en Events API. Microsoft Ads ontvangt een aangepast UET-event via zijn Conversions API. GA4 ontvangt een Measurement Protocol-event gekoppeld aan het client-id en sessie-id van de bezoeker. Je webhooks ontvangen ondertekende JSON, je tracker ontvangt zijn postback-URL met ingevulde macro's, en de eventfeed van de API krijgt er een rij bij. Het event-id is overal hetzelfde.

  4. 4

    Mislukkingen worden opnieuw geprobeerd, en je ziet elke levering

    Een bestemming die met een fout antwoordt, wordt opnieuw geprobeerd na 1, 5 en 15 minuten, daarna na 1, 3, 6 en 12 uur, acht pogingen in totaal. Het scherm Integraties toont de laatste 25 leveringen per bestemming met het eigen antwoord van het platform, en een knop Opnieuw verzenden voor de levering die je nu meteen wilt versturen.

Negen manieren waarop een bevestigde reservering TapTime verlaat

Koppel er één of allemaal via Integraties in het dashboard. Elk heeft een knop Verbinding testen of Test verzenden, een verzendlogboek en een stapsgewijze handleiding in het helpcentrum. Bestellingen en loyaliteitsaanmeldingen kunnen aan dezelfde platforms worden gerapporteerd.

Google Ads conversietracking

Twee helften die je samen kunt gebruiken. Een browsertag (conversie-ID en label) vuurt op de bevestigingspagina. Een serverupload stuurt de conversie via de Google Ads API met de gclid, gbraid of wbraid uit de reserveringslink, ook als de browsertag werd geblokkeerd. Google accepteert uploads voor klikken van de afgelopen 90 dagen. Beide dragen hetzelfde order-id, dus een reservering is één conversie.

Google Ads-conversies instellen

Meta Conversions API (Facebook en Instagram)

Eén server-event per bevestigde reservering, verzonden naar de dataset van je pixel met de fbclid, de browsercookies van Meta, het IP-adres en de browser van de gast en, tenzij je dat uitzet, het e-mailadres en telefoonnummer van de gast, gehasht met SHA-256 voordat ze TapTime verlaten. Kies Schedule, Lead of Purchase als eventnaam. Test met een testeventcode uit Events Manager en zie hem binnenkomen.

Meta-conversies instellen

TikTok Events API

Eén server-event per bevestigde reservering, verzonden naar je TikTok-pixel met de ttclid uit de reserveringslink, het IP-adres en de browser van de gast en, tenzij je dat uitzet, hun e-mailadres en telefoonnummer, gehasht met SHA-256 voordat ze TapTime verlaten. Kies Schedule, Lead, Submit form of Place an order als eventnaam. TapTime plaatst je pixel ook op de reserveringspagina, zodat het browser- en het server-event één id delen en TikTok er één overhoudt.

TikTok-conversies instellen

Microsoft Ads (Bing) conversies

Twee helften, zoals bij Google Ads. TapTime plaatst je UET-tag op de reserveringspagina en vuurt een aangepast event als een gast boekt. Voeg het token voor de Conversions API toe en de server rapporteert wat de tag niet kan zien: reserveringen die bevestigd werden nadat de gast vertrok, bestellingen van gasten en nieuwe loyaliteitsleden, toegeschreven via de msclkid of via gehasht e-mailadres en telefoonnummer. Microsoft accepteert server-events van de afgelopen 7 dagen.

Microsoft Ads-conversies instellen

Reserveringsevents in Google Analytics 4

Een booking_confirmed-event per reservering via het Measurement Protocol, met waarde en valuta, het GA-client-id van de bezoeker en het sessie-id per property, zodat de reservering wordt gekoppeld aan het bezoek en de campagne die ertoe leidde. Markeer het in GA4 als key event en het telt als conversie in elk rapport en bij het bieden in Google Ads.

Google Analytics 4 koppelen

Webhooks voor je CRM, Zapier, Make, n8n of Pipedream

Eén https-endpoint per systeem, geabonneerd op de reserverings-, bestel- en loyaliteitsevents die je kiest. Elk verzoek is JSON met de hele reservering, bestelling of spaarkaart en haar attributie, ondertekend met HMAC-SHA256 zodat je kunt verifiëren dat het van TapTime komt. Elke 2xx is een succes, 410 stopt de nieuwe pogingen, en elk event heeft een id waarop je kunt ontdubbelen.

Een webhook toevoegen

Server-to-server-postbacks voor trackers en affiliates

Plak de postback-URL die een advertentienetwerk, affiliateplatform of tracker je gaf en voeg placeholders in: {click_id}, {event}, {status}, {value}, {currency}, {party_size}, {booking_id}, {utm_source}, {utm_campaign}, {gclid}, {fbclid} en meer. GET of POST. Het klik-id van de tracker bereikt de reservering als je link click_id, clickid of subid bevat.

Een postback instellen

REST API voor reserveringen en events

Bearer-sleutels, alleen-lezen of lezen-schrijven, 50 verzoeken per minuut per sleutel. Toon reserveringen en afspraken gefilterd op status, vestiging, periode of updatedSince, haal één reservering op, wijzig een status vanuit je eigen systeem, of poll de geordende eventfeed met een cursor om synchroon te blijven. Statuswijzigingen via de API triggeren dezelfde webhooks en conversies als het bord.

Een API-sleutel aanmaken

Analytics-tags op de pagina

Je TapTime-pagina bevat je eigen GA4-meet-id, GTM-container en Meta Pixel in een beveiligde, geïsoleerde analytics-sandbox. Als een gast boekt, pusht de pagina booking_confirmed of booking_requested naar de toegestane dataLayer met het type, de waarde en het event-id van de reservering, zodat analytics-tools erop kunnen triggeren. Bestel- en betaalpagina's krijgen geen tags van de zaak, en de reserveringswidget op je eigen website doet hetzelfde voor de tags van je site.

Tags aan je pagina toevoegen

Niet alleen reserveringen: bestellingen en loyaliteit tellen ook

Dezelfde outbox die reserveringen rapporteert, rapporteert ook wat er gebeurt nadat de gast is gaan zitten. Zet elk doel per platform aan, in het onderdeel ‘Wat rapporteren’ van de koppeling.

Bestellingen als aankopen

De bestelling van een gast via je pagina, de QR-code van een tafel, afhalen of bezorgen wordt één keer verzonden, wanneer ze bij jou binnenkomt: een GA4-purchase met de artikelen, een Purchase bij Meta of TikTok met de inhoud, een aankoopevent bij Microsoft Ads, een Google Ads-upload naar een eigen conversieactie. De waarde is wat er besteld is, zonder fooi. Verkopen die aan de kassa zijn aangeslagen, worden nooit gerapporteerd — die kwamen niet door een advertentie.

Loyaliteitsaanmeldingen

De eerste stempel van een klant in een programma is een aanmelding: GA4 sign_up, CompleteRegistration bij Meta en TikTok, gekoppeld via het gehashte telefoonnummer, een aanmeldevent bij Microsoft Ads, en Google Ads alleen als de klant via een advertentieklik kwam. Eén keer per lid en programma, hoeveel kaarten hij ook volmaakt.

Elk event, overal elders

Webhooks, postbacks, chatmeldingen, automatiseringsplatforms en de REST API ontvangen alle elf events: een reservering aangevraagd, bevestigd, geannuleerd, als no-show gemarkeerd of afgerond; een bestelling geplaatst of betaald; een nieuw lid, een stempel, een verdiende en een ingewisselde beloning.

Conversietracking in de browser of op de server: wat heeft een restaurant of salon nodig?

Allebei, en TapTime doet allebei. De browsertag geeft de platforms het bezoek; het server-event garandeert dat de reservering wordt geteld. Dit verandert er als de serverkant gekoppeld is.

Situatie Alleen een pixel of tag op de pagina TapTime server-side + je tag
Adblockers en strenge browserprivacy De conversie gaat ongemerkt verloren Vanaf de server verzonden, ongeacht de browser van de gast
De gast sluit het tabblad voordat de bevestiging laadt Verloren Verzonden als de reservering wordt opgeslagen, niet als een pagina laadt
Personeel bevestigt de volgende ochtend een openstaande aanvraag Geen pagina die laadt, geen conversie Verzonden op het moment van bevestigen, wie er ook bevestigde
Telefonische reserveringen en walk-ins Geteld als het personeel dezelfde pagina gebruikt Nooit gerapporteerd; alleen reserveringen die de gast online maakte
Zowel de tag als de server vuren Twee conversies voor één reservering Eén gedeeld event-id; het platform houdt er één over
Conversiewaarde Wat er in de tag hardgecodeerd staat De prijs van de dienst, of jouw waarde per reservering, optioneel vermenigvuldigd met het aantal personen
Welke campagne de erkenning krijgt Hangt ervan af of cookies overleven Klik-id en UTM-tags opgeslagen op de reservering, 30 dagen onthouden

Hoe voorkomt TapTime dat een reservering twee keer wordt geteld?

Elke reservering heeft precies één conversie-event-id, een HMAC van de reservering die TapTime in het reserveringsantwoord aan de pagina teruggeeft en vanaf de server verstuurt. Het browserevent draagt het als transactie-id voor Google Ads en als event-id voor Meta, TikTok en de UET-tag van Microsoft; het server-event draagt dezelfde waarde. Die vier platforms ontdubbelen erop, en GA4 krijgt helemaal geen browserevent zolang de serverkoppeling actief is. Een reservering die bevestigd, geannuleerd en opnieuw bevestigd wordt, stuurt een tweede webhook, omdat je systeem dat moet weten, maar blijft één conversie.

Platform Serverkant Browserkant Ontdubbelsleutel
Google Ads uploadClickConversions met het klik-id gtag-conversie met send_to orderId / transaction_id
Meta Conversions API, events tot 7 dagen oud fbq track met eventID event_id
TikTok Events API met de ttclid ttq.track met event_id event_id
Microsoft Ads Conversions API, events tot 7 dagen oud uetq push met event_id event_id
GA4 Measurement Protocol met client- en sessie-id alleen als de serverkant niet gekoppeld is één bron tegelijk

Hoe ziet een reserveringswebhook van TapTime eruit?

Een POST met een JSON-body: het id, type en tijdstip van het event, of het een test is, en de hele reservering (of bestelling, of spaarkaart), inclusief de gast, het tijdstip, de tafel of dienst, de status en de herkomst. Vier headers identificeren en ondertekenen haar.

TapTime-Event
het eventtype: booking.confirmed, order.placed, loyalty.reward_issued en nog acht
TapTime-Event-Id
het event-id, bij elke nieuwe poging hetzelfde, om te ontdubbelen
TapTime-Delivery
het id van deze specifieke leveringspoging
TapTime-Signature
t=<unix time>,v1=<hex HMAC-SHA256 van "t.body"> met je whsec_-geheim
  • Antwoord binnen de time-out van het verzoek met een willekeurige 2xx-status en de levering wordt als afgeleverd gemarkeerd.
  • Elk ander antwoord, of geen antwoord, wordt tot acht keer opnieuw geprobeerd over ongeveer een dag, met steeds langere tussenpozen.
  • Antwoord 410 Gone en TapTime stopt met nieuwe pogingen voor dat event naar dat endpoint.
  • Redirects worden niet gevolgd. Endpoints moeten in productie https zijn en mogen niet naar privé- of loopbackadressen wijzen.
  • Maximaal 50 endpoints, chats en automatiseringskoppelingen per bedrijf. De eigenaar kan het ondertekeningsgeheim opnieuw tonen of roteren; roteren schakelt het oude meteen uit.
Lees de webhookhandleiding
POST · application/json · booking.confirmed
{
  "id": "evt_9f3c2a7e1b",
  "type": "booking.confirmed",
  "createdAt": "2026-09-12T19:02:11+03:00",
  "test": false,
  "data": {
    "booking": {
      "kind": "reservation",
      "id": 4821,
      "status": "confirmed",
      "startsAt": "2026-09-12T20:00:00+03:00",
      "partySize": 4,
      "guest": { "name": "Maria K.", "email": "…", "phone": "…" },
      "attribution": {
        "channel": "widget",
        "utmSource": "instagram",
        "utmMedium": "paid_social",
        "utmCampaign": "summer_terrace",
        "gclid": null,
        "fbclid": "IwAR2…",
        "landingUrl": "https://example-bistro.com/?fbclid=…"
      }
    }
  }
}
De handtekening verifiëren (Node.js)
const [t, v1] = req.headers["taptime-signature"]
  .split(",").map(part => part.split("=")[1]);
const expected = crypto
  .createHmac("sha256", process.env.TAPTIME_WEBHOOK_SECRET)
  .update(`${t}.${rawBody}`)
  .digest("hex");
const valid = crypto.timingSafeEqual(
  Buffer.from(expected), Buffer.from(v1));

Hoe werken server-to-server-postbacks voor reserveringsconversies?

Een postback is de eigen URL van de tracker, die de server van TapTime bij elk event aanroept met de gegevens van de reservering ingevuld in placeholders. Zo tellen affiliatenetwerken, CPA-platforms en kliktrackers een conversie zonder code op de pagina. Je reserveringslink draagt het klik-id van de tracker als click_id, clickid of subid; TapTime slaat het op bij de reservering en zet het terug in de URL wanneer de reservering wordt bevestigd, geannuleerd of als no-show gemarkeerd.

Lees de postbackhandleiding
Postback-URL met placeholders · GET of POST
https://tracker.example/postback
  ?cid={click_id}
  &event={event}
  &status={status}
  &payout={value}
  &cur={currency}
  &guests={party_size}
  &src={utm_source}

Beschikbare placeholders

  • {event}
  • {event_id}
  • {status}
  • {booking_id}
  • {booking_type}
  • {order_id}
  • {customer_id}
  • {conversion_id}
  • {value}
  • {currency}
  • {party_size}
  • {branch_id}
  • {timestamp}
  • {utm_source}
  • {utm_medium}
  • {utm_campaign}
  • {utm_term}
  • {utm_content}
  • {gclid}
  • {fbclid}
  • {msclkid}
  • {ttclid}
  • {click_id}

Meldingen in de chat die je team al gebruikt — en automatisering zonder code

Kies welke events een chat hoort: een nieuwe reserveringsaanvraag om te bevestigen, een nieuwe bestelling, een annulering, een verdiende beloning. Elk event komt binnen enkele seconden binnen als kort bericht in de taal die je kiest, met wie, wanneer, hoeveel personen en welk bedrag, en een link terug naar het dashboard.

Messengers

Telegram

Een bot die je met @BotFather aanmaakt, post in een groep, een kanaal of één topic van een groep. Het dashboard zoekt de chat voor je op.

Slack

Een incoming webhook post opgemaakte berichten in elk kanaal.

Microsoft Teams

Een Workflows-webhook post een Adaptive Card met de details en een knop naar het dashboard.

Google Chat

Een webhook van een ruimte post elk event in die ruimte.

Discord

Een serverwebhook post een embed met kleurcode; vermeldingen staan altijd uit.

Mattermost

Een incoming webhook op je cloud- of eigen server.

Chatmeldingen instellen

Automatiseringsplatforms

Zapier

Catch Hook-trigger: zet elke reservering in Google Sheets, elke bestelling in je boekhouding, elk nieuw lid in Mailchimp.

Make

Custom webhook-trigger voor scenario's met routers, filters en meer dan 2.000 apps.

n8n

Webhook-node op n8n Cloud of je eigen server — de gegevens hoeven je infrastructuur nooit te verlaten.

Pipedream

HTTP-trigger voor workflows met je eigen stappen in Node.js of Python.

Automatiseringsplatforms ontvangen dezelfde ondertekende JSON als webhooks. Apps die voor deze platforms zijn gebouwd, kunnen zich via de REST API aan- en afmelden, zodat gebruikers triggers aanzetten zonder een URL te plakken.

Een automatiseringsplatform koppelen

Wat kan de REST API van TapTime?

Genoeg om je eigen rapportage te draaien, een CRM of kassa te synchroniseren of reserveringen vanuit een ander systeem te bevestigen, zonder partnerprogramma of verkoopgesprek. Sleutels maak je aan onder Integraties; ze worden één keer getoond, als SHA-256-hash opgeslagen en met één klik ingetrokken.

Verzoek Geeft terug
GET /v1/company Het bedrijf waartoe de sleutel behoort
GET /v1/company/reservations Reserveringen, gefilterd op status, branchId, from, to of updatedSince; tot 100 per pagina
GET /v1/company/appointments Afspraken met dezelfde filters
GET /v1/company/reservations/{id} Eén reservering, in de vorm van de webhookpayload, met haar attributie
POST /v1/company/reservations/{id}/status Bevestigen, annuleren, als no-show markeren, afronden, plaatsen of heropenen (schrijfsleutels); triggert dezelfde webhooks en conversies
GET /v1/company/orders Bestellingen met regels en totalen, gefilterd op status, source, fulfilment, datum of paidSince
GET /v1/company/loyalty/cards Spaarkaarten van leden; programma's en beloningen hebben eigen lijsten
GET /v1/company/events?after={cursor} Elk reserverings-, bestel- en loyaliteitsevent op volgorde, optioneel alleen bepaalde types; poll met de laatste cursor om synchroon te blijven
POST /v1/company/webhooks Abonneer een URL op events en DELETE haar om af te melden — REST hooks voor apps op Zapier, Make, n8n en Pipedream
Bevestigde reserveringen die sinds een datum zijn gewijzigd
curl "https://api.tapti.me/v1/company/reservations?status=confirmed&updatedSince=2026-09-01T00:00:00Z" \
  -H "Authorization: Bearer tt_live_…"
Synchroon blijven met de eventfeed
curl "https://api.tapti.me/v1/company/events?after=eyJpZCI6OTk4fQ&limit=100" \
  -H "Authorization: Bearer tt_live_…"
Volledige API-referentie Lees de API-handleiding

Welke attributiegegevens worden bij elke reservering opgeslagen?

Elke reservering en afspraak bewaart de campagne die de gast bracht, opgeschoond en opgeslagen op de reservering zelf. Je ziet ze in het detailpaneel van de reservering, samengevat op het dashboard als Waar reserveringen vandaan komen, in CSV- en Excel-exports, en ze gaan mee met elke webhook, elk API-antwoord en elke conversie.

Campagne

  • utm_source
  • utm_medium
  • utm_campaign
  • utm_term
  • utm_content

Klik-id's van advertenties

  • gclid
  • gbraid
  • wbraid
  • fbclid
  • msclkid
  • ttclid
  • click_id / clickid / subid

Analytics-identiteit

  • GA4-client-id
  • GA4-sessie-id per property
  • Meta-cookie fbp
  • Meta fbc (opgebouwd uit fbclid als de cookie ontbreekt)

Context

  • kanaal: web, widget of app
  • landings-URL
  • verwijzer
  • IP-adres en user agent

De gastpagina leest de campagne één keer, op het adres waarop ze werd geopend, bewaart haar 30 dagen, en een later bezoek zonder tags wist haar niet. De laatste campagne telt. Reserveringen die het personeel met de hand invoert en bestellingen die aan de kassa worden aangeslagen, hebben geen campagne, en dat klopt: de gast kwam niet via een link binnen.

Lees de attributiehandleiding

Wat telt als conversie, en wat nooit?

Telt als conversie

  • Een reservering of afspraak die de gast online maakte, op je TapTime-pagina of in de reserveringswidget op je eigen site, zodra ze bevestigd is.
  • Een openstaande aanvraag die je personeel later goedkeurt. De conversie wordt verzonden op het moment van goedkeuren.
  • Een reservering met een Google-klik-id, voor serveruploads naar Google Ads. Reserveringen zonder klik-id worden voor Google overgeslagen, nooit als mislukt gemarkeerd, en gaan nog steeds naar Meta, GA4 en je webhooks.

Telt nooit

  • Reserveringen die je personeel invoerde na een telefoontje of een walk-in. Die hebben geen klik en geen campagne.
  • Een tweede conversie voor dezelfde reservering, hoe vaak ze ook wordt heropend en opnieuw bevestigd.
  • Een geannuleerde reservering of een no-show. Die gaan als webhook- en postbackevents met hun eigen status de deur uit, niet als conversies.

Gebouwd voor bedrijven die voor reserveringen betalen

Koop je klikken die eindigen in een reservering of afspraak? Dan is dit de ontbrekende helft van je advertentieaccount.

Woordenlijst conversietracking

De termen die de platforms gebruiken, op één plek, met wat ze betekenen voor een reservering.

Conversie
Een actie waarvan je een advertentieplatform hebt gevraagd haar te tellen en erop te optimaliseren. Bij TapTime is dat een bevestigde reservering of afspraak die de gast online maakte.
Server-side conversietracking
De conversie vanaf een server rapporteren aan de API van het platform in plaats van vanuit een script in de browser van de gast, zodat ze niet verloren gaat door adblockers, privacyinstellingen of een gesloten tabblad.
gclid, gbraid, wbraid
De klik-id's van Google, toegevoegd aan de landings-URL van de advertentie. gclid is de klassieke; gbraid en wbraid zijn de privacyvriendelijke varianten uit iOS-appcampagnes en webcampagnes. Google Ads kan een geüploade conversie alleen toeschrijven aan een klik die het aan een van deze id's herkent.
fbclid, fbp, fbc
Het klik-id van Meta in de URL, de browser-id-cookie die de pixel plaatst en de klikcookie die uit fbclid wordt opgebouwd. Alle drie helpen de Conversions API om een reservering aan de advertentieklik te koppelen.
Upload van klikconversies in Google Ads
De methode van de Google Ads API (uploadClickConversions) waarmee een server een conversie voor een specifieke klik rapporteert, met het klik-id, tijdstip, de waarde en een order-id dat voor ontdubbeling wordt gebruikt.
ttclid, msclkid
De klik-id's van TikTok en Microsoft, door automatische tagging aan de landings-URL van de advertentie toegevoegd. De TikTok Events API en de Microsoft Conversions API gebruiken ze om een reservering toe te schrijven aan de advertentieklik die haar opleverde.
Meta Conversions API (CAPI)
Het server-to-server-endpoint van Meta voor events. Elk event draagt een event_id; stuurt de pixel hetzelfde event met hetzelfde id, dan houdt Meta er één over.
GA4 Measurement Protocol
Het HTTP-endpoint van Google Analytics 4 voor server-events. Een event wordt aan de sessie van de bezoeker gekoppeld als het het client-id en sessie-id uit de GA-cookies draagt en de sessie minder dan ongeveer 72 uur oud is.
Key event
De naam van GA4 voor een conversie. Een event telt pas als conversie in GA4-rapporten en bij het bieden in Google Ads nadat je het onder Beheer → Events als key event markeert.
Ontdubbeling van events
Eén gedeelde identificatie meesturen met het browserevent en het server-event, zodat een platform dat beide ontvangt één conversie telt.
UTM-parameters
utm_source, utm_medium, utm_campaign, utm_term en utm_content: tags die je aan je eigen links toevoegt, zodat een reservering onthoudt welke post, nieuwsbrief, flyer of partner de gast bracht.
Webhook
Een HTTP-verzoek dat TapTime naar een URL van jou stuurt telkens als er iets gebeurt, met alle details in JSON en een handtekening om het te verifiëren.
Postback (server-to-server-pixel)
Een URL van een advertentienetwerk of tracker die de server van de adverteerder bij elke conversie aanroept, met het klik-id van de tracker en de uitbetaling ingevuld in placeholders.
HMAC-SHA256-handtekening
Een hash met sleutel van de body van het verzoek en een tijdstempel, berekend met een gedeeld geheim. Herbereken je hem aan jouw kant, dan bewijst dat dat het verzoek van TapTime kwam en niet is gewijzigd.
At-least-once-levering
De garantie dat elk event wordt afgeleverd, met als keerzijde dat een nieuwe poging een event twee keer kan afleveren. Daarom draagt elk TapTime-event een id waarmee je duplicaten kunt negeren.
Offline conversie
Een conversie die buiten de browsersessie gebeurt, bijvoorbeeld wanneer het personeel een aanvraag de volgende dag bevestigt. TapTime verstuurt haar op het moment van bevestigen met het oorspronkelijke klik-id.

Inbegrepen. Geen add-on, geen duurder niveau.

Conversietracking, webhooks, postbacks, chatmeldingen, automatisering en de REST API horen bij elke module: reserveringsevents bij Tafelreserveringen vanaf 29 € per maand per vestiging en Afspraken vanaf 39 € per maand per vestiging, bestelevents bij het QR-menu, loyaliteitsevents bij Loyaliteit. Er zijn geen kosten per event en geen limiet op het aantal leveringen.

Elke module heeft een eigen gratis proefperiode van 14 dagen, geen kaart om te beginnen, maandelijkse facturatie, geen contract. Stop je met betalen, dan wordt de module na een korte respijtperiode gepauzeerd; er wordt niets verwijderd.

Vragen die advertentiebeheerders en developers stellen

Verstuurt TapTime conversies vanaf de server of vanuit de browser van de gast?

Allebei. De server verstuurt de conversie op het moment dat de reservering wordt bevestigd, via de Google Ads API, de Meta Conversions API en het GA4 Measurement Protocol. Je browsertag of pixel kan ook vuren; die draagt hetzelfde event-id, dus de platforms tellen één conversie.

Heb ik Google Tag Manager nodig om reserveringsconversies te meten?

Nee. TapTime praat vanaf de server rechtstreeks met Google Ads, Meta en GA4. Tag Manager is alleen nuttig als je andere tools wilt triggeren op het booking_confirmed-event dat de pagina naar de dataLayer pusht.

Wat heb ik van Google Ads nodig om serveruploads aan te zetten?

Een conversieactie, je klant-ID, het ID van de conversieactie (het getal na ctId= in het adres van de actie) en API-toegang: een developertoken, een OAuth-client-id en -geheim, en een refreshtoken. Je bureau of developer kan ze aanmaken. Zonder API-toegang kun je nog steeds de browsertag gebruiken.

Waarom staat er bij een levering ‘Geen Google-advertentieklik bij deze reservering’?

De gast kwam niet via een Google-advertentie binnen, dus de reserveringslink had geen gclid, gbraid of wbraid. Google accepteert alleen geüploade conversies voor klikken die het herkent, dus die reservering wordt voor Google Ads overgeslagen in plaats van opnieuw geprobeerd. Ze gaat nog steeds naar Meta, GA4 en je webhooks.

Hoe koppelt de Meta Conversions API een reservering aan de advertentie?

Met de fbclid uit de link, de browsercookies van Meta (fbp en fbc), het IP-adres en de browser van de gast en, tenzij je Gehasht e-mailadres en telefoonnummer verzenden uitzet, het e-mailadres en telefoonnummer van de gast, gehasht met SHA-256 voordat ze TapTime verlaten.

Hoe rapporteert TapTime reserveringen aan TikTok?

Via de TikTok Events API, vanaf de server, op het moment dat een reservering wordt bevestigd. TapTime plaatst ook je TikTok Pixel op de reserveringspagina, zodat je hem daar niet zelf hoeft toe te voegen. Beide events dragen hetzelfde event-id en TikTok houdt er één over. Voor de koppeling worden de ttclid uit de link, het IP-adres en de browser van de gast gebruikt en, tenzij je het uitzet, hun e-mailadres en telefoonnummer, gehasht met SHA-256.

Wat heb ik nodig om conversies te meten in Microsoft Ads (Bing)?

Het UET-tag-ID is genoeg om te beginnen: TapTime plaatst de tag op je reserveringspagina en vuurt je eventactie als een gast boekt. Voeg het token voor de Conversions API uit de instellingen van de tag toe, en de server rapporteert ook reserveringen die bevestigd werden nadat de gast vertrok, bestellingen van gasten en nieuwe loyaliteitsleden. Microsoft zet de Conversions API per account aan en accepteert alleen events van de afgelopen 7 dagen.

Welke conversiewaarde wordt verzonden?

Bij afspraken de prijs van de dienst. Bij tafelreserveringen de waarde per reservering die je instelt, een gemiddelde besteding, optioneel vermenigvuldigd met het aantal personen. Laat je het leeg, dan worden conversies zonder waarde verzonden.

Tellen reserveringen die mijn personeel invoert als advertentieconversies?

Nee. Alleen reserveringen die gasten zelf online maakten, worden als conversie gerapporteerd. Telefonische reserveringen en walk-ins die het personeel invoert, blazen je advertentieresultaten nooit op. Ze verschijnen wel in exports en op het bord.

Wat gebeurt er als een reservering bevestigd, geannuleerd en opnieuw bevestigd wordt?

Je webhooks en postbacks ontvangen elke wijziging, elk met een eigen event-id en status, omdat je systeem dat moet weten. Google Ads, Meta en GA4 ontvangen één conversie per reservering, nooit meer.

Hoe verifieer ik dat een webhook echt van TapTime komt?

Lees de header TapTime-Signature, die eruitziet als t=1726128000,v1=<hex>. Bereken HMAC-SHA256 over de string t.body met je ondertekeningsgeheim en vergelijk die met v1 via een vergelijking in constante tijd. Weiger het verzoek als ze verschillen of als t ouder is dan je acceptabel vindt.

Kan een webhook naar Zapier, Make of n8n gaan?

Ja. Maak in de tool een catch- of custom webhook aan, plak het adres als endpoint en druk op Test verzenden, zodat de tool de velden leert kennen. De gastgegevens, het tijdstip, de status en de attributie van de reservering staan allemaal in de JSON.

Hoe lang wordt een campagne onthouden vóór de reservering?

30 dagen op het apparaat van de gast. Een gast kan op maandag je menu openen via een Instagram-advertentie en op donderdag boeken; de reservering draagt dan nog steeds die campagne. Een later bezoek zonder tags wist haar niet, en een later bezoek met een andere campagne vervangt haar.

Meet de reserveringswidget op mijn eigen website ook conversies?

Ja. Het embedscript leest de UTM-tags, klik-id's en GA- en Meta-cookies van je site en geeft ze door aan de reservering, zodat een reservering via de widget wordt toegeschreven aan de advertentie die de bezoeker naar je site bracht. Het pusht ook taptime_booking_confirmed naar de dataLayer van je site en kan de eigen GA4- en Meta-tags van je pagina laten vuren.

Is er een rate limit of zijn er kosten per API-aanroep of per webhook?

API-sleutels zijn beperkt tot 50 verzoeken per minuut per sleutel, en een bedrijf kan maximaal 10 actieve sleutels en 20 webhook- of postback-endpoints hebben. Er zijn geen kosten per aanroep, per event of per conversie; alles zit in de abonnementen voor reserveringen en afspraken.

Wat als ik stop met betalen voor de module?

Na een korte respijtperiode wordt de module gepauzeerd en toont de reserveringspagina een melding dat ze tijdelijk niet beschikbaar is. Er wordt niets verwijderd, integraties inbegrepen; betaal opnieuw en de leveringen worden hervat voor nieuwe reserveringen.

Is iets hiervan een apart abonnement?

Nee. Conversies voor Google Ads, Meta en GA4, webhooks, postbacks en de REST API horen bij de module Tafelreserveringen vanaf 29 € per maand en de module Afspraken vanaf 39 € per maand, per vestiging, met een gratis proefperiode van 14 dagen en zonder kaart om te beginnen.

Kan TapTime bestellingen en loyaliteitsaanmeldingen als conversies rapporteren?

Ja. Zet in het onderdeel ‘Wat rapporteren’ van elke koppeling de bestellingen van gasten aan (verzonden als aankoop met waarde en artikelen: GA4 purchase, Meta Purchase of een tweede conversieactie in Google Ads) en nieuwe loyaliteitsleden (GA4 sign_up, Meta CompleteRegistration). Elk wordt één keer per bestelling en één keer per lid en programma verzonden. Verkopen die aan de kassa zijn aangeslagen, worden nooit gerapporteerd.

Hoe krijg ik nieuwe reserveringen en bestellingen in Telegram of Slack?

Open Integraties → Meldingen, kies de messenger, plak het bottoken (Telegram) of de webhook-URL (Slack, Teams, Google Chat, Discord, Mattermost), kies de events en de taal en druk op Test verzenden. Vanaf dan komt elk gekozen event binnen als kort bericht met een link naar het dashboard. Het adres en het token worden versleuteld opgeslagen.

Werkt TapTime met Zapier, Make, n8n en Pipedream?

Ja, zonder plug-in. Maak een catch hook aan in het platform, plak de URL onder Integraties → Automatisering, kies de events en druk op Test verzenden, zodat het platform de velden leert kennen. Elk reserverings-, bestel- en loyaliteitsevent start dan je workflow, ondertekend zoals onze webhooks. Apps kunnen zich ook zelf abonneren via POST /v1/company/webhooks.

Geef je advertenties het enige signaal dat telt: de reservering.

Koppel Google Ads, Meta, TikTok, Microsoft Ads en GA4 in tien minuten, voeg een webhook toe voor je CRM en zie het verzendlogboek vollopen. 14 dagen gratis, zonder kaart, altijd opzegbaar.

14 dagen gratis Geen kaart nodig Altijd opzegbaar

Meet reserveringen als conversies Probeer 14 dagen gratis