Which security controls does Axel use?
Axel uses TLS 1.2 or newer at the edge, encrypts raw R2 objects at rest, stores source ingest tokens as SHA-256 hashes, checks data access against workspace membership, and runs route filters and transforms without executing customer JavaScript.
Who can answer a compliance question?
Email security@axelapp.ai with the requirements for your review. Ask for the documentation you need before relying on a certification or control. The product controls described here are not a certification report.
How does Axel handle and store my data?
By default, raw webhook payloads and event traces are retained for 30 days, dead letters for 90 days, replay-request records for 30 days, and audit logs for 365 days. Configurable ranges are 0–30 days for raw payloads, 1–365 for dead letters, 1–90 for replay requests, and 30–3,650 for audit logs.
How is one customer's data isolated from another's?
Postgres rows, object-storage keys, queue messages, and analytics records carry a workspace identifier. Dashboard and service queries require workspace scope, and authorization checks bind requests to the active workspace.
What can someone with a report share link see?
A share link shows a fixed copy of one report's numbers for seven days. It does not grant access to queries, other reports, or raw events. Axel stores only a SHA-256 hash of the link's token, and owners and administrators can revoke a link at any time. Reports never copy subscriber or customer fields. A subscriber or customer ID becomes a one-way key used only to count unique people.
What should my sender do if Axel is unavailable?
Treat a missing 202 response as an unaccepted event and retry according to the sender's webhook policy. Axel only returns 202 after it has accepted and stored the original payload.