← All Features
Compliance

Immutable Audit Trail

Tamper-proof. Cryptographically chained. Court-ready.

Every action in IUSign — document upload, envelope creation, field placement, consent capture, signature submission, email delivery, voiding, reminders — is logged to an immutable audit trail.

How It Works

  1. 1

    Every action generates an audit event with timestamp, actor IP, user agent, and action details.

  2. 2

    Events are written to the audit_log table via INSERT — no application bypass is possible.

  3. 3

    Each event's SHA-256 hash includes the previous event's hash, forming a cryptographic chain.

  4. 4

    If any single row is altered in the database, the entire chain from that point forward becomes invalid.

  5. 5

    The hash chain can be independently verified by any third party using the exported evidence package.

  6. 6

    Audit logs are included in every Certificate of Completion and evidence JSON export.

Technical Details

SQLite AFTER INSERT triggers on envelopes, signatures, and documents tables auto-generate audit log entries.

SQLite AFTER UPDATE triggers log the old and new values for any field modification.

DELETE on audit_log is physically blocked — the trigger raises an exception.

SHA-256 hash computation: hash(event_data + prev_hash + timestamp). Stored as event_hash.

Full evidence package export: single JSON file with metadata, audit trail, hash chain, and compliance summary.

What Gets Logged

Document upload (filename, size, hash, uploader), Envelope creation (recipients, field layout, order), Consent capture (timestamp, IP, user agent, device fingerprint), Signature application (signature image hash, page, coordinates), Email delivery (recipient, timestamp, template used, SMTP response), Envelope status changes (draft → pending → partially_signed → completed → voided), Change requests (comment location, sender, reason), Reminders (count, timestamps, delivery status).

Why Database Triggers

Application-level logging can be bypassed — a developer could skip the log call, a compromised API key could delete records, a SQL injection could erase evidence. Database triggers operate at the storage engine level — no application code path can circumvent them.

Third-Party Verification

Any recipient can download the evidence package JSON and independently verify the hash chain. Start with the first event's hash, iterate through each subsequent event, recompute SHA-256(data + prev_hash), and compare against the stored event_hash. Any mismatch indicates tampering.

Ready to see it in action?

Create your free account and send your first document in under 3 minutes.

Get Started Free