Security
Webhooks carry your customers’ data and your credentials. This is what we do about it, and what we do not claim.
Accounts and access
- Passwords are hashed with argon2id. Sign-in is rate limited and accounts lock after repeated failures; responses never reveal whether an email is registered.
- Optional two-factor authentication (TOTP) with single-use recovery codes. Two-factor is mandatory for platform administrators.
- Sessions use HttpOnly, Secure, SameSite cookies, can be listed and revoked, and every state-changing browser request is protected against CSRF.
- Roles (Owner, Admin, Developer, Viewer, Billing Manager) are enforced on the server for every request. API keys are shown once, stored only as hashes, scoped, rotatable and revocable.
Tenant isolation
- Every customer-data query goes through an organization-scoped data layer; cross-organization requests answer “not found”. Isolation is covered by automated tests for every resource type, at the data layer and through the API and browser.
Protecting what you send us
- Provider signatures (Stripe, GitHub, Shopify, generic HMAC) are verified against the raw request body with constant-time comparison, with timestamp tolerance against replays.
- Destination signing secrets, source verification secrets and two-factor secrets are encrypted at rest with AES-256-GCM using versioned keys that support rotation.
- Secrets are never logged and never returned after creation; custom header values are hidden in the UI and redacted in stored attempt records.
Protecting your servers and ours
- Outbound requests are signed (timestamped HMAC-SHA256) so you can verify they came from Retryx; signing-secret rotation has an overlap window so you can switch without downtime.
- Server-side request forgery protection: destinations must be HTTPS and cannot target private, loopback, link-local, carrier-grade NAT, multicast or cloud-metadata addresses (IPv4 and IPv6, including mapped and encoded forms). URLs are validated when saved and again before every delivery; DNS is resolved once and the connection is pinned to the validated address to defeat DNS rebinding; redirects are off by default and re-validated per hop.
- Request and response sizes are bounded, timeouts are enforced, and payload transformations are declarative (no customer code runs on our infrastructure).
Operations and accountability
- Administrative actions require typed confirmation and a written reason, and are recorded in an append-only audit log that the database itself refuses to modify or delete.
- Rate limits and abuse controls apply to ingestion and the API; traffic anomalies are surfaced to operators.
- Payload retention is limited by plan; event metadata and usage records are kept for billing and audit.
- The service runs on managed PostgreSQL and Key Value infrastructure over private networking with TLS. Database state is the source of truth; queues can be rebuilt from it.
What we do not claim
Retryx has not completed a SOC 2 or ISO 27001 audit and does not currently offer a contractual SLA or data-processing addendum as a standard product. If you need those, tell us and we will be straightforward about where we stand.
Delivery is at-least-once, not exactly-once: your handler should de-duplicate on the Idempotency-Key header. Ordering is not guaranteed.
Found a vulnerability? Please report it privately through the contact form (mention “security”) and give us a chance to fix it before disclosing publicly.