Skip to main content
Wallet and signer policy layers are in early access. Talk to us if you’d like to participate.
Dynamic emits a waas.policy.violation webhook event whenever a transaction is blocked by your configured policy rules. This event provides detailed information about what was blocked and why, making it invaluable for monitoring security, debugging rules, and discovering which addresses your users need to interact with.

Use Cases

  • Building Allow-Only Rules: The webhook includes all counterparties involved in a transaction, helping you identify which addresses to add to your allowlist
  • Security Monitoring: Track blocked transactions and identify potential threats or unusual activity
  • Rule Debugging: Understand why legitimate transactions are being blocked and adjust rules accordingly
  • Audit Trail: Maintain a complete log of all policy violations for compliance and security review

Event Payload

The webhook payload structure varies based on the violation type. Below are the fields you can expect:

Always Present

Conditionally Present

The following fields may be included depending on the violation type and context:

Example Payloads

Below are examples of policy violation webhooks for different violation types:

Address Denied Violation

When a transaction is blocked due to an address not being on the allowlist:

Value Limit Exceeded Violation

When a transaction exceeds the configured value limit for an asset:

Security Risk Malicious Violation

When a transaction is identified as malicious during security validation:

Violation Types

The reasonCode field indicates the type of policy violation. The webhook payload structure varies based on the violation type, but always includes the core fields needed to understand what was blocked and why.
  • address_denied: Transaction blocked because an address is explicitly denied or not on the allowlist
    • Additional fields: deniedAddresses, counterparties, operationType, chainId
  • address_not_allowed: Transaction blocked because address is not explicitly allowed in an allowlist-only configuration
    • Additional fields: notAllowedAddresses, counterparties, operationType, chainId

Value Limit Violations

  • value_limit_exceeded: Transaction blocked because it exceeds the configured value limit
    • Additional fields: asset (address, type, symbol), maxPerCallLimit, totalOutgoingValue, operationType, chainId

Security Validation Violations

  • security_validation_failed: Transaction simulation failed during security validation
    • Additional fields: simulationStatus, operationType, chainId
  • security_risk_malicious: Transaction identified as malicious by security validation
    • Additional fields: counterparties, validationResultType, operationType, chainId

Message Format Violations

  • invalid_message_format: Message format validation failed (EVM personal message, EIP-712, UserOperation, or SVM transaction/message format issues)

Setting Up Webhooks

To receive policy violation events, configure a webhook endpoint in your Developer Dashboard and subscribe to the waas.policy.violation event. For more information on webhook setup and signature validation, see the webhooks documentation.

Next steps

Policies & Rules Overview

Review the security model, allowlist mode, and rule fields.

Creating & Managing Rules

Set rules in the dashboard or API.
Last modified on August 12, 2026