Skip to main content

Data Exports

Data exports write your Sequenzy data to a bucket you own, every few minutes, as gzipped JSON lines. Load the files into Snowflake, BigQuery, Redshift, Databricks, Athena or DuckDB and join email engagement with the rest of your product data. You can set up an export in Settings → Data Warehouse → Export to bucket, with the API, the CLI (sequenzy data-exports create) or the MCP server (create_data_export).
Need events in real time instead of in batches? Use outbound webhooks. Data exports are built for analytics: complete history, stable files, and no endpoint to keep online.

Datasets

Test sends are never exported. Events imported as history (for example through Import Events with timestamps older than an hour) are your own backfilled data and are not streamed back out.

Supported storage

  • Amazon S3. Provide the bucket, region and an access key.
  • Google Cloud Storage. Create an HMAC key for a service account with the Storage Object Creator role on the bucket, and choose gcs as the provider.
  • S3-compatible storage such as Cloudflare R2, MinIO or Backblaze B2. Choose s3 and set the endpoint, for example https://<account-id>.r2.cloudflarestorage.com. The endpoint must use HTTPS and resolve to a public address.
The key only needs permission to write objects under your path prefix. Here is a minimal AWS policy:
When you save a destination, Sequenzy writes <prefix>/_sequenzy/connection-test.json to confirm access. If that fails, nothing is saved and you see the reason, such as a missing bucket, a wrong region or a denied write. Secrets are stored encrypted and are never shown again.

File layout

  • Each file is gzip-compressed JSON, one object per line, up to 50,000 lines.
  • date= folders are Hive-style partitions, so warehouses can prune by day.
  • Event files cover a window of recorded time (fromMs exclusive, toMs inclusive, in epoch milliseconds). A delayed bounce lands in the window in which Sequenzy recorded it, so nothing is missed behind an earlier window.
  • The subscriber snapshot is complete when _SUCCESS exists. Load a day’s snapshot only after that marker appears.

Delivery guarantees

  • At least once. If a run fails partway, the retry rewrites the same window with the same file names. In rare cases, such as a changed file count after a retry, a row can appear twice. Deduplicate on id.
  • No gaps. A window only advances after every file in it is written. Exports trail real time by about two minutes so late writes are included.
  • Retries. Failed runs retry automatically, backing off from the export frequency up to every 6 hours. The dashboard, API and CLI show the last error until a run succeeds.
  • Ordering. Rows inside a file are ordered by recorded time. Use occurred_at for analysis.
The first export includes events recorded after you create the destination. You can include up to 30 days of earlier events with the First export option (startFrom in the API). Events recorded more than 7 days after they occurred are not part of the stream.

Row schemas

Every row has schema_version (currently 1). New fields may be added in the same version; existing fields do not change meaning.

email_events

sms_events

id, event_type (sent, delivered, failed, clicked, opted_out, received), occurred_at, recorded_at, subscriber_id, sms_send_id, campaign_id, sequence_step_id, segments, credits, error_code, clicked_url.

custom_events

id, event_name, occurred_at, recorded_at, subscriber_id, properties (object), campaign_id, sequence_step_id.

subscribers

snapshot_date, id, email, external_id, first_name, last_name, phone, status, sms_status, tags (array), custom_attributes (object), created_at, updated_at. The snapshot reads subscribers in pages while you keep working, so a contact changed during the export may show either version. Deleted subscribers are absent from the next snapshot.

Load into your warehouse

Manage exports

  • Pause and resume. Paused exports keep their position and continue where they stopped. Pausing or deleting an export stops a run in progress before its next file.
  • Change datasets. Datasets you add start from the time you add them.
  • Move or rotate keys. Changing the bucket, prefix or credentials writes a new test file first. Exports continue from their position in the new location, and a subscriber snapshot in progress starts over there. An export already running stops before its next file and continues with the new settings.
  • Export now. Runs immediately instead of waiting for the schedule.
  • History. Each run from the last 14 days shows rows, files, size and any error.
  • Delete. Stops the export. Files already written stay in your bucket.
Only owners and admins can manage data exports. API keys need data_exports:read to view them, and data_exports:write plus subscribers:read and analytics:read to create, change, test or run them, and data_exports:delete to delete them.