Webhooks will only be delivered to accounts set as
Admin or Developer roles within the Dashboard.Example webhook payload
When a domain has been added by a user, Entri sends the following webhook payload:Webhook payload breakdown
The webhook payload includes several fields with nested objects, depending on the type of event. Below is a complete description of each key and value.Top-Level fields
id: A unique identifier for the webhook event (e.g."1234567890-abcdefg-1234567890").user_id: The ID of the user who initiated the domain-related action (e.g."your-provided-user-id").domain: The domain involved in the event (e.g."example.com").subdomain: The subdomain associated with the event, if any (e.g."shop").provider: The domain’s provider associated with the event (e.g."cloudflare").
Examples of key and value pairs
"type": "domain.added": An event type indicating that a domain has been added."propagation_status": "pending": DNS record propagation is still in progress."secure_status": "success": SSL configuration completed successfully."power_status": "failed": The advanced feature configuration process has failed."cname_target": "my.saascompany.com": The CNAME target for Entri Power or Secure configuration.
Webhook updates
If any part of the webhook object is updated, subsequent webhooks will include ALL fields. Example update:Propagation retries
If the DNS records are not fully propagated on the first attempt, Entri will retry every 10 seconds for the first 2 mins, and then at increasing intervals (1 minute, 2 minutes, 4 minutes, 8 mins, …etc). This process will continue for up to 72 hours. After 72 hours, if the records are still not propagated, a webhook with"type": "domain.propagation.timeout" will be sent.
Connection failures retries
Webhooks automatically retries up to 3 times if something goes wrong. If all 3 retries fail, a warning email will be sent (limited to 1 per day).DKIM status notes
Thedkim_status field is set to exempt if:
- The user does not use Google or Microsoft email providers.
- The
Enable support for DKIMsetting is disabled for yourapplicationId.
Overview and Webhook Structure
Included in all tiers.
"User-Agent": "Entri-Webhook".
This is the list of keys you will receive on a webhook notification:
JSON
Webhook Management Endpoints
These endpoints are designed to help partners retrieve or re-trigger webhook events programmatically. Each request requires a valid jobId, which can be captured from theonSuccess browser event.
Trigger propagation re-check (async)
When this endpoint is called, Entri performs an immediate DNS propagation re-check for the specified Connect flow and delivers the latest result via webhook. The endpoint is still asynchronous: it only confirms that the check was queued; the propagation result is sent exclusively through the webhook, and no continuous propagation checks happen after this manual re-check.Tip: ThejobIdrequired for this endpoint can be obtained from theonSuccessbrowser event once the flow finishes successfully.
Alternative UI-based option
This action can also be triggered directly from the Customer Dashboard, under the Webhook logs section. In front of each log, users will find the “Check propagation again” button, which performs the same propagation re-check as this endpoint.Headers
Path Parameters
Request Body
None. All inputs are provided via path parameters and headers.Response
- 202 Accepted if the re-check was queued successfully.
Webhook behavior
- Performs one immediate propagation re-check and sends a webhook with the latest propagation status; no continuous propagation retries follow this manual re-check.
- Includes
"manual_retry": truein the webhook body. - Follows the standard delivery policy with up to 3 attempts if the receiver is unavailable.
- Logs a new webhook attempt entry; existing webhook logs are not overridden.
- Uses the same execution codepath as the private Dashboard action for this functionality.
Cooldown
To avoid abuse and accidental hot-polling, this endpoint can be called once every 5 minutes per job.If called sooner, it returns:
- 429 Too Many Requests with message:
"You can only trigger the check once every 5 mins"
(Servers may also includeRetry-After: 300.)
Error Responses
Example cURL
Get last webhook by job ID
This endpoint allows you to retrieve the last webhook event sent for a specific Connect flow, based on thejob_id. It is useful for debugging or validating the final propagation result of a specific domain connection.
Tip: You can obtain thejobIdvalue directly from theonSuccessbrowser event, which is triggered when the user reaches the Congratulations screen.
Headers
Path Parameters
Sample Response
Error Responses
Notes
- This endpoint is read-only and returns the last logged webhook event associated with the provided job_id.
- It retrieves data from the webhook logs table and does not resend or trigger new webhooks.
- Only returns the most recent webhook entry for that job.
Provider Health
Returns the status of all the providers for an application ID that Entri supports.Response body
JSON
Entri Webhook Signature Verification
Enforcing Webhook Source IP (Optional)
All webhook requests from Entri are now sent from a fixed static IP address:3.14.77.245
For an additional layer of security, you may allow webhook traffic only from this IP within your firewall, API gateway, or reverse proxy. This ensures that only Entri can reach your webhook endpoint, even before signature validation occurs, providing a strong network-level safeguard against unauthorized requests.
The fixed IP address (
3.14.77.245) applies only to production webhook deliveries. The Dashboard webhook tester does not originate from this IP address. If you are testing webhooks using the Dashboard tester, you must temporarily disable IP allowlisting or your endpoint may reject the request.Signature Timestamp Header
TheEntri-Timestamp header contains the Unix timestamp (in seconds) for when the webhook was generated. It is used by both Signature V2 and Signature V3 verification. This enables servers to enforce freshness windows and reject replayed requests.
Signature Verification Methods
Entri sends all three signature headers on every webhook request — they are additive and do not replace each other. You may verify any or all of them; we recommend verifying at least V3 for new integrations.Signature V3 (Recommended)
Entri-Signature-V3 uses true HMAC-SHA256 (RFC 2104). It provides two security improvements over V1 and V2:
- Body binding: the HMAC is computed over the raw HTTP request body, so any tampering with the payload invalidates the signature. V1 and V2 sign only identifiers and timestamps, not the body contents.
- Replay protection: the
Entri-Timestampvalue is embedded in the signed message, so a captured valid request cannot be replayed after 300 seconds.
Header value format
How to verify
- Read
Entri-Timestamp. Reject the request ifabs(now - timestamp) > 300seconds. - Build the signed payload by concatenating: the timestamp string, a literal
., then the raw HTTP request body bytes. - Compute
HMAC-SHA256with yourclient_secretas the key over that payload. - Hex-encode the result and prepend
sha256=. - Compare to the
Entri-Signature-V3header value using a constant-time comparison.
Verification examples
Entri-Signature (V1) and Entri-Signature-V2 continue to be sent alongside V3. Existing integrations that verify V1 or V2 will keep working without any changes. V3 is purely additive — add it to new integrations and migrate existing ones at your convenience.Signature V2
Entri-Signature-V2 adds timestamp binding to V1, making each signature unique and time-bound. It is computed as SHA256(webhook_id + timestamp + client_secret) with no separators between the values.
The V2 signature is a plain SHA-256 digest of
webhook_id ‖ timestamp ‖ client_secret. It is not an RFC 2104 HMAC-SHA256. Placing the secret at the end of the input avoids the length-extension weakness of the H(secret ‖ msg) construction.How to verify
- Read the webhook payload’s
idfield. - Read the
Entri-Timestampheader (epoch seconds). - Build the canonical message:
webhook_id + timestamp + client_secret(concatenated, no separators). - Compute
SHA256(canonical_message)and hex-encode it. - Compare the result to the
Entri-Signature-V2header using a constant-time comparison. - Enforce a freshness window (for example, 5 minutes) using the timestamp.
Verification example (Python)
Signature V1 (Legacy)
Entri-Signature is the original signature, computed as SHA256(webhook_id + client_secret). It does not include a timestamp, so it provides no replay protection.

