Safeguard
Developer Tools•

What should a customer-facing audit log include in a SaaS product?

Customer audit logs answer who did what, when and from where in their account. Fields, events, export options and privacy limits for a SaaS audit log.

Safeguard Security Team
4 min read

A customer facing audit log should let an account admin answer who did what, to which object, when, and from where, within their own tenant. Include sign ins, permission changes, data exports and settings edits. Make entries immutable, filterable and exportable, and keep other tenants' data and internal secrets out.

Internal logs versus customer audit logs

Your internal logs serve engineers. A customer audit log serves the customer's security team, their auditors and their support staff. It has a narrower scope and a stricter promise: entries are accurate, ordered and not editable by the people being audited.

Buyers increasingly ask for it in security reviews. If you do not have one, a basic version is often the quickest way to answer a common questionnaire item.

Events to include

The OWASP Logging Cheat Sheet's higher risk functionality list is a good source of events: user and privilege administration, admin actions, access to sensitive data, encryption and key activities, data import and export, and configuration changes. Translate each into something a customer understands.

CategoryExample entries
AuthenticationSign in, failed sign in, MFA enabled or removed, SSO settings changed
Users and rolesMember invited, removed, role changed
Access to dataRecord exported, report downloaded, share link created
CredentialsAPI key created, rotated or revoked (key ID only)
SettingsRetention, domain, security policy changes with before and after
Support accessVendor staff access to the account, with reason and time

Showing your own staff's access to the tenant builds trust. Customers tend to notice whether it is there.

Fields per entry

  1. Timestamp in UTC, with a stable sort order for entries in the same second.
  2. Actor: user, API key ID or system, with display name and ID.
  3. Action in a short, stable verb phrase.
  4. Target object type and ID.
  5. Outcome: success or failure.
  6. Source IP and user agent, mindful that IPs can be personal data. See is an IP address personal data.
  7. Before and after values for settings, where safe.
  8. A unique event ID, useful in support tickets.

Design decisions

Keep it append only, with integrity controls such as append only tables, as OWASP Top 10 A09 suggests for high value transactions. Do not let customer admins delete entries. If a customer needs removal for a legal reason, handle it as a controlled support process.

Provide filters by actor, action, object and date, and an export in a common format such as JSON or CSV. An API makes it easy for customers to feed their own monitoring.

Choose a retention period that you can state publicly, and keep your promise. If retention differs by plan, say so clearly on the pricing or docs page.

Never include secrets, full request bodies or other tenants' identifiers.

Common gaps

Missing read events, since teams log writes only. No entry for the audit log's own export. Entries for system actions without a clear actor. Time zones that differ across the UI and the export.

Quick check

Should customers see failed actions?

Yes for sign in and permission failures, since they are useful for spotting attacks. Mark them clearly as failures.

Is an audit log the same as an activity feed?

No. A feed is for convenience and can be edited or trimmed. An audit log is a record you promise not to alter.

Safeguard's compliance and evidence automation helps teams assemble proof for buyer reviews. Try a free scan at gold.safeguard.sh/scan.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.