Iterable
Cross-channel marketing platform for creating, executing, and optimizing campaigns
Verdict
Common use cases
- Abort a campaign when metrics spike unexpectedly
- Bulk update user segments during product launches
- Archive old templates after rebrand completion
- Cancel scheduled emails for churned accounts
- Activate triggered campaigns from Slack threads
Integration
- Vendor
- Iterable
- Category
- other
- Auth
- API_KEY
- Tools
- 50
- Composio slug
iterable
Tools
- Abort Campaign
Abort a running campaign to stop all in-progress message deliveries. Use this action when you need to immediately halt an active campaign that is currently sending messages to recipients. This action is useful for emergency stops, such as w
- Activate a triggered campaign
Activates a triggered campaign by its unique ID, allowing it to process events and send messages. Use this action when you need to start a triggered campaign that will send messages based on user events (e.g., cart abandonment, welcome seri
- Archive Campaigns
Archives one or more campaigns. This endpoint behaves the same as the archive feature in the UI. Scheduled or recurring campaigns will be cancelled, and running campaigns will be aborted. Archived campaigns will be hidden from the Campaigns
- Bulk delete templatesdestructive
Bulk delete one or more base templates from Iterable. Use this action when you need to permanently remove multiple templates that are no longer needed. This action is irreversible — templates cannot be recovered once deleted. Note: Template
- Bulk Update Users
Bulk update user data in Iterable. Use this action when you need to update multiple user profiles at once. This endpoint adds and overwrites user profile fields as needed. It does not modify top-level fields omitted from the request body. I
- Cancel Campaign
Cancel a scheduled or recurring campaign in Iterable. Use when you need to stop a campaign that is scheduled for future sending or is part of a recurring campaign cycle. Once canceled, the campaign will not be sent to any recipients. Note:
- Cancel Email
Cancel a scheduled email to a specific user in Iterable. Use when you need to stop an email that has been queued for a specific user but has not yet been sent. You can cancel by providing the scheduledMessageId alone, or by providing a camp
- Cancel Export
Cancel a queued or running export created with the 'Start export' endpoint. Use when you need to abort an export job that is in progress or queued. Rate limit: 1 request/second, per project.
- Cancel In-App Message
Cancel a scheduled in-app message to a specific user in Iterable. Use when you need to stop a scheduled in-app message that is queued for delivery to a specific user. This action cancels the in-app message for the specified user based on th
- Cancel Push
Cancel a scheduled push notification to a specific user in Iterable. Use when you need to stop a push notification that has been queued for a specific user but has not yet been sent. You can cancel by providing the scheduledMessageId alone,
- Cancel Web Push
Cancel a scheduled web push notification to a specific user in Iterable. Use when you need to stop a web push notification that has been queued for a specific user but has not yet been sent. You can cancel by providing the scheduledMessageI
- Cancel WhatsApp
Cancel a scheduled WhatsApp message to a specific user in Iterable. Use when you need to stop a WhatsApp message that has been queued for a specific user but has not yet been sent. You can cancel by providing the scheduledMessageId alone, o
- Create a catalog
Create a catalog with the specified name in Iterable. Use this action when you need to create a new catalog to store and organize data such as products, users, or other entities. Each catalog in a project must have a unique name. Catalog na
- Create a new campaign
Creates a new blast or triggered campaign from an existing template. Use this action when you need to create email, push notification, web push notification, SMS, in-app message, and embedded message campaigns from an existing template. Not
- Create a new list
Create a new static list in Iterable. Use this action when you need to create a new contact list that can be used for email campaigns, segmentation, or organizing contacts. Each list must have a unique name within the project. The newly cre
- Create Catalog Items
Asynchronously creates or updates up to 1000 catalog items with a single request. Use this action when you need to bulk create or update catalog items efficiently. If an item with the same ID already exists, it will be completely overwritte
- Create snippet
Creates a new code snippet in Iterable. Use this action when you need to create a reusable code snippet that can be referenced in campaigns, templates, or other Iterable features. The snippet name must be unique within the project and canno
- Deactivate Triggered Campaign
Deactivate a triggered campaign in Iterable. Use when you need to stop a triggered campaign from firing based on user events. This action is irreversible — once a triggered campaign is deactivated, it cannot be reactivated through this API.
- Delete a catalogdestructive
Delete a catalog by its name. This action also deletes all collections that reference the specified catalog. Use this action when you need to permanently remove a catalog and all its associated collections from Iterable. This action is irre
- Delete a Catalog Itemdestructive
Deletes the specified item from a catalog. This action is asynchronous — the data may not be deleted immediately. Use this action when you need to remove a specific item from a catalog by its unique identifier. This action is irreversible —
- Delete a listdestructive
Delete a list by its listId. Use this action when you need to permanently remove a contact list from Iterable. This action is irreversible — the list and all associated data cannot be recovered once deleted. Note: Lists that are currently i
- Delete Catalog Itemsdestructive
Asynchronously deletes catalog items from a specified catalog in Iterable. Use when you need to remove specific items from a catalog by their IDs. This action processes the deletion asynchronously — the API may return a 202 Accepted status
- Delete Metadata Tabledestructive
Asynchronously deletes a metadata table by its table name. Use when you need to permanently remove a metadata table from Iterable. This action is asynchronous - a 200 response indicates a valid request that will be processed, but the table
- Delete snippetdestructive
Deletes a snippet by its ID (numeric) or name (string). Numeric identifiers are treated as snippet IDs, string identifiers as snippet names. Use this action when you need to remove a snippet that is no longer needed. This action is irrevers
- Delete User By IDdestructive
Asynchronously deletes a user by userId from Iterable. Use when you need to remove a user from Iterable's system by their userId. This action does not prevent future data collection about the user. If multiple users share the same userId, t
- Export Campaign Data to JSON
Export campaign analytics data in JSON format with one entry per line. Use when you need to retrieve campaign metrics such as email sends, opens, clicks, purchases, or custom events. Rate limit: 4 requests per minute per project. Either 'ra
- Export data to CSV
Export campaign analytics data in CSV format from Iterable. Use when you need to retrieve event data such as email sends, opens, clicks, push notifications, SMS messages, purchases, or custom events. Note: Either use the 'range' parameter (
- Export User Events
Export all events for a user identified by email or userId. Returns events as JSON, one event per line. Use this action when you need to retrieve the complete event history for a specific user in Iterable. Either email or userId must be pro
- Forget User
Deletes the specified user's data from the Iterable project and prevents future data collection about them. This action is used for GDPR compliance. Use this action when you need to permanently remove a user's data from Iterable and ensure
- Get campaign by ID
Retrieves a campaign by its unique ID. Use this action when you need to fetch detailed information about a specific campaign from Iterable. The response includes campaign metadata such as state, type, timing, and associated lists or templat
- Get Campaign Metrics
Retrieve performance metrics for one or more campaigns. Use when you need to analyze delivery, open, click, and conversion rates for your email, push, or SMS campaigns. This action allows filtering by specific campaign IDs and/or a date ran
- Get Catalog Field Mappings
Tool to retrieve field mappings (field to data type) and undefined fields for a catalog in Iterable. Use when you need to inspect the schema structure and data type definitions of a catalog.
- Get catalog item by ID
Retrieves a specific catalog item by its ID from the specified catalog. Use this action when you need to fetch a single item from a catalog using its unique identifier.
- Get email template by ID
Get an email template by templateId. Use this action when you need to retrieve a specific email template from Iterable to view its content, settings, sender configuration, or metadata. The response includes the template's HTML and plain tex
- Get Embedded Messages
Retrieves embedded messages for which the specified user is eligible, grouped by placementId. Use this action when you need to fetch in-app embedded messages for a user based on their email or userId. By default, it returns data for all pla
- Get Embedded Template
Retrieves an embedded message template by its unique ID. Use this action when you need to fetch detailed information about a specific embedded message template from Iterable, including its content, visual elements, and metadata. Optionally
- Get Experiment Metrics
Retrieve metrics for email experiments. Use when you need to analyze performance data for A/B tests or email experiments. This action allows filtering by specific experiment IDs, campaign IDs, and/or a date range. Currently only email exper
- Get In-App Messages
Get a user's in-app messages from Iterable. This endpoint always returns the user's non-selective (not app-specific) in-app messages. To also fetch app-specific in-app messages, include a packageName and platform in the request. Use this ac
- Get in-app template by ID
Retrieves an in-app template by its unique ID. Use this action when you need to fetch detailed information about a specific in-app template from Iterable, including its content, display settings, and metadata. Optionally specify a locale to
- Get List Size
Get the number of users within a list. Returns the count of users currently subscribed to the specified list. Use this action when you need to check how many users are in a specific list for reporting, list management, or campaign planning
- Get push template by ID
Retrieves a push template by its unique ID. Use this action when you need to fetch a specific push template from Iterable to view its settings, content, or configuration. The response includes all template properties including message conte
- Get SMS template
Retrieves an SMS template by its unique ID. Use this action when you need to fetch the content, metadata, and settings of a specific SMS template from Iterable. The response includes the template message content, locale information, trackin
- Get snippet by ID or name
Retrieves a snippet by its ID (numeric) or name (string). Numeric identifiers are treated as snippet IDs, string identifiers as snippet names. Use this action when you need to retrieve a specific snippet by its identifier to view its conten
- Get template by client template ID
Retrieves an email template by its client-defined template ID. Use this action when you need to find templates using a client-specific identifier rather than the internal Iterable template ID. The response contains a list of templates that
- Get User By ID
Get a user by userId from Iterable. Use when you need to retrieve user information using a specific userId. This action fetches user data including email, userId, and any additional dataFields stored in Iterable. Unlike path-parameter endpo
- Get User By ID (Path)
Get a user by userId (path parameter) from Iterable. Use when you need to retrieve user information using a specific userId as a path parameter. This action fetches user data including email, userId, and any additional dataFields stored in
- Get User Events
Get events for a specific user by userId. Use when you need to retrieve the event history for a particular user from Iterable. This action allows you to fetch a user's event data including campaign interactions, channel activity, and associ
- Get User Sent Messages
Get messages sent to a user by email address or userId. Use when you need to retrieve the message history for a specific user in Iterable. This action returns messages sent to a user, with optional filtering by campaign, date range, and mes
- Get Web In-App Messages
Get a user's web in-app messages from Iterable. This endpoint always returns the user's non-selective (not app-specific) web in-app messages. To also fetch web app-specific in-app messages, include a packageName in the request. This endpoin
- List all campaigns
Retrieves metadata about all campaigns in a project with optional pagination. Use this action when you need to enumerate all campaigns in a project, retrieve campaign IDs for subsequent operations, or paginate through large result sets. The
Setup
Setup guide
- 11. In Switchy, open your workspace settings and navigate to the MCP Integrations section. 2. Click 'Add Integration' and select Iterable from the list. 3. Log into your Iterable account in a separate tab, go to Settings > API Keys, and generate a new key with permissions for campaigns, users, and templates (standard or server-side key works). 4. Copy the API key and paste it into the Switchy connection dialog, then click 'Connect'. 5. Switchy will verify the key and show a green checkmark when the connection succeeds. 6. Open any Space, type '@Iterable' in the message box, and ask it to list active campaigns or retrieve a user profile — if it returns data, the integration is live. 7. Grant the AI access to the tools you want it to use (campaign management, user updates, template operations) by reviewing the permissions prompt that appears after first invocation.
What teammates see: by default, memories from Iterable are scoped to the Project (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Projects have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
Abort Running Campaign
@Iterable abort the campaign with ID 1234567. Confirm when all in-progress deliveries have stopped and show me the final send count.
Bulk Update User Profiles
@Iterable update the 'plan_tier' field to 'enterprise' for users with emails in this CSV: user1@example.com, user2@example.com, user3@example.com. Show me how many profiles were modified.
Archive Old Templates
@Iterable archive all email templates with 'Q1_2024' in the name. List the template IDs you archived and confirm they're no longer visible in the UI.
Cancel Scheduled Send
@Iterable cancel the scheduled email for user@example.com with schedule ID 98765. Verify the email won't be delivered and tell me when it was originally set to send.
Activate Triggered Campaign
@Iterable activate the triggered campaign with ID 5678901. Confirm it's live and show me the event type it's listening for.
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@Iterable show me all campaigns that are currently running or scheduled to send in the next 24 hours
Based on your Iterable account, there are 3 active campaigns: 'Welcome Series - Day 1' (triggered, currently active with 247 users in queue), 'Weekend Flash Sale' (scheduled for tomorrow at 10 AM EST, targeting 18,432 subscribers), and 'Cart Abandonment Reminder' (recurring trigger, last sent 2 hours ago). The Welcome Series has the highest engagement rate at 42% opens. Would you like details on any specific campaign's performance or targeting criteria?
This example uses read-only list/search capabilities to surface campaign status. The MCP requires an API key with read permissions for campaigns. Response content depends on your account's current state — if no campaigns are active, the output will reflect that. Useful for daily standup checks or pre-launch audits.
@Iterable cancel the 'Weekend Flash Sale' campaign and archive all campaigns from Q3 2024 that have already completed
I've canceled the 'Weekend Flash Sale' campaign (ID: 1847392). It was scheduled to send to 18,432 users tomorrow at 10 AM EST — those messages will not be delivered. I've also archived 7 completed campaigns from Q3 2024: 'Back to School Promo', 'Labor Day Sale', 'September Newsletter' (3 editions), 'Product Launch Teaser', and 'Survey Request - Q3'. These campaigns are now moved to your archive and won't appear in active campaign lists. Note: This action is irreversible for the cancellation.
This demonstrates write/action capabilities — canceling scheduled sends and bulk archiving. Requires API key with campaign management permissions. Canceling a campaign is permanent; you cannot un-cancel or reschedule it. Always verify campaign IDs before executing. Side-effect risk: recipients won't receive the canceled messages, so confirm with stakeholders first.
@Iterable analyze our triggered campaigns from the last 30 days and draft a summary of which ones are underperforming based on open rates below 15%
I reviewed 12 triggered campaigns active in the last 30 days. Four are underperforming with sub-15% open rates: 'Password Reset Follow-Up' (8.2% opens, 3,421 sends), 'Referral Program Reminder' (11.4% opens, 1,893 sends), 'Inactive User Re-Engagement' (9.7% opens, 8,104 sends), and 'Feature Announcement - Mobile App' (13.1% opens, 5,672 sends). Common pattern: all four send between 8-10 PM EST, outside your audience's peak engagement window (data shows 2-4 PM performs 2.3× better). Recommendation: Test earlier send times for these triggers and consider A/B testing subject lines for the re-engagement campaign given its high volume.
This pairs Iterable's campaign data with AI reasoning to surface insights. The MCP fetches raw metrics; the AI synthesizes patterns and recommendations. Requires read access to campaign analytics. Open rate benchmarks vary by industry — 15% is illustrative here. Use this workflow for quarterly reviews or when diagnosing engagement drops.
Use-case deep-dives
When you need an emergency stop for a campaign in flight
A 6-person growth team at a SaaS company schedules a product launch email to 80,000 users. Thirty minutes after send starts, the CTO notices a broken link in the email body. The team needs to abort the campaign immediately to prevent more sends. Iterable's MCP wins here because the 'Abort Campaign' tool stops in-progress deliveries in real time—no UI hunting, no Slack handoffs. The trade-off: if your team runs more than 10 campaigns a week, you'll want a workflow that logs every abort action to a shared channel so the whole team knows what happened. If your launch cadence is monthly or quarterly, this MCP is the fastest way to pull the ripcord when something breaks.
Bulk template deletion for teams shipping fast
A 4-person lifecycle marketing team at a fintech startup ships 3-5 email variants every week for A/B tests. After a quarter, they have 60+ unused templates cluttering the workspace. Manually archiving each one in the UI takes 20 minutes. The 'Bulk delete templates' tool cuts that to 90 seconds—select the IDs, run the action, done. This MCP is the right call if your team treats templates as disposable test artifacts, not evergreen assets. The boundary: if you're a regulated industry (healthcare, finance) where you need to retain every template for compliance, this tool's irreversibility is a risk. For fast-moving consumer teams, it's the fastest way to keep the workspace clean without a weekly admin tax.
Activate or pause triggered campaigns without context-switching
A 3-person support ops team at a B2B platform uses triggered campaigns to send password reset emails and account alerts. A bug in the password reset flow means the campaign is firing twice per user. The team needs to pause the campaign, fix the trigger logic, then reactivate it—all while handling live support tickets. The 'Activate a triggered campaign' tool lets them toggle the campaign state from the same workspace where they're debugging the issue. No tab-switching to Iterable's UI, no waiting for a marketer to log in. This MCP is the right fit if your support or ops team owns campaign uptime, not just the marketing team. If your campaigns are purely marketing-driven and rarely need emergency intervention, the overhead of 50 tools isn't worth it.
Frequently asked
What does the Iterable MCP do in Switchy?
It connects Switchy to your Iterable account so AI agents can manage campaigns, update user profiles, and trigger emails directly from conversations. You can abort running campaigns, bulk-update user data, cancel scheduled sends, or activate triggered campaigns without switching to the Iterable UI. Useful for marketing ops teams who want to act on campaign decisions faster.
Do I need admin access to connect Iterable?
You need an Iterable API key with write permissions for the resources you want to manage — campaigns, templates, users, exports. Iterable doesn't use OAuth; you generate the key in your account settings under API Keys. If you only need read access, a restricted key works, but most of the 50 tools require write scope to abort, cancel, or update.
Can the Iterable MCP send one-off emails to individual users?
Not directly. The MCP can cancel scheduled emails or activate triggered campaigns, but it doesn't expose a "send email now" tool for arbitrary one-off sends. If you need that, you'd still use Iterable's transactional API separately or set up a triggered campaign that the MCP can fire. The focus here is campaign lifecycle and bulk user updates.
How is this different from using Iterable's API directly?
The MCP wraps 50 of Iterable's endpoints so you can call them in plain English from Switchy conversations. Instead of writing curl commands or Python scripts to abort a campaign, you just ask. The trade-off: you're limited to the tools the MCP exposes, so niche endpoints might still need a direct API call. But for common ops tasks, it's faster.
Who on the team should connect the Iterable MCP?
Whoever owns campaign execution and has access to generate API keys — usually a marketing ops lead or growth engineer. Once connected, anyone in your Switchy workspace can use the tools, so set permissions carefully. If your team runs high-stakes campaigns, consider a dedicated service account in Iterable to avoid accidental changes tied to a personal login.