Skip to main content

Webhooks

Webhooks deliver real-time notifications to your server infrastructure the moment changes occur in etg24 — eliminating resource-intensive polling. Subscribe once to keep external databases, CRMs, and messaging systems synchronized with your portfolio.

Discovering supported event types

The event catalogue expands dynamically as platform features evolve. Rather than maintaining brittle hardcoded lists, query active event types dynamically via API:

Terminal window
curl -s "https://api.etg24.de/propertymanagement/v2/query/webhooks.eventTypes" \
-H "Authorization: Bearer YOUR_API_KEY"

Webhooks cover lifecycle events (created, updated, deleted) across all primary entities:

  • Properties (properties.object.*)
  • Units (properties.unit.*)
  • Contacts (contacts.*)
  • Documents (documents.*)

Configuring a webhook

Webhooks can be registered via the etg24 app settings or programmatically using the command endpoint:

Terminal window
curl -s -X POST "https://api.etg24.de/propertymanagement/v2/command/webhooks.create" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhook": {
"name": "CRM Sync Listener",
"url": "https://api.example.com/webhooks/etg24",
"eventTypes": ["contacts.created", "contacts.updated"],
"authorizationHeader": "Bearer secret-token-from-your-receiver"
}
}'

To list, inspect, or delete webhooks, refer to the Property Management v2 reference.

Event payload format

When a subscribed event fires, etg24 sends an HTTP POST request to your configured webhook URL with Content-Type: application/json. A typical event payload:

{
"id": "evt_01J8K4N5P6Q7R8S9T0UVWXYZ",
"eventType": "properties.unit.updated",
"timestamp": "2026-03-24T14:45:00.000Z",
"tenantId": "ten_01J8K1...",
"data": {
"unitId": "unt_98765432-1234-abcd-ef01-23456789abcd",
"propertyId": "obj_12345678-abcd-1234-5678-abcdef123456",
"unitNumber": "WE 04",
"floor": 2,
"status": "vacant"
}
}

Security & verification

To verify that inbound webhook requests originate from etg24:

  1. Provide a custom secret via authorizationHeader during webhook creation.
  2. Validate that every inbound request to your server carries this exact header value before processing the payload.
  3. Reject any requests missing the required header with an immediate 401 Unauthorized.

Architecture alignment with CQRS

Webhooks integrate seamlessly with our CQRS model:

  • Events are the notification layer: They notify your system that a state change happened.
  • Queries & Commands are the action layer: Upon receiving an event, your integration can fetch extended context via Queries or trigger downstream updates via Commands.