Source connector
EmailOctopus connector
EmailOctopus integration for databases, warehouses and BI tools
Lightweight email campaigns and list management. Datrise captures EmailOctopus entities such as contacts, lists, campaigns, email events, tags and automations, then lands normalized and typed models for warehouse reporting, attribution, and AI workflows.
The EmailOctopus API v2 authenticates with API key, incremental runs key on last_updated_at.gte / last_updated_at.lte, and EmailOctopus caps calls at Token bucket of 100 tokens refilling at 10 tokens/second — roughly 10 requests/second sustained or a 100-request burst, HTTP 429 once exhausted.
Of the 6 objects, 5 sync as upserts keyed on the primary key and 1 as append-only streams, so each incremental run moves only what changed since the last watermark. Every object lands in its own table (for example `emailoctopus_contacts`) with a schema derived from the EmailOctopus API rather than a flattened CSV, in any of the 43 supported destinations.
Datrise is in early access: pick a destination below to open the EmailOctopus pipeline page, and join the waitlist to get the EmailOctopus connector with guided onboarding.
What EmailOctopus data Datrise extracts
Each object lands in its own typed table. Sync mode is derived from the object: history-style objects append, everything else upserts.
| Object | Landing table | Sync mode |
|---|---|---|
| contacts | emailoctopus_contacts | Upsert by primary key, incremental on updated-at |
| lists | emailoctopus_lists | Upsert by primary key, incremental on updated-at |
| campaigns | emailoctopus_campaigns | Upsert by primary key, incremental on updated-at |
| email events | emailoctopus_email_events | Append-only, incremental by timestamp |
| tags | emailoctopus_tags | Upsert by primary key, incremental on updated-at |
| automations | emailoctopus_automations | Upsert by primary key, incremental on updated-at |
EmailOctopus API: setup facts for the connector
Verified against the vendor documentation on 2026-09-21. Unknown values are left blank rather than guessed.
| API | EmailOctopus API v2 |
|---|---|
| Authentication | API key — A static API key generated in account settings is sent as `Authorization: Bearer {token}`; keys created before the v2 release (labelled 'legacy') must be regenerated before they work against v2 endpoints. |
| Pagination | cursor — `limit` (default and max 100) plus a `starting_after` cursor taken verbatim from the previous response's `paging.next.starting_after` — the docs warn against deconstructing or relying on data inside the cursor string, since its format is subject to change. |
| Rate limit | Token bucket of 100 tokens refilling at 10 tokens/second — roughly 10 requests/second sustained or a 100-request burst, HTTP 429 once exhausted |
| Incremental cursor | last_updated_at.gte / last_updated_at.lte — `GET /lists/{list_id}/contacts` accepts `created_at.gte`/`.lte` and `last_updated_at.gte`/`.lte` query filters in ISO 8601 format for incremental pulls. |
| Webhooks | Yes — Webhooks (contact.created / contact.updated / contact.deleted / campaign engagement events) |
| Bulk export | Yes — Batch contact upsert — `PUT /lists/{list_id}/contacts/batch` |
| Deletes detectable | Yes — `contact.deleted` webhook event; the REST API itself has no deleted-records or tombstone endpoint, so a poll-only integration cannot see deletions without subscribing to webhooks. |
What bites when replicating EmailOctopus
- GET /lists/{list_id}/contacts defaults to `status=subscribed` when the `status` parameter is omitted, silently excluding `pending`, `unsubscribed`, `bounced` and `complained` contacts from a naive full sync.
- The batch upsert endpoint (`PUT /lists/{list_id}/contacts/batch`) accepts 1 to 100 contacts per call — there is no larger bulk-import endpoint in the API.
- Webhook deliveries are buffered for up to a minute (or flushed immediately once 1,000 events accumulate in a single payload) and are capped at 2 endpoints per team; a failing endpoint is retried up to 9 times over roughly 10 days before events are dropped.
- API keys created before the v2 release ('legacy' keys) are rejected by v2 endpoints and must be regenerated in account settings.
Popular destinations for EmailOctopus
Choose a destination below to open the ready pipeline page.
- AAirtable
Relational spreadsheet destination for ops and go-to-market teams.
View pipeline - AAmazon Athena
Serverless SQL over S3 data lake tables.
View pipeline - AAmazon DynamoDB
Serverless key-value and document store on AWS.
View pipeline - AAmazon QuickSight
AWS serverless BI with SPICE and embedded analytics.
View pipeline - AAmazon Redshift
AWS petabyte-scale warehouse with Spectrum.
View pipeline - AAmazon S3 Data Lake
Object storage landing zone for parquet and snapshots.
View pipeline - AApache Superset
Open-source BI for SQL exploration, charts, and dashboard publishing.
View pipeline - AAzure Data Lake Storage
ADLS Gen2 object storage for analytics workloads.
View pipeline - AAzure Synapse
Microsoft analytics workspace with SQL pools.
View pipeline
EmailOctopus connector FAQ
- What EmailOctopus data does the connector extract?
- 6 objects: contacts, lists, campaigns, email events, tags and automations. Each lands in its own table with types preserved; history-style objects (1: email events) load as append-only streams.
- Is the EmailOctopus integration incremental?
- Yes. After the initial full load, every run reads only records changed since the last watermark (updated-at or event timestamp) and applies an upsert or an append depending on the object.
- Where can I load EmailOctopus data?
- Into 43 destinations: relational databases, cloud warehouses, data lakes, spreadsheets and BI tools. Each EmailOctopus → destination pair has its own page with the object-to-table mapping.
Related sources
Other sources in the same category, each with its own connector page.
Early access
Launch your EmailOctopus pipeline with guided onboarding
Join the waitlist to get priority access for EmailOctopus integrations with guided setup, schema-aware mapping, and production-grade incremental sync.