IP Allowlists
Add allowed source addresses and reject requests from other addresses.
An IP allowlist is a list of source IP addresses that can send requests to a webhook endpoint. PayloadRelay accepts a request only from an address that matches. A different address receives 403 Forbidden.
How IP allowlists operate#
If an endpoint has an IP allowlist, PayloadRelay examines each inbound request before the authentication, the validation, and the delivery. If the source IP matches no entry, PayloadRelay rejects the request:
- HTTP response:
403 Forbidden - Activity outcome:
IP Blocked(IP_BLOCKED) - The request does not consume monthly quota.
PayloadRelay applies the IP filter to an enabled endpoint only. A disabled endpoint returns 404 for every request, and the source IP has no effect. PayloadRelay gets the source IP from trusted connection data. It ignores an untrusted forwarding header. A client cannot get past an allowlist with a request header.
Before you start#
- Make sure that you can edit the endpoint.
- Use a webhook endpoint. An IP allowlist is not available on an email ingestion endpoint.
Procedure#
1. Open the endpoint security configuration#
- Open the endpoint in the
Endpointspage. - Open the
Securitytab. - Scroll to the
IP allowlistsection.
2. Add allowed IP addresses#
Select Add IP and enter an IP address or a CIDR block:
| Format | Example | Matches |
|---|---|---|
| Single IPv4 | 203.0.113.5 | That one address only |
| IPv4 CIDR | 198.51.100.0/24 | Every address from 198.51.100.0 to 198.51.100.255 |
| Single IPv6 | 2001:db8::1 | That one address only |
| IPv6 CIDR | 2001:db8::/32 | Every address in the prefix 2001:db8 |
3. Configure IP version (optional)#
If your senders use IPv4 only or IPv6 only, you can limit the allowed IP version:
| Version filter | Effect |
|---|---|
Any (default) | Accept IPv4 and IPv6 from the allowed addresses |
IPv4 only | Reject every IPv6 request, also from an allowed address |
IPv6 only | Reject every IPv4 request, also from an allowed address |
4. Save and send a test request#
- Save the endpoint.
- Send a request from an allowed IP. Make sure that Activity shows
Completed(ACCEPTED). - Send a request from an IP that is not in the list. Make sure that Activity shows
IP Blocked(IP_BLOCKED).
Allowlist behavior#
| Scenario | Result |
|---|---|
| The allowlist is empty (default) | PayloadRelay accepts every IP |
| The request IP matches an entry | The request continues to the authentication and the validation |
| The request IP matches no entry | 403 Forbidden, recorded as IP_BLOCKED |
| The endpoint is disabled | 404 for every IP. PayloadRelay does not apply the IP filter. |
Common use cases#
- Server-to-server integrations: allow the static IP of the application server only.
- CI/CD pipelines: allow the IP addresses of the GitHub Actions runners or the Jenkins runners only.
- Compliance rules: allow the known corporate network ranges only.
Monitoring blocked requests#
In Request activity, select Errors and find the IP Blocked (IP_BLOCKED) rows. Expand a row that is not aggregated to see its Originating IP. For a known address, use the exact Source IP filter. An aggregated row does not show one source IP.
Common issues and fixes#
- PayloadRelay blocks my requests: make sure that the allowlist contains the public IP, and not the internal LAN IP. To find the external IP, use
curl ifconfig.me. - The CIDR does not match: make sure that the CIDR notation is correct.
192.168.1.0/24covers.0to.255./32is one address. - PayloadRelay blocks the IPv6 senders: add the IPv6 address or the IPv6 CIDR to the allowlist. You can also set the IP version filter to
Anyin place ofIPv4 only.
Related guides#
- Endpoint Management: the complete endpoint configuration reference.
- Authentication and Secrets: more inbound security controls, with Basic, Bearer, and API key authentication.
- HMAC Inbound Verification: verify a webhook signature from a provider such as GitHub, Shopify, or Stripe.
- Observability: monitor the
IP Blocked(IP_BLOCKED) outcomes in Activity. - Troubleshooting Ingest: diagnose a common inbound error.