Sources

A source is a representation of a service that sends HTTP requests to the Hookdeck Event Gateway. For example, a third-party service sending webhooks, such as Shopify and Stripe, or an internal service making an HTTP request to distribute an event to other services, external or internal.

How sources work

Each source is given a unique Hookdeck URL that can be pasted into the HTTP or webhook URL field of the sender platform, or used within code when making the HTTP request.

Once HTTP requests are received by Hookdeck via the source URL, events are ingested and routed according to your connection rules.

Hookdeck is a platform for asynchronous messaging and therefore returns a basic customizable synchronous HTTP response to the client that has invoked the source URL. It is not possible to synchronously return a response from a destination to the client (for example, the result of an API call). However, you can use an asynchronous workflow to achieve this and send the result of any work done by a destination via a webhook callback.

Source Types

Source Types help you quickly configure sources for specific platforms and services. When you select a Source Type, Hookdeck automatically sets up the appropriate configuration including authentication methods, required headers, and response formats commonly used by that platform.

For example, selecting the "Stripe" Source Type will automatically configure the source to handle Stripe's webhook signature verification and respond with the expected 200 status code.

Source Types include popular platforms like:

Content-types

Hookdeck aims to be compatible with every API provider and with common HTTP event payloads. To accomplish this, we remain platform-agnostic and ingest requests (up to 10 MiB) with one of the following content-types:

  • text/plain
  • text/xml
  • application/json
  • application/x-www-form-urlencoded
  • application/xml
  • application/*+json

If you encounter a problem integrating a specific API provider, send us a message.

Create a source

Creating a source allows Hookdeck to begin receiving and routing events sent from a specific origin.

Steps:

  1. Follow the instructions for creating a connection.
  2. When configuring the source, select the appropriate Source Type from the dropdown.
  3. Configure any additional settings specific to your chosen Source Type.

POST Request Example

{
  "name": "something-else"
}

Response Example

{
  "code": "RESOURCE_ALREADY_EXISTS",
  "status": 409,
  "message": "Resource already exists",
  "data": {
    "id": "src_v5lfi6g0iqsm38",
    "resource_type": "source"
  }
}

Custom methods

POST, PUT, PATCH, and DELETE requests are accepted by default. GET requests are not accepted by default, but you can enable them in the Advanced Source Configuration section when creating or updating your sources.

Example of enabling GET method

?x-hookdeck-allow-methods=get

Custom responses

Hookdeck supports setting custom responses to satisfy specific requirements of different API vendors. You can use query string parameter to explicitly customize the response.

Response Query parameter example Behavior
Empty ?x-hookdeck-response=null Hookdeck responds with an empty body
Text ?x-hookdeck-response[text]=Hello+World Hookdeck responds with the text Hello World
JSON ?x-hookdeck-response[json]=... Hookdeck responds with the specified JSON

Add source authentication

Requests can optionally be authenticated. While Source Types come with recommended authentication settings, you can customize these as needed. Hookdeck supports basic auth methods to cover the majority of authentication providers.

Steps:

  1. Open the Connections page.
  2. Click the source you want to authenticate.
  3. Toggle the Source Authentication switch and select the authentication method from the dropdown.
  4. Enter the required information.
  5. Click Save.

Edit a source

Editing a source lets you change the name of a source in your project.

Steps:

  1. Open the Connections page.
  2. Click the source you want to edit.
  3. Edit the source and click Save.

PUT Request Example

{
  "name": "shopify"
}

Response Example

{
  "id": "src_qa5626p6y5o79b",
  "team_id": "tm_lbhzBKgFOUnB",
  "updated_at": "2026-01-14T13:36:41.934Z",
  "created_at": "2026-01-14T13:35:55.226Z",
  "name": "shopify",
  "description": null,
  "type": "WEBHOOK",
  "config": {
    "allowed_http_methods": ["POST", "PUT", "PATCH", "DELETE"],
    "custom_response": null,
    "auth": null,
    "auth_type": null
  },
  "disabled_at": null,
  "url": "http://localhost:8787/qa5626p6y5o79b",
  "authenticated": false
}

Disable a source

Disabling a source temporarily halts inbound requests at the associated Hookdeck URL.

Steps:

  1. Open the Connections page.
  2. Click the source you wish to disable.
  3. Click Disable Source.

PUT Request Example

{
  "id": "src_qa5626p6y5o79b",
  "team_id": "tm_lbhzBKgFOUnB",
  "updated_at": "2026-01-14T13:36:41.948Z",
  "created_at": "2026-01-14T13:35:55.226Z",
  "name": "shopify",
  "description": null,
  "type": "WEBHOOK",
  "config": {
    "allowed_http_methods": ["POST", "PUT", "PATCH", "DELETE"],
    "custom_response": null
  }
}

Enable a source

Enabling a source returns that source to its previously active state.

Steps:

  1. Open the Connections page.
  2. Click the disabled source you wish to enable.
  3. Click Enable Source.

PUT Request Example

{
  "id": "src_qa5626p6y5o79b",
  "team_id": "tm_lbhzBKgFOUnB",
  "updated_at": "2026-01-14T13:36:41.959Z",
  "created_at": "2026-01-14T13:35:55.226Z",
  "name": "shopify",
  "description": null,
  "type": "WEBHOOK",
  "config": {
    "allowed_http_methods": ["POST", "PUT", "PATCH", "DELETE"],
    "custom_response": null
  }
}

Delete a source

Deleting a source permanently disables inbound requests at the associated Hookdeck URL. Hookdeck will return an HTTP 410 status code for any request received on your Source URL.

Steps:

  1. Open the Connections page.
  2. Click the source you wish to delete.
  3. Click Delete Source.

DELETE Request Example

{
  "id": "src_qa5626p6y5o79b"
}

Once a source has been deleted, it will disappear from your list of sources.