The Log events webhook can be used to send logs relating to actions and challenges to a custom destination. This allows later analysis using third party SIEM, data lakes, or custom tooling.Documentation Index
Fetch the complete documentation index at: https://docs.authsignal.com/llms.txt
Use this file to discover all available pages before exploring further.
Delivery behavior
Webhooks expect a200 OK response for successful requests.
Events are sent in batches of up to 500 events. If event delivery fails, delivery will be periodically retried until success.
Delivery is asynchronous, and will be delivered after a delay based on your tenant’s challenge token duration (typically 15 minutes).
The webhook adheres to at-least-once delivery. This means that event delivery may be duplicated, and your webhook may need to de-duplicate events. Use the id in the metadata to de-duplicate events.
Configuration
To configure a webhook URL for log events, navigate to the general settings for your tenant in the Authsignal Portal.Verifying webhook events
It is critical to verify that incoming requests to your webhook have been sent by Authsignal and to reject any unauthorized requests. The recommended approach to verify webhook events is to use an Authsignal Server SDK to handle the incoming request.X-Signature-V2 header to the SDK, it will verify that the request is valid and construct the event to be handled.
Delivery schema
Batches of events are sent as a list of event records, with up to 500 events in one batch:Event metadata
A unique identifier for the event.
The source of the event. This is always
https://authsignal.com.The time the event was created in ISO 8601 format.
The type of the event. Each type has a different schema for the
data field.The version of the event.
The ID of the tenant that the event is intended for.
The event-specific data. See below for the schema of the
data field for each event type.Event schema
Action log created
The ID of the tenant that the action occurred within.
The ID of the user that the action was triggered by.
The action being evaluated (e.g.
login, withdrawal).Unique per action instance.
When the action was first evaluated.
When the action record was last updated.
Final action state — e.g.
ALLOW, BLOCK, CHALLENGE_REQUIRED, CHALLENGE_SUCCEEDED, CHALLENGE_FAILED, REVIEW_REQUIRED.When state last changed.
The rule-engine decision — one of
ALLOW, BLOCK, CHALLENGE, REVIEW. Immutable for the lifetime of the action.The method the user actually used to complete a challenge, if any (e.g.
EMAIL_OTP, PASSKEY, SMS, AUTHENTICATOR_APP).The set of methods the user was offered for this challenge. Omitted if empty.
Rules that fired during evaluation. Omitted if none.
The rule that drove the outcome, when multiple rules fired.
IP address of the request that initiated the action.
Country resolved from the IP.
Email on file for the user at the time of the action.
Phone number on file for the user at the time of the action.
Opaque identifier for the device that initiated the action.
Verification methods the user had enrolled at the time of the action.
Custom key/value data supplied by your application. Omitted if empty.
type: action.log_created
Challenge log created
The ID of the tenant that the action occurred within.
The ID of the user that the action was triggered by.
The action being evaluated (e.g.
login, withdrawal).Unique per action instance.
When this challenge event occurred.
The event type.
The verification method involved (e.g.
EMAIL_OTP, SMS, PASSKEY).Email address involved in the event (for email-channel events).
Phone number involved in the event (for SMS/WhatsApp-channel events).
Human-readable error summary for
*_FAILED events.Upstream HTTP status code for downstream-delivery failure events.
Additional structured fields. Omitted if empty.
type: challenge.log_created
Challenge event types
A non-exhaustive list of the most commonly seen event types. Email OTP:EMAIL_OTP_SENT, EMAIL_OTP_CODE_VALID, EMAIL_OTP_INVALID_OR_EXPIRED, EMAIL_OTP_MAX_ATTEMPTS_EXCEEDED, EMAIL_OTP_RATE_LIMIT_EXCEEDED, EMAIL_OTP_SEND_DOWNSTREAM_FAILED
Email magic link: EMAIL_MAGIC_LINK_SENT, EMAIL_MAGIC_LINK_INVALID_OR_EXPIRED, EMAIL_MAGIC_LINK_RATE_LIMIT_EXCEEDED, EMAIL_MAGIC_LINK_SEND_DOWNSTREAM_FAILED
SMS: SMS_SENT, SMS_DELIVERED, SMS_NOT_DELIVERED, SMS_CODE_VALID, SMS_CODE_INVALID_OR_EXPIRED, SMS_MAX_ATTEMPTS_EXCEEDED, SMS_RATE_LIMIT_EXCEEDED, SMS_SEND_DOWNSTREAM_FAILED
WhatsApp: WHATSAPP_SENT, WHATSAPP_CODE_VALID, WHATSAPP_CODE_INVALID_OR_EXPIRED, WHATSAPP_MAX_ATTEMPTS_EXCEEDED, WHATSAPP_RATE_LIMIT_EXCEEDED, WHATSAPP_SEND_DOWNSTREAM_FAILED
TOTP / authenticator app: TOTP_CODE_VALID, TOTP_CODE_INVALID_OR_EXPIRED, TOTP_MAX_ATTEMPTS_EXCEEDED
Push: PUSH_SENT
IP address allow-listing
Authsignal will send webhooks originating from the following IP addresses:| Region | IP Addresses |
|---|---|
| US (Oregon) | 44.224.97.232 44.230.210.235 44.236.208.22 52.33.85.88 |
| AU (Sydney) | 13.210.81.243 3.105.80.107 54.252.129.142 |
| EU (Dublin) | 34.247.148.106 34.253.116.90 54.171.116.55 |
| CA (Montreal) | 16.52.98.180 16.54.49.43 16.54.18.28 |

