Iterable Connector

Connect your Iterable growth marketing platform to Brevo for unified customer engagement, cross-channel campaign coordination, and consolidated analytics across marketing tools.

Overview

PropertyValue
PlatformIterable
CategoryMarketing
Setup ComplexityModerate
Official IntegrationNo
Data SyncedUsers, Events, Campaigns, Catalogs
API TypeREST API
AuthenticationAPI Key
Base URLhttps://api.iterable.com/api/

Features

  • User profile sync - Bidirectional user data synchronization with Brevo contacts
  • Campaign analytics - Sync campaign send, open, and click metrics for unified reporting
  • Experiment data - Track A/B test results and winning variants
  • Catalog sync - Synchronize product and content catalogs across platforms
  • Workflow events - Forward workflow trigger and completion events to Brevo
  • Channel preference sync - Replicate user communication preferences in Brevo

Prerequisites

Before you begin, ensure you have:

  1. An Iterable account with API access
  2. An Iterable API key with appropriate permissions
  3. Your Iterable project ID
  4. A Brevo account with API access
  5. A Tajo account with an active subscription

Authentication

Iterable uses API key authentication passed in the request header.

Creating an API Key

  1. Log in to your Iterable dashboard
  2. Navigate to Integrations > API Keys
  3. Click New API Key
  4. Name it “Tajo Integration”
  5. Select Server-side key type
  6. Grant the following permissions:
Users: Read/Write
Events: Read/Write
Campaigns: Read
Lists: Read/Write
Catalogs: Read
Experiments: Read
Workflows: Read
Templates: Read
Channels: Read
Message Types: Read

Key Type Matters

Always use a Server-side API key for Tajo integration. Mobile and JavaScript-side keys have restricted permissions and cannot access all required endpoints.

Connecting to Tajo

Terminal window
tajo connectors install iterable \
--api-key $ITERABLE_API_KEY

Configuration

Basic Setup

connectors:
iterable:
enabled: true
sync:
users: true
events: true
campaigns: true
catalogs: true
experiments: true
lists:
all_users: 16
engaged_users: 17
inactive_users: 18

Field Mapping

Map Iterable user fields to Brevo contact attributes:

field_mapping:
# Standard fields
userId: ITERABLE_ID
email: email
firstName: FIRSTNAME
lastName: LASTNAME
phoneNumber: SMS
# Engagement data
signupDate: SIGNUP_DATE
totalPurchases: TOTAL_PURCHASES
lastPurchaseDate: LAST_PURCHASE
# Custom fields
plan_name: PLAN_NAME
company_size: COMPANY_SIZE
preferred_channel: PREFERRED_CHANNEL
lifecycle_stage: LIFECYCLE_STAGE

Event Configuration

event_mapping:
# Iterable event -> Brevo event
purchase: ORDER_PLACED
addToCart: CART_UPDATED
pageView: PAGE_VIEWED
appOpen: APP_OPENED
pushOpen: PUSH_ENGAGED

API Endpoints

Tajo integrates with the following Iterable API endpoints:

EndpointMethodPurpose
/users/updatePOSTUpdate user profiles
/users/{email}GETRetrieve user by email
/users/bulkUpdatePOSTBatch update users
/events/trackPOSTTrack custom events
/events/trackBulkPOSTBatch track events
/campaignsGETList all campaigns
/campaigns/metricsGETCampaign performance data
/experiments/metricsGETExperiment results
/listsGETList all user lists
/lists/subscribePOSTAdd users to a list
/lists/unsubscribePOSTRemove users from a list
/catalogs/{catalogName}/itemsGETRetrieve catalog items
/channelsGETList messaging channels
/export/data.jsonGETExport raw event data

Code Examples

Initialize Connector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
await tajo.connectors.connect('iterable', {
apiKey: process.env.ITERABLE_API_KEY
});

Sync Users

// Incremental user sync from Iterable to Brevo
await tajo.connectors.sync('iterable', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01',
batchSize: 50
});
const status = await tajo.connectors.status('iterable');
console.log(status);
// {
// connected: true,
// lastSync: '2024-03-15T09:45:00Z',
// usersCount: 58700,
// campaignsTracked: 42,
// eventsProcessed: 210000
// }

Track Events

// Forward Iterable events to Brevo
await tajo.connectors.handleEvent('iterable', {
type: 'custom_event',
payload: {
eventName: 'subscription_upgraded',
dataFields: {
previousPlan: 'starter',
newPlan: 'pro',
mrr: 99.00
}
}
});

Webhook Handler

// Handle Iterable system webhooks
app.post('/webhooks/iterable', async (req, res) => {
const event = req.body;
await tajo.connectors.handleWebhook('iterable', {
type: event.eventName,
payload: event
});
res.status(200).send('OK');
});

Rate Limits

Iterable enforces rate limits based on your plan:

PlanRate LimitBulk Endpoint Limit
Growth500 requests/second500 requests/second
EnterpriseCustomCustom

Specific endpoint limits:

EndpointLimit
/users/update500 req/s
/users/bulkUpdate500 req/s (1,000 users per request)
/events/track500 req/s
/events/trackBulk500 req/s (8,000 events per request)
/export/data.json4 concurrent requests

Bulk Endpoints

Tajo automatically batches user updates (up to 1,000 per call) and event tracks (up to 8,000 per call) to maximize throughput while staying within rate limits.

Troubleshooting

Common Issues

IssueCauseSolution
401 UnauthorizedInvalid API keyVerify key in Iterable > Integrations > API Keys
Users not syncingKey type mismatchEnsure you are using a Server-side API key
Missing campaign dataInsufficient permissionsAdd Campaigns Read permission to API key
Export timeoutLarge data volumeUse date range filters to reduce export size
Duplicate usersInconsistent identifiersUse email as primary identifier consistently

Debug Mode

connectors:
iterable:
debug: true
log_level: verbose
log_api_calls: true

Test Connection

Terminal window
tajo connectors test iterable
# ✓ API connection successful
# ✓ User data accessible
# ✓ Campaign list readable
# ✓ Event tracking operational
# ✓ List management available

Best Practices

  1. Use bulk endpoints - Always prefer bulkUpdate and trackBulk for large data volumes
  2. Deduplicate by email - Use email as the consistent identifier across Iterable and Brevo
  3. Sync incrementally - Use date ranges to avoid re-processing historical data
  4. Map channel preferences - Sync opt-in/opt-out status to maintain compliance
  5. Monitor export jobs - Large exports can take time; set up status polling
  6. Test with non-production project - Validate mappings before syncing production data

Security

  • API Key Authentication - Server-side keys with granular permissions
  • HTTPS Only - All API communication encrypted via TLS 1.2+
  • Key Rotation - Support for multiple active API keys during rotation
  • Encrypted Storage - API credentials encrypted at rest in Tajo
  • JWT Webhooks - Webhook payloads signed with JWT for verification

Open-Source Implementation Map

No official open-source repository was found in the current Tajo connector catalog for Iterable. Keep this page focused on the verified public API contract and vendor documentation until an official schema, SDK, MCP server, or public integration repository is available.

Tajo Revamp Checklist

  • Verify authentication and scope requirements against the vendor documentation before each connector release.
  • Document primary sync objects, external IDs, pagination strategy, and rate limits explicitly.
  • Add smoke tests from public API examples rather than undocumented behavior.
  • Capture webhook signature verification and replay protection when the vendor supports webhooks.
  • Record gaps where no official public repository or schema exists so future maintainers know what still needs source-backed validation.

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Assistant

Hi! Ask me anything about the docs.