Skip to main content

Webhooks

Automatically receive real-time notifications as soon as specific events occur in anny.

Lea Fendler avatar
Written by Lea Fendler
Updated over 3 weeks ago

Webhooks enable your application to be instantly informed about events occurring in your booking system. Rather than regularly polling our API for new data, anny automatically pushes relevant information directly to your application in real-time, making your integrations faster and more efficient.

What are Webhooks?

Webhooks are HTTP-based callbacks automatically sent by anny to your application when specific predefined events occur. Consider webhooks as "reverse API calls"– instead of your app constantly requesting updates from us, we proactively notify you as soon as something important happens.


Setting up a webhook

To set up a webhook:

  • In your anny Admin Area, click your user avatar and open Account Settings, then select the tab API.

  • Click on + Create Webhook.

  • Enter the following details:

    • Name: Choose a meaningful descriptive name (e.g. "CRM Integration").

    • URL: Enter the endpoint URL on your server to which anny should send event notifications.

    • Events: Select the event(s) that should trigger notifications to your endpoint.

Example Configuration

{
"name": "My CRM Integration",
"url": "https://api.myapp.com/webhooks/bookings",
"events": ["bookings.created", "bookings.updated"]
}

Available Events

anny supports webhooks across four different event categories:

Booking Events

Event

Description

bookings.created

New booking created

bookings.updated

Booking details modified

bookings.started

Booking has started

bookings.ended

Booking has ended

bookings.checked-in

Customer has checked in

bookings.checked-out

Customer has checked out

bookings.deleted

Booking was deleted or cancelled

Order Events

Event

Description

orders.created

New order created

orders.updated

Order details updated

orders.deleted

Order cancelled or deleted

Invoice Events

Event

Description

invoices.created

Invoice created

invoices.finalised

Invoice finalised

invoices.updated

Invoice updated

invoices.deleted

Invoice deleted or voided

Customer Events

Event

Description

customers.created

New customer registered

customers.updated

Customer profile updated

customers.deleted

Customer account deleted

Event Filtering (Context Restrictions)

Optional – available only for booking events

Context restrictions allow you to limit the webhooks you receive to specific resources, categories, or services:

  • First select booking events.

  • Activate With restrictions within the event group.

  • Select your preferred type of filter:

    • Resources (e.g. specific rooms, equipment)

    • Resource groups

    • Resource categories

    • Services

    • Service groups

Common Examples:

  • Webhook notifications limited to spa services only ("Service group: Spa Services").

  • Notifications limited to certain meeting rooms only.

  • Notifications limited to online bookings ("Service group: Online Booking").


Webhook Payload Structure and Data

Each webhook contains structured information related to the event:

{
"event": "bookings.created",
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"webhook_id": "01H8EXAMPLE123",
"triggered_at": "2024-01-15T14:30:00Z",
"data": {
"id": "1764",
"code": "!TIXWaEKmLAW8JN8bjRf",
"type": "bookings",
"number": "BB533155102",
"status": "accepted",
"total": 0,
"currency": "EUR",
"service": {
"id": "1",
"name": "Tages-Buchung",
"type": "services",
"price": 0,
"currency": "EUR"
},
"customer": {
"id": "2fa9ab69-abd5-45ec-9927-c4894fbf60a2",
"uuid": "2fa9ab69-abd5-45ec-9927-c4894fbf60a2",
"email": "00ufvv@ptct.net",
"full_name": "John Keats",
"given_name": "John",
"family_name": "Keats"
},
"resource": {
"id": "18",
"name": "Schreibtisch 4",
"type": "resources",
"timezone": "Europe/Berlin"
},
"start_date": "2025-06-13T07:00:00+00:00",
"end_date": "2025-06-13T16:00:00+00:00",
"created_at": "2025-06-07T12:54:38+00:00",
"description": "John Keats"
}
}

Key Fields

Field

Description

event

The type of event that occurred

event_id

Unique identifier for this webhook delivery

webhook_id

Your webhook subscription ID

triggered_at

Timestamp of when the event occurred

data

The complete data object of the entity that triggered the webhook


Security

Webhook Signatures

Optionally, you can activate webhook signatures to verify incoming webhook requests as authentic ones from anny. When enabled, the signature will be transmitted in the HTTP header "Signature".


Troubleshooting

Webhook Call History

Monitor all webhook deliveries comfortably in real time through the webhook management interface. The following statuses can occur during webhook deliveries:

Status

Meaning (HTTP Codes)

Explanation

Success (200-299)

The webhook was successfully delivered.

Failed (400+)

Delivery failed – check the response details of your server.

Pending

Webhook is queued and will be delivered shortly.

🔄

Retry

Manual retry of a previously failed webhook delivery.

Viewing Request and Response Details

Click on a specific webhook delivery in the Call History to see:

  • The complete sent request (Payload)

  • Your server’s response message

  • HTTP status code from your server

  • The total number of delivery attempts made


Handling Failed Webhooks (Retry functionality)

Automatic retries

Failed webhook deliveries are automatically retried up to 3 times, with an increasing delay interval between attempts (exponential backoff).

Manual retries

In addition, you can manually retry failed webhook deliveries once:

  • Go to Webhooks → Call History.

  • Find the failed webhook delivery.

  • Click on the Retry button. (This is only possible once per webhook delivery attempt.)

  • Monitor the new delivery attempt in real time.


Managing Webhook Subscriptions

Enabling/Disabling Webhooks

You can activate or deactivate webhook subscriptions at any time, without losing their configuration.

Automatic Deactivation after Repeated Failures

To avoid unnecessary load and protect your server, anny automatically disables webhook subscriptions after 5 consecutive failed delivery attempts.

The number of consecutive failures is stored in the subscription's failure_count attribute.


Common Integration Patterns

CRM Customer Synchronization

{
"name": "CRM Customer Sync",
"url": "https://api.mycrm.com/webhooks/customers",
"events": ["customers.created", "customers.updated"]
}

Booking Notifications (e.g., SMS Alerts)

{
"name": "SMS Booking Alerts",
"url": "https://api.smsservice.com/webhooks/bookings",
"events": ["bookings.created", "bookings.updated", "bookings.checked-in"],
"restrictions": [
{
"type": "services",
"id": "high-value-services-group"
}
]
}

Analytics Integration

{
"name": "Analytics Tracking",
"url": "https://analytics.myapp.com/webhooks/events",
"events": ["bookings.created", "bookings.ended", "invoices.finalised"]
}

Troubleshooting Webhooks

Webhook Not Receiving Any Events

  • Confirm that your webhook subscription is active.

  • Ensure the provided webhook URL is publicly accessible.

  • Verify that your server returns an HTTP response status code in the 200 range upon successful acceptance of webhook payloads.

  • Double-check whether context restrictions are set too narrowly. Adjust or remove restrictions as needed.

High Failure Count

  • Verify that your webhook endpoint URL is correct.

  • Review your server logs for error messages or troubleshooting clues.

Duplicate Events

  • Use the webhook's event_id to detect duplicate webhook deliveries and ensure each event is processed only once (idempotency).

  • Check if multiple duplicate webhook subscriptions exist.

  • Implement technical safeguards (e.g., unique constraints in your database) to prevent duplicate processing of webhook events.


Getting Support with Webhooks

If you need assistance setting up or managing your webhooks:

  • First, check the webhook Call History for details on failed webhook calls.

  • Review your own server logs for errors regarding the webhook endpoints.

  • Contact our support team with the following information:

    • Webhook subscription ID

    • Exact error messages or problem description

    • Date and time since the issue started occurring



Did this answer your question?