Overview

doo provides an event-driven API that allows synchronizing doo resources to external systems using webhooks. Each time a resource is changed, doo will call the respective API endpoint of the external system.

Basic webhook flow

  1. A user change resource in doo, which fires one or more webhooks

  2. For each webhook, if an external webhook API endpoint has been configured:

    1. doo authenticates with the external authorization endpoint to retrieve an access token;

    2. doo sends a webhook request to the external endpoint with the resource in its payload;

    3. external system processes webhook payload.

Typical system setup

A typical integration scenario consists of the customer's Content Management System (CMS), which uses doo widgets to enable attendees to book, and the customer's Customer Relationship Management (CRM) as an external system, which provides endpoints for doo webhooks.


2. Setup guide

If webhooks are part of your doo package, please follow the checklist below and provide the necessary details to your operational doo counterpart or to support@doo.net:

  1. Contact doo

    1. (optional) we will provide you a test account and set up webhooks with an https://requestb.in integration (or any other similar service). In this way, you will be able to check how the webhooks work and see all the real payload from them

  2. Implement OAuth endpoint to secure your endpoints and allow doo to authorize with your system before sending webhooks (optional, more)

    1. Provide <client_secret>

    2. Provide OAuth endpoint URL (<external_oauth_endpoint_url>)

  3. Implement endpoints to receive webhook payload for each needed entity and trigger (more)

    1. Provide a list of required triggers and endpoint URLs for them (e.g. <trigger_name> - <external_webhook_endpoint_url>)


3. Technical specification

3.3. Webhook endpoints (to be provided by an external system) 

The payload which doo will send with each webhook request depends on the entity: 

3.4. Webhook payload

3.4.1 Entity identification

Use these IDs in order to identify if a webhook refers to the same entity:

Event

Order

Attendee

3.4.2 Entity statuses

Event

Order

Attendee

3.4.3 Entity data

Order

Notes:

  1. If you have an event with only booker-level questions (and no attendee-level questions), all details and answers will be returned in "order_details" and "buyer_answers". "order_details → attendees" will be empty except for an "id", "status" and a "ticket" object.

  2. If you want to retrieve the answer of a buyer or an attendee to a specific question, look for the answer object with the relevant "question" value (string-match the question value)

Event

3.6. Binding to entities from an external system 

doo supports binding its entities to entities from the external system:

  1. Event from doo can be bound to a user from an external system

  2. Booker from doo can be bound to a customer from an external system

    1. A customer ID can be passed from the external CRM to doo via prefill in the widget snippet or through doo email campaigns (see more details in Widgets)

      1. doo will pass the ID back to the external system in webhooks (OrdersIdGetResponse object, external_customer_id in the root scope of the JSON object)

To get more information about bindings, contact doo (kundenservice@doo.net)