For SaaS makers

Ship the enterprise-ready audit trail every SaaS grows into

Your pipeline has an enterprise deal. That deal has a security questionnaire. That questionnaire has a 'audit trail' row. Tick it in an afternoon with Recalled instead of a quarter with your own schema.

Wire billing in 5 lines
// Your checkout webhook handler
await recalled.events.create({
  action: "invoice.paid",
  actor: { id: customer.id, email: customer.email },
  organization: customer.orgId,
  targets: [{ type: "invoice", id: invoice.id }],
  metadata: { amount, currency, plan },
});

Every SaaS that grows past its first few paying teams hits the same wall: an enterprise prospect sends a security questionnaire, and three of its rows are about audit logs. You have nothing, you panic, you estimate three weeks, you ship a half-baked table, you lose the deal anyway. Recalled is the audit trail you wish you had started with.

Why SaaS makers ship with Recalled

  • Tick the audit-log box

    SOC 2, ISO 27001 and GDPR all ask for an audit trail. Recalled is hash-chained, signed, EU-hosted, with retention rules and DPA at signup.

  • Embed it inside your product

    Mint an embed token and drop `<RecalledFeed />` into your customers' own admin UI. Enterprise customers get self-serve audit review.

  • Forever-free tier

    Free plan with 3,000 events per month. Wire the audit log in before the first paying customer, not after the first lost deal.

  • Grow with retention rules

    On Scale you can set a retention rule per action prefix. Keep billing forever, expire noisy events after 30 days.

The audit-log question that kills pipelines

'Do you keep an audit log of sensitive actions, with tamper-proof integrity and exportable evidence?' Most early-stage SaaS answer 'kinda'. With Recalled you answer 'yes, hash-chained, EU-hosted, exportable to CSV, GDPR-ready'. The deal moves forward.

Start with these three

The use cases most SaaS ship in week one.

Priority actions to wire

Your next audit log is 2 minutes away

Stop hacking on your own logs table. Drop in Recalled, send your first event, move on.