Skip to content
LogZuno

Security at LogZuno

How LogZuno protects your account and your data. Every item on this page is implemented and covered by automated tests.

Accounts and access

  • Email verification, two-factor authentication (TOTP with recovery codes) and passkeys
  • Passwords of 12 to 128 characters, checked against known breaches and stored with Argon2id
  • Google and GitHub sign-in matched on the provider's account ID; an existing email is linked only after you confirm your password
  • Four roles (owner, admin, member, viewer), checked on every request; only owners reach billing, deletion and ownership transfer
  • Invitations are single-use, expire after 7 days and can only be accepted by the invited, verified email address
  • An audit log of every change to members, keys, projects and the organisation

Tenant isolation

  • Each organisation's events and pageviews live in its own database partitions
  • Analytics queries run as a read-only database role with row-level security per organisation and project, and a statement timeout
  • Automated tests try every organisation route as a member of another organisation and expect it to be refused
  • Public dashboard links never show lists of people

Keys and tokens

  • API keys are stored as SHA-256 hashes, shown once, scoped (ingest, server traffic, read, admin) and revocable
  • Personal access tokens and connected MCP apps can be revoked from your settings
  • Outgoing webhooks are signed (HMAC-SHA256) so you can verify they came from LogZuno

Your data

  • LogZuno never stores visitors' IP addresses; they are used once, at ingest, and discarded.
  • Events are kept for 90 days, then deleted
  • Data of a trial that ends without a payment is deleted 30 days later
  • Deleting an organisation drops its partitions in one step
  • Ask LogZuno sends only event names and property keys to OpenAI, never your events or your users' data

Application security

  • A Content-Security-Policy with per-request nonces, and framing allowed only for signed embeds
  • Webhook and push URLs are checked against private networks, and requests connect to the checked address, so DNS rebinding can't reach internal systems
  • Rate limits per route, per user and per project
  • Raw SQL is only ever a literal string; user input reaches queries as bound parameters