- Structured - Data passes through normalization, optional ABI decoding, and optional transforms before delivery.
- Raw - Bytes are forwarded directly from the source with no processing.
Destination Routing Table
| Destination Type | Pipeline Mode | Delivery Guarantee |
|---|---|---|
| ClickHouse | Structured | At-least-once |
| Postgres | Structured | At-least-once |
| Kafka | Raw | Exactly-once |
| Object Storage (S3/GCS/R2) | Structured | At-least-once |
| AWS SQS | Structured | At-least-once |
| Webhook | Structured | At-least-once |
Table Naming Convention
For database destinations (ClickHouse and Postgres), tables are written to{schema}.{table} where:
- schema is derived from the project name. Hyphens in the project name are converted to underscores (e.g., project
analytics-prodwrites to schemaanalytics_prod). - table is the normalizer output table name.
Available Destinations
ClickHouse
Batch inserts into ClickHouse with configurable buffer size and flush intervals.
Postgres
Batch inserts into PostgreSQL with automatic column quoting for reserved words.
Kafka
Raw byte passthrough to a Kafka topic with exactly-once transactional delivery.
Object Storage
Write JSON or Parquet files to S3, GCS, or R2 with time-based partitioning.
AWS SQS
Deliver records to standard or FIFO SQS queues with built-in deduplication.
Webhook
HTTP POST delivery with retry logic, backoff, and idempotency keys.