Three ways to connect TapTime to other systems, all under one heading. Only the company owner can manage them. For chat alerts and Zapier, Make, n8n or Pipedream, see their own guides — they use the same events.
Panel Integrations Webhooks & API
| Use | When |
|---|---|
| Webhook | Your own system or a CRM should hear about every booking, order or loyalty change, with all the details. |
| Postback | An ad network, affiliate or tracker gave you a postback URL to call on each conversion. |
| REST API | Your system wants to fetch bookings when it likes, or confirm and cancel them. |
Events you can send
| Event | When |
|---|---|
| booking.requested | A guest asked for a booking that waits for your confirmation |
| booking.confirmed | A booking is confirmed |
| booking.cancelled | The guest or the venue cancelled |
| booking.no_show | The guest did not come |
| booking.completed | The visit is over |
| order.placed | A guest’s order reached you (from your page or a table’s QR code) |
| order.paid | Any order was paid, including at the register |
| loyalty.member_joined | A customer got their first stamp on a program |
| loyalty.stamp_added | A stamp was added |
| loyalty.reward_issued | A card was completed and its reward issued |
| loyalty.reward_redeemed | A reward was handed over |
Webhooks
-
1
Add webhook
Paste your endpoint’s https address and choose the events — bookings, orders, loyalty, or all of them.
-
2
Send test
A sample event goes out straight away, and the answer your endpoint gave is shown.
-
3
Verify the signature
Every request has a TapTime-Signature header: t=<time>,v1=<HMAC-SHA256 of “t.body” with your signing secret>. Compare it before trusting the request.
The body is JSON: the event id, type and time, and the whole booking, order or loyalty card under data.booking, data.order or data.loyalty — with the guest, the time, the table, service or items, the status, and where it came from (UTM tags and click ids).
- Answer with any 2xx status. Anything else is retried 8 times over about a day.
- Each event has an id: if you receive it twice, ignore the second.
- Answer 410 Gone and TapTime stops retrying that event.
- Redirects are not followed, and addresses on private networks are refused.
Server-to-server postbacks
Paste the postback URL your tracker gave you and click placeholders to insert booking details, for example https://tracker.example/postback?cid={click_id}&payout={value}&status={status}. Available placeholders include {click_id}, {event}, {booking_id}, {value}, {currency}, {party_size}, {utm_source}, {utm_campaign}, {gclid} and {fbclid}. The tracker’s click id reaches the booking when your booking link carries click_id, clickid or subid.
REST API
-
1
Create API key
Give it a name and choose read only, or read and write to allow confirming, cancelling and marking no-shows.
-
2
Copy it now
The key is shown once. Store it on your server — never in a web page or an app.
-
3
Call the API
Send it as Authorization: Bearer <key> to https://api.tapti.me/v1/company.
| Request | Returns |
|---|---|
| GET /v1/company | The company the key belongs to |
| GET /v1/company/reservations, /appointments | Bookings, filtered by status, branchId, from, to or updatedSince, 100 per page |
| GET /v1/company/reservations/{id} | One booking |
| POST /v1/company/reservations/{id}/status | Change the status (write keys) |
| GET /v1/company/orders, /orders/{id} | Orders with their items and totals, filtered by status, source, fulfilment, from, to or paidSince |
| GET /v1/company/loyalty/programs, /cards, /rewards | Loyalty programs, members’ cards and the rewards they earned |
| GET /v1/company/events?after={cursor} | Every booking, order and loyalty event in order — poll it to stay in sync; add type=order,loyalty for only some |
| POST /v1/company/webhooks, DELETE /v1/company/webhooks/{id} | Subscribe a URL to events and unsubscribe it — what Zapier, Make, n8n and Pipedream apps use |
When something fails
Each endpoint’s Delivery log lists its last 25 deliveries with the status code and the answer your system gave. Failed deliveries retry on their own; “Send again” retries one now.
Frequently asked
Can a webhook go to Zapier or Make?
Yes — use Integrations → Automation, which checks the address belongs to the platform and shows its own steps. Create a “Catch hook” (Zapier), a “Custom webhook” (Make), a Webhook node (n8n) or an HTTP trigger (Pipedream), paste its address and press Send test so the tool learns the fields.
I lost my signing secret.
The owner can reveal it again from the endpoint, or rotate it. Rotating issues a new one at once, and the old one stops working.
Thank you — that helps us make these guides better.
Write to us and quote the page you were on. A person reads every message and answers in the language you wrote in.
Write to us