Skip to main content

Overview

Log streams fan out your audit events to external destinations as they are ingested. Immutable supports two destination types: HTTPS webhooks and S3-compatible storage. Log streams are quota-gated, not plan-gated — every plan can use them.

Destination Types

HTTPS Webhook

Events are POSTed to your endpoint as JSON with HMAC signature verification.

S3 Storage

Events are written to your S3-compatible bucket (AWS S3, Cloudflare R2, MinIO, etc.).

HTTPS Webhooks

Payload Format

Each event is sent as a POST request with:
  • Content-Type: application/json
  • X-Immutable-Signature: sha256={hmac_hash}

Verifying Signatures

Failure Handling

If your endpoint returns a non-2xx status code, Immutable retries with exponential backoff. After 3 consecutive failures, the stream is automatically moved to an error state and stops delivering events. Re-enable the stream from the dashboard after resolving the issue.

S3 Storage

Configure a stream with your S3-compatible credentials:
Immutable uses Laravel’s Storage::build() to connect to your bucket at runtime with your credentials. Credentials are encrypted at rest.

Cached Fanout

Log stream delivery uses cached configuration to minimize database lookups during high-throughput ingestion. Stream configuration is cached and refreshed periodically.

Plan Quotas