Messaging data,
exported on schedule to your S3 bucket.
Compressed Parquet files, Hive-partitioned by date and hour, written to a bucket your team owns. AWS S3 natively, or any S3-compatible store: Backblaze B2, Cloudflare R2, Wasabi, DigitalOcean Spaces, MinIO.
THE BEFORE
Your messaging data shouldn’t live in a vendor’s UI.
Every report your team builds, every model your data scientists train, every audit your compliance lead runs depends on raw events. Not screenshots. Not CSV exports. Continuous, schema-stable, in your warehouse.
Everything your data team expects from a real warehouse pipeline.
Three guarantees. Each one removes a question your engineering review will ask.
01 / SCOPED ACCESS
Your bucket. Your key. Your control.
You create an access key scoped to one bucket with a write-only policy. We encrypt the secret at rest with AWS KMS, bind it to that destination, and validate it with a probe write. Revoke the key any time.
02 / STABLE DATA SHAPES
Versioned. Documented. No glue code.
Stable, versioned data shapes under a v1 prefix. Same fields next quarter as this quarter. Backwards-compatible additions only, so your pipelines never break on a release.
03 / SCHEDULE AND SCOPE
Hourly, daily, or on demand. Incremental or full.
Hourly, daily at 08:00 UTC, or on demand. Each scheduled run picks up exactly where the last one ended. A chunked full export backfills up to two years of history.
Four data sets. Stable. Documented. Versioned.
The grain matches how data teams actually model messaging. No reshaping required.
Message events
one row per message, re-exported when its status changes
Every send and every inbound reply. Direction, status, error code and reason, sent, delivered, and failed timestamps, contact, and project. Keep the latest updated_at per message_id for the final outcome.
Project summaries
one row per completed project
Per-project totals for recipients, sends, deliveries, and failures, written when the project completes. Executive reporting and historical performance, ready to query.
Opt-out events
one row per opt-out
Compliance-grade opt-out trail. Every opt-out with phone, source, timestamp, and brand. The artifact your compliance review needs.
Click events
one row per link click
Every link click with device, browser, geo, referrer, and UTM context, plus unique, share, and bot flags. The data your downstream models have been waiting for.
Versioned under a v1 prefix. Backwards-compatible additions only. Your downstream queries never break on a release.
Same outcome. A real pipeline instead of a spreadsheet.
What used to be a weekly export ritual is one connection and a schedule.
Manual pulls. Stale data. Format drift.
- 1Log in to vendor UI
- 2Export CSVs by hand
- 3Reconcile schema drift
- 4Re-import to the warehouse
Lost weeks. Audit gaps. Decisions on yesterday’s data.
Continuous. Schema-stable. Auditable.
- 1Add a scoped access key once
- 2Pick data sets and a schedule
- 3Query in the warehouse
One scoped access key. Hourly refresh. Parquet in your bucket. Done in an afternoon.
One bucket. Every engine your team runs.
The files are standard Parquet in Hive-partitioned paths, so the tools your data team already uses read them directly from the bucket. No connector to install on our side.
Amazon Athena and Glue
Crawl the prefix or declare a partitioned table.
Snowflake
Snowpipe or an external stage on the bucket.
Databricks
Auto Loader on the prefix, landing Delta tables.
BigQuery
An external table over the Hive-partitioned path.
DuckDB
read_parquet with hive_partitioning straight from S3.
Answered before you have to.
This is the defining platform. See how it's measured.
Every message delivered. At a known cost. On demand. At any scale.
