Skip to main content
A destination is an HTTPS URL that gets events from a project. Each destination has its own queue, attempts and log.

Add a destination

Open Destinations → Add destination in your project.

The request that hooksnode sends

hooksnode builds the headers in this order. A later step replaces a header of the same name.
  1. The headers of the incoming request, except the ones listed in Destination rules.
  2. The destination’s extra headers.
  3. X-Hooksnode-Source-Id: <source-id>.
  4. X-Hooksnode-Signature: sha256=<hex>, if signing is on.

Destination rules

hooksnode only delivers to public endpoints. A refused URL is rejected when you save it, and again when an event is sent. The error names the cause and what to change. It does not include a resolved IP address or the response body.

Allowed ports

Ports below 1024, other than 80 and 443, are refused. A public address may use any allowed port. Service ports are refused only when the address is private, internal, a metadata address, on Hooksnode’s own network, or listed in HOOKSNODE_DENY_CIDRS.

Addresses

These addresses are refused:
  • Private and internal ranges, including loopback, link-local, carrier-grade NAT and cloud metadata addresses.
  • localhost and names that end in .localhost.
  • Addresses that belong to Hooksnode’s own network.
Use a public hostname that resolves to a public IP. If the hostname does not resolve, check it for a typo and try again after DNS updates.

Headers that are not forwarded

hooksnode does not copy these headers from the incoming request:
  • Cookie
  • Authorization
  • X-Forwarded-* (every header whose name starts with X-Forwarded-)
It also does not copy Forwarded, X-Real-IP, Proxy-* or inbound X-Hooksnode-* headers. hooksnode sets X-Hooksnode-Source-Id and, when signing is on, X-Hooksnode-Signature itself. If your endpoint needs Authorization, Cookie or an X-Forwarded-* header, add it under Destination → Extra headers. See Extra headers. When an incoming request had an Authorization header and the destination did not set one, that delivery shows a note telling you to add it.

/proxy is removed

POST /proxy/:userID is removed. It returns 410 Gone with instructions to move. Send events to your source URL instead:
The default source of a project uses the project’s id. See Webhook source.

Success and failure

  • A 2xx response is a success. hooksnode stores up to 1 MiB of the response body.
  • Anything else is a failed attempt. See Retries.

Test before you save

The destination editor has a Test panel. Paste a sample body. hooksnode runs your transform and filter and shows the output, whether the filter matched, and any error. Nothing is sent.

Health checks

Every 15 minutes, hooksnode sends a HEAD request to each destination, with a 5 second timeout. A 5xx or no answer is unhealthy. A 4xx is degraded. Anything else is healthy.

Limits