This guide explains how to receive and validate webhook events from OfficeMaps.
OfficeMaps webhooks allow your application to receive real-time notifications when events occur in your workspace management system. When an event happens (e.g., a reservation is created or a user checks in), OfficeMaps sends an HTTP POST request to your configured endpoint with the event data.
All webhook payloads are signed using HMAC-SHA256. The signature is included in the X-Signature HTTP header, allowing you to verify that the request originated from OfficeMaps and hasn't been tampered with.
Event Type | Description |
|---|---|
| A new desk or room reservation was created |
| A reservation was cancelled |
| A user checked into a workspace |
| A user checked out of a workspace |
| A user's work status changed (e.g., In Office, Remote, Non Work Day) |
Webhooks are configured in the OfficeMaps admin portal. Navigate to Administration > Settings > Webhooks to access the webhook management page.
The webhooks page displays all configured webhooks in a table format:
Column | Description |
|---|---|
Active | Checkbox indicating whether the webhook is enabled |
Name | The descriptive name for the webhook |
Webhook URL | The endpoint URL that receives webhook events |
Created | Date and time when the webhook was created |
From this view you can:
Click the + Add button to create a new webhook
Click the edit icon (pencil) on any row to modify or delete a webhook
Click Test Webhook to send a test payload to your endpoint
Click the + Add button to open the webhook configuration panel:
Configure the following fields:
Field | Required | Description |
|---|---|---|
Name | Yes | A descriptive name to identify this webhook. Must be unique within your organization. (1-100 characters) |
Webhook URL | Yes | The endpoint URL that will receive webhook events. Must use HTTPS. (Max 2048 characters) |
Secret Key | Yes | The HMAC signing key used to validate webhook signatures. Click Generate to create a random key, or enter your own. Store this securely as it's required for signature validation. (16-256 characters) |
Events to Send | Yes | Select which event types should trigger this webhook. At least one event must be selected. |
Active | No | Enable or disable the webhook. Defaults to enabled. |
Click Save to create the webhook.
To edit an existing webhook, click the edit icon (pencil) on the webhook row. The same configuration panel will open, allowing you to modify any settings.
To delete a webhook, open the edit panel and use the delete option.
OfficeMaps sends webhooks as HTTP POST requests with the following characteristics:
Property | Value |
|---|---|
Method |
|
Content-Type |
|
X-Signature | HMAC-SHA256 signature (lowercase hexadecimal) |
All webhook payloads follow this structure:
All webhook payloads follow this structure:
{
"id": "string",
"type": "string",
"timestamp": "string",
"data": { }
}
Field | Type | Description |
|---|---|---|
| string | Unique event identifier (UUID) |
| string | Event type name (e.g., |
| string | ISO 8601 timestamp when the event occurred (UTC) |
| object | Event-specific payload data |
Triggered when a new desk or room reservation is created.
Field | Type | Description |
|---|---|---|
| string (UUID) | Unique identifier for the person-asset link |
| string (UUID) | ID of the person making the reservation |
| string (UUID) | ID of the reserved asset (desk/room) |
| string | Name of the asset |
| string (ISO 8601) | Reservation start time in UTC |
| string (ISO 8601) | Reservation end time in UTC |
| string (ISO 8601) | Reservation start time in local timezone |
| string (ISO 8601) | Reservation end time in local timezone |
| string | IANA timezone identifier (e.g., |
| string (UUID) | Site/building ID |
| string | Site/building name |
| string (UUID) | Floor/level ID |
| string | Floor/level name |
| string | City |
| string | Region/State |
| string | Country |
| string | Floor name |
| string | Neighbourhood/zone name |
| string | Person's email address |
| string | Person's full name |
| boolean | Whether the reservation is for today |
Triggered when a reservation is cancelled.
Field | Type | Description |
|---|---|---|
| string (UUID) | Unique identifier for the person-asset link |
| string (UUID) | ID of the person who made the reservation |
| string (UUID) | ID of the reserved asset |
| string | Name of the asset |
| string (ISO 8601) | Original start time in UTC |
| string (ISO 8601) | Original end time in UTC |
| string (ISO 8601) | Original start time in local timezone |
| string (ISO 8601) | Original end time in local timezone |
| string | IANA timezone identifier |
| string | Floor/level name |
| string | Floor name |
| string | Neighbourhood/zone name |
| string | Person's email address |
| string | Person's full name |
| string (ISO 8601) | When the reservation was cancelled (UTC) |
| string | Who cancelled the reservation |
Triggered when a user checks into an asset.
Field | Type | Description |
|---|---|---|
| string (UUID) | Unique identifier for the person-asset link |
| string (UUID) | ID of the person checking in |
| string (UUID) | ID of the asset |
| string | Name of the asset |
| string (ISO 8601) | Check-in time in UTC |
| string (ISO 8601) | Check-in time in local timezone |
| string (ISO 8601) | Expected check-out time in UTC |
| string (ISO 8601) | Expected check-out time in local timezone |
| string | IANA timezone identifier |
| string | Human-readable timezone name |
| string (UUID) | Site/building ID |
| string | Site/building name |
| string (UUID) | Floor/level ID |
| string | Floor/level name |
| string | City |
| string | Region/State |
| string | Country |
| string | Person's email address |
| string | Person's full name |
| string | Person's first name |
| string | Person's last name |
| boolean | Whether check-in was from a prior reservation |
Triggered when a user checks out of an asset.
Field | Type | Description |
|---|---|---|
| string (UUID) | Unique identifier for the person-asset link |
| string (UUID) | ID of the person checking out |
| string (UUID) | ID of the asset |
| string | Name of the asset |
| string (ISO 8601) | Check-out time in UTC |
| string (ISO 8601) | Check-out time in local timezone |
| string (ISO 8601) | Original check-in time in UTC |
| string (ISO 8601) | Original check-in time in local timezone |
| string | IANA timezone identifier |
| string | Human-readable timezone name |
| string (UUID) | Site/building ID |
| string | Site/building name |
| string (UUID) | Floor/level ID |
| string | Floor/level name |
| string | City |
| string | Region/State |
| string | Country |
| string | Person's email address |
| string | Person's full name |
| string | Person's first name |
| string | Person's last name |
Triggered when a user's work status changes.