Dead Letter Queue (DLQ)
When strict mode rejects an event (or evolve mode encounters an uncoercible value), the event is routed to the stream's Dead Letter Queue instead of being dropped.
DLQ events are stored as Parquet at:
{customer_id}/{stream_id}/_dlq/{year}/{month}/{day}/*.parquetViewing DLQ Events
Dashboard: Observability → Stream → Dead Letters tab
API:
bash
curl "https://enrich.sh/streams/transactions/dlq?days=7" \
-H "Authorization: Bearer sk_live_your_key"DuckDB:
sql
SELECT *
FROM read_parquet('s3://bucket/customer/transactions/_dlq/2026/02/**/*.parquet');DLQ Event Schema
Each DLQ event includes the original payload plus rejection metadata:
| Field | Description |
|---|---|
_rejected_at | Timestamp of rejection |
_reason | Why it was rejected (missing_field, extra_field, type_mismatch) |
_field | Which field caused the rejection |
_original | Full original event payload (JSON) |
INFO
DLQ data counts toward your storage usage but not your event quota. Nothing is lost — you can always replay or fix-and-reingest DLQ events.
