Iterable

Integrate Iterable with your AI workspace

Cross-channel marketing platform for creating, executing, and optimizing campaigns

Explore Triggers and Actions

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 when an issue is discovered in the campaign content or targeting. Note: Only campaigns in 'Running' state can be aborted. Campaigns that have already finished or were not started cannot be aborted.

ActionTry it

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 series, re-engagement). The campaign must be in a valid state for activation (e.g., not already running or finished). Note: API triggered campaign activation must be enabled for your project.

ActionTry it

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 page, but can still be viewed in the Archived tab. Use this action when you need to remove campaigns from the active campaigns list while preserving them for historical reference. This action is irreversible — once archived, campaigns cannot be restored through this API (must be done manually through the UI). Rate limit: 5 requests/second, per API key.

ActionTry it

Bulk delete templates

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: Templates associated with a campaign will not be deleted and will be skipped.

ActionTry it

Bulk Update User Subscriptions

Bulk update subscription preferences for multiple users in Iterable. Use this action when you need to update email list subscriptions, message type subscriptions, or channel subscriptions for multiple users in a single API call. This is useful for bulk list management, compliance updates, or campaign-related subscription changes. IMPORTANT: This endpoint overwrites (does not merge) existing data for any non-null fields specified in the request. Provide email or userId for each user to identify them. This action modifies user communication preferences immediately. Learn about identifying users by userId and email.

ActionTry it

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. If you'd like to merge (rather than overwrite) a user profile's top-level objects with the values provided, set mergeNestedObjects to true. When updating an existing field, you cannot change its data type (the new value must have the same data type as the old value). At least one of email or userId must be provided for each user in the users array.

ActionTry it

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: This action is irreversible for campaigns that are already in the process of sending. Only campaigns with a 'Scheduled' or 'Recurring' state can be canceled.

ActionTry it

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 campaignId along with the user's email or userId. Note: This action is irreversible — once an email is canceled, it cannot be sent again using this endpoint. The canceled message will not be delivered to the recipient.

ActionTry it

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.

ActionTry it

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 their email or userId. Note: This action is irreversible — once an in-app message is canceled, it will not be delivered to the user.

ActionTry it

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, or by providing a campaignId along with the user's email or userId. Note: This action is irreversible — once a push notification is canceled, it cannot be resent using this endpoint. The canceled message will not be delivered to the recipient.

ActionTry it

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 scheduledMessageId alone, or by providing a campaignId along with the user's email or userId. Note: This action is irreversible — once a web push notification is canceled, it cannot be resent using this endpoint. The canceled message will not be delivered to the recipient.

ActionTry it

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, or by providing a campaignId along with the user's email or userId. Note: This action is irreversible — once a WhatsApp message is canceled, it cannot be resent using this endpoint. The canceled message will not be delivered to the recipient.

ActionTry it

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 names can be no longer than 255 characters and must contain only alphanumeric characters and dashes.

ActionTry it

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. Note that global suppression lists are not automatically added to campaigns created from this endpoint; to include a global suppression list, include it in the suppressionListIds request parameter.

ActionTry it

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 created list starts empty and can be populated by adding contacts via other Iterable API actions.

ActionTry it

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 overwritten, unless replaceUploadedFieldsOnly is set to true to merge fields instead. This operation is asynchronous — the API returns 202 Accepted when the request is queued for processing. The rate limit is 100 requests per second. Note: Each item ID must contain only alphanumeric characters and dashes (max 255 characters), and field names should not contain periods.

ActionTry it

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 cannot be changed after creation.

ActionTry it

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. Use the Iterable dashboard or the activate triggered campaign endpoint to reactivate it. Note: Only triggered campaigns can be deactivated. Regular blast campaigns cannot be deactivated using this endpoint.

ActionTry it

Delete a catalog

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 irreversible — the catalog and all associated collections cannot be recovered once deleted.

ActionTry it

Delete a Catalog Item

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 — once the item is deleted, it cannot be recovered unless a backup or re-sync mechanism is in place.

ActionTry it

Delete a list

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 in use (e.g., in active campaigns) may not be deletable and will return a 409 error.

ActionTry it

Delete Catalog Items

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 indicating the request has been queued for processing. Important: This action is irreversible — the catalog items cannot be recovered once deleted. Note: This endpoint supports bulk deletion of multiple items at once. Ensure all item IDs in the request are valid and exist in the catalog to avoid partial deletions.

ActionTry it

Delete Metadata Table

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 may not be deleted immediately. Use GET /api/metadata/{table} to verify that the deletion is complete. This action is irreversible — the table and all associated data cannot be recovered once deleted.

ActionTry it

Delete snippet

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 irreversible - the snippet cannot be recovered once deleted.

ActionTry it

Delete User By ID

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, they'll all be deleted. This endpoint can be used to delete users from email-based projects, userID-based projects, and hybrid projects. Important: This action is irreversible — the user data cannot be recovered once deleted. Note: userId values containing a '/' character are not supported by this endpoint.

ActionTry it

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 'range' OR 'startDateTime'/'endDateTime' must be provided.

ActionTry it

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 (recommended for simple date filtering) OR use 'startDateTime' and 'endDateTime' together for custom date ranges. Using both will result in an error. Rate limit: 4 requests per minute per project.

ActionTry it

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 provided, but not both. Custom events are excluded by default unless includeCustomEvents is set to true.

ActionTry it

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 no future data is collected about them. In email-based projects, you must forget users by email. In userID-based projects, you must forget users by userId. In hybrid projects, you can forget users by either email or userId. Learn about identifying users by userId and email. Note: This action is irreversible - once a user is forgotten, their data cannot be recovered and future data collection about them is prevented.

ActionTry it

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 templates.

ActionTry it

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 range. Note: Rate limited to 10 requests per minute per project.

ActionTry it

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.

ActionTry it

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.

ActionTry it

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 text content, sender information (from email, reply-to), subject line, and various rendering options like data feeds, link parameters, and analytics settings. Optionally, you can specify a locale parameter to retrieve localized content if available.

ActionTry it

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 placements that have messages for the user. To constrain the response to specific placements, provide one or more placementIds query parameters.

ActionTry it

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 filter by locale to retrieve localized content.

ActionTry it

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 experiment metrics are supported.

ActionTry it

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 action when you need to retrieve in-app messages for a user, including new messages and messages that have already been saved to a mobile inbox. Each message includes a read field to indicate whether it has been seen.

ActionTry it

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 retrieve localized content.

ActionTry it

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 purposes.

ActionTry it

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 content, buttons, deeplinks, and metadata. Rate limit: 100 requests/second, per project.

ActionTry it

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, tracking settings, and other configuration details. Rate limit: 100 requests/second, per project.

ActionTry it

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 content, metadata, or associated variables.

ActionTry it

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 match the provided clientTemplateId. Rate limit: 100 requests/second, per project.

ActionTry it

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 endpoints, this query-parameter-based endpoint provides better support for special characters (such as '/') in the userId value. Rate limit: 100 requests/second per project.

ActionTry it

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 Iterable. Note: This endpoint does not work for userId values that contain a '/' character. For userIds with special characters, use the query-parameter-based GET /api/users/byUserId endpoint instead. Rate limit: 100 requests/second per project.

ActionTry it

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 associated metadata. The results can be filtered using the limit parameter to control the number of events returned (max 200). Note: This endpoint does not support userId values containing a '/' character.

ActionTry it

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 message type. Returns 10 messages by default, up to a maximum of 1000. Rate limit: 3 requests/second per project. Note: Either email or userId must be provided to identify the user, but not both.

ActionTry it

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 endpoint returns new messages and messages that have already been saved to a mobile inbox, and each message has a read field to indicate whether or not it has already been seen. Use when you need to retrieve in-app messages for a user, such as displaying an inbox of notifications or checking unread message status.

ActionTry it

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 response includes campaign metadata such as state, type, timing, and associated lists or templates. If no pagination parameters are provided, the unpaginated API returns all campaigns (deprecated behavior, may be removed in the future). Rate limit: 100 requests/second, per project.

ActionTry it

List all templates

Retrieves metadata about all templates in a project with optional pagination. Use this action when you need to enumerate all templates in a project, retrieve template IDs for subsequent operations, or paginate through large result sets. If no pagination parameters are provided, the unpaginated API returns all templates (deprecated behavior, may be removed in the future). Rate limit: 100 requests/second, per project.

ActionTry it

List Catalog Items

Get the catalog items for a catalog. Use when you need to retrieve items stored in a specific Iterable catalog, such as product catalogs, user preferences, or custom data sets. Supports pagination and sorting for large catalogs. Rate limit: 100 requests/second per API key.

ActionTry it

List Catalogs

Tool to retrieve all catalog names from Iterable. Use when you need to list available catalogs before performing catalog-specific operations like getting or setting catalog records.

ActionTry it

List Channels

Get all message channels within the Iterable project. Use this action when you need to retrieve all available communication channels (e.g., email, push notifications) configured in your Iterable project. This is useful for identifying valid channel options when creating campaigns or managing messaging workflows.

ActionTry it

List export files

Get the job status and files for an export started with the 'Start export' endpoint. Occasionally, a job status may change from running to enqueued because it had to restart. When this happens, the job maintains progress and begins where it previously stopped. Iterable uses exponential backoff for retries. Files are added to the list as the export job is running. Paginate through the files by using the last file name in the response as the startAfter value for the next request. Use when you need to monitor export progress, retrieve export results, or paginate through large export file lists.

ActionTry it

List Export Jobs

Retrieve a list of recent export jobs for the current project. Use when you need to monitor export job status, check for completed exports, or manage data export operations.

ActionTry it

List Forgotten User IDs

Get hashed user IDs of forgotten users for GDPR compliance. Returns a hash for each userId currently forgotten by your project. Each forgotten userId is lowercased, trimmed, and hashed using SHA-256. Use this action when you need to retrieve forgotten user data for GDPR compliance audits or data subject request processing. Note: This endpoint only works for userID-based and hybrid projects. For email-based projects, it returns an error. Rate limit: 3 requests/second, per project.

ActionTry it

List Journeys

Get a list of journeys (workflows) within your Iterable project. Use this action when you need to retrieve and browse through marketing automation journeys, including their status, configuration, and metadata. Supports pagination, sorting, and filtering by journey state (active, archived, etc.).

ActionTry it

List List Users

Get all users within a list. Use when you need to retrieve the complete list of users subscribed to a specific list for export, analysis, or batch operations. This action returns all users in the list (unlike preview which returns a sample). Rate limit: 5 requests/minute, per project.

ActionTry it

List Lists

Retrieve all lists within a project. Use when you need to enumerate available lists, retrieve list IDs for subsequent operations, or understand the structure of contact lists. Rate limit: 100 requests/second, per project.

ActionTry it

List Message Types

Lists all message types within a project. Use when you need to retrieve all available message types (e.g., Email, Push, SMS) and their associated metadata such as channel ID, subscription policy, and rate limits. Rate limit: 100 requests/second, per project.

ActionTry it

List Metadata Keys

List all keys in a metadata table. Use when you need to discover what keys exist within a specific metadata table (e.g., to find keys before retrieving or deleting individual metadata items). Results may be paginated; use the `nextMarker` parameter to retrieve subsequent pages.

ActionTry it

List Metadata Tables

List available metadata tables in Iterable. Use when you need to discover what metadata tables are available for querying (e.g., users, events, campaigns). This action is read-only and idempotent.

ActionTry it

List recurring campaign child campaigns

Retrieve the child campaigns generated by a recurring campaign. Use when you need to list or monitor campaigns that were created from a recurring campaign template. Pagination is supported using page and pageSize parameters. Rate limit: 100 requests/second per project.

ActionTry it

List Snippets

Get all snippets for the current project. Use this action when you need to retrieve all code snippets available in the Iterable project, including their content, metadata, and associated variables.

ActionTry it

List User Fields

Get all user fields within a project. Use when you need to discover what custom fields exist for users in your Iterable project, such as for understanding user data schema, creating imports, or validating field names before setting user data. Rate limit: 3 requests/second, per project.

ActionTry it

List Webhooks

Get all webhooks configured within the Iterable project. Use this action when you need to retrieve all webhook configurations, identify webhook IDs for subsequent operations, or understand the webhook setup for your project. This is useful for auditing webhook settings, checking which events are being monitored, or finding webhook endpoints. This action is read-only and idempotent.

ActionTry it

Merge Users

Merge two user profiles in Iterable. Use when you need to consolidate duplicate user profiles. This action merges all profile data and events from the source user into the destination user. The source user profile will be deleted after the merge is complete. IMPORTANT: Provide exactly one source identifier (sourceEmail OR sourceUserId) and exactly one destination identifier (destinationEmail OR destinationUserId). The action will return an error if the source user does not exist. If the destination user is not found, the source user will be updated instead of merged. This action is irreversible — once merged, the source user profile cannot be recovered. Rate limit: 50 requests/second per API key.

ActionTry it

Preview email template

Generate a fully rendered HTML preview of an email template using custom data. Use this action when you need to preview how an email template will look when rendered with specific data fields or data feed data. This is useful for testing template rendering before sending campaigns, or for verifying template logic with different data scenarios. The preview shows exactly how the template will appear when sent to a user. Note: Fields not provided in the request data will be rendered as empty strings in the preview.

ActionTry it

Preview in-app template

Generate a fully rendered HTML preview of an in-app template using custom data. Use this action when you need to simulate how a template would appear when sent to a user, allowing you to test template rendering with specific data fields and/or data feed data. This is useful for previewing templates before sending campaigns or testing template logic with different data scenarios. Note: If a template references a field that is not provided in the request data, that field will be rendered as an empty string, matching production behavior.

ActionTry it

Preview List Users

Get a random sample of up to 5000 users within a list. Use when you need to quickly preview the users in a specific list without fetching the entire list. This action is useful for sampling list membership before running campaigns or verifying list content. Rate limit: 5 requests/minute, per project.

ActionTry it

Replace Catalog Item

Asynchronously creates or replaces the specified catalog item in the given catalog. Use this action when you need to completely replace a catalog item with new data. If the item already exists, it will be fully replaced by the value provided in the request body. Previously existing fields not included in the new value will be lost. This operation is asynchronous — the API returns 202 Accepted when the request is queued for processing. Use GET /api/catalogs/{catalogName}/items/{itemId} to verify completion. Note: A catalog item's ID must be unique, contain only alphanumeric characters and dashes, and have a maximum length of 255 characters. Do not use periods in field names. The rate limit is 1000 requests per second.

ActionTry it

Replace Metadata Item

Asynchronously creates or replaces the metadata item associated with the specified key. Use when you need to create a new metadata item or completely replace an existing one. A 200 response indicates a valid request that will be processed; updates may not be made immediately. Use GET /api/metadata/{table}/{key} to verify the update completion. Note: This is an idempotent operation - calling it multiple times with the same parameters will result in the same state.

ActionTry it

Schedule Campaign

Schedule an existing campaign to be sent at a specified time. Use when you have created a campaign and need to schedule it for future sending. The campaign must exist and not already be scheduled or in the process of sending. You can optionally specify time zone settings to send at the same local time across different recipient time zones. Note: The send time must be up to 7 days in the future. Scheduling can be modified or canceled before the send time using the 'Cancel campaign' endpoint.

ActionTry it

Send Campaign

Send an existing campaign immediately in Iterable. Use when you need to trigger a campaign to send right away, bypassing any scheduled send time. The campaign must be in a 'Ready' state before it can be sent using this endpoint. This action is useful for testing campaigns or sending them outside of their normal schedule. Note: Once a campaign starts sending, it cannot be stopped. Ensure the campaign is in the correct state before using this action.

ActionTry it

Send email template proof

Send a proof of an email template to a specific user. Use this action when you need to preview an email template by sending a proof to a specific recipient before sending it to a larger audience. This allows you to verify that the template renders correctly with sample data and contains the expected content. Provide the template ID and either an email address or user ID to identify the recipient. You can optionally include data fields to merge into the template for more accurate preview rendering. Rate limit: 20 requests/second per API key.

ActionTry it

Send in-app notification to target

Send an in-app notification to a specific user using Iterable. Use this action when you need to send an in-app notification directly to a recipient. The notification is sent based on a campaign/template ID, and the recipient is identified either by their email address or user ID. Request data fields override user profile data fields. A reference to the user profile is provided via the profile to help resolve field collisions. Learn about identifying users by userId and email.

ActionTry it

Send in-app template proof

Send a proof of an in-app template to a specific user using Iterable. Use this action when you need to preview how an in-app template will look for a specific user before sending the actual campaign. The proof email contains the rendered template with merge fields populated using the provided data fields and user profile information. Provide either recipientEmail or recipientUserId (but not both) to identify the target user. This action is rate-limited to 20 requests per second per API key.

ActionTry it

Send push template proof

Send a proof of a push template to a specific user. Use this action when you need to preview a push template by sending a proof to a specific recipient before sending it to a larger audience. This allows you to verify that the template renders correctly with sample data and contains the expected content. Provide the template ID and either an email address or user ID to identify the recipient. You can optionally include data fields to merge into the template for more accurate preview rendering. # ci-skip: action-tags (POST /api/templates/push/proof sends a proof push as a side effect, not a durable resource creation) Rate limit: 20 requests/second per API key.

ActionTry it

Send push to target

Send a push notification to a specific user using Iterable. Use this action when you need to send a transactional push notification directly to a recipient. The push is sent based on a campaign/template ID, and the recipient is identified either by their email address or user ID. Request data fields override user profile data fields. A reference to the user profile is provided via the profile to help resolve field collisions. Learn about identifying users by userId and email.

ActionTry it

Send SMS template proof

Send a proof of an SMS template to a specific user. Use this action when you need to preview an SMS template by sending a proof to a specific recipient before sending it to a larger audience. This allows you to verify that the template renders correctly with sample data and contains the expected content. Provide the template ID and either an email address or user ID to identify the recipient. You can optionally include data fields to merge into the template for more accurate preview rendering. Rate limit: 20 requests/second per API key.

ActionTry it

Send WhatsApp to target

Send a WhatsApp message to a specific user using Iterable. Use this action when you need to send a transactional WhatsApp message directly to a recipient. The WhatsApp message is sent based on a campaign/template ID, and the recipient is identified either by their email address or user ID. Request data fields override user profile data fields. This API is typically used for transactional messaging. Learn about identifying users by userId and email.

ActionTry it

Start Export

Start a data export job. The export processes as a background job asynchronously. Use the 'List export files' action to check export status by jobId and obtain file download links once completed. Use this action when you need to export data such as user profiles, email events, push notifications, SMS messages, purchases, or custom events. The exported data can be in CSV or JSON format. Rate limit: 1 request/second, per organization. Concurrent request limit: Up to 4 exports process at a time, per organization. Additional requests are queued.

ActionTry it

Subscribe to List

Subscribe one or more users to a specific list in Iterable. Use this action when you need to add subscribers to a list by their email address, userId, or both. The action can create new user profiles if they don't exist (unless updateExistingUsersOnly is set to true). This is an idempotent operation - re-subscribing a user who is already on the list has no additional effect. Learn about identifying users by userId and email.

ActionTry it

Subscribe User By ID

Subscribes a user to the specified subscription group by their userId. Use when you need to add a user to a specific email list, message type, or message channel subscription. Contact your customer success manager to enable this API before using this action.

ActionTry it

Track Embedded Click

Tracks a click event on an embedded message. Use this action when you need to record user interactions with buttons or links in embedded messages. This creates an embeddedClick event in Iterable for analytics and campaign tracking purposes. For test messages (proofs), no events are created. Note: You must provide either an email or userId to identify the user profile, but not both.

ActionTry it

Track Embedded Received

Track that an embedded message was received on a device. Use this action when you need to record that a device has retrieved an embedded message from Iterable's API. Call this endpoint once per embedded message retrieved. Note that this only indicates the message was retrieved—it does not mean the message has been displayed to the user. Iterable's SDKs automatically call this endpoint, but if you're not using an SDK, call this manually. Provide either email or userId (but not both) to identify the user profile.

ActionTry it

Track Embedded Session

Tracks an embedded message session and related impressions in Iterable. Use this action when you need to report user engagement with embedded messages, including tracking when sessions start and end, and recording impressions for each message that was displayed during the session. This helps Iterable understand user behavior and optimize embedded message campaigns. An embeddedSession event represents a period of time when a user is viewing a page or screen where embedded messages can be displayed. An embeddedImpression event represents how many times a message was visible and for how long.

ActionTry it

Track Event

Track an event in Iterable. Use when you need to record a user action, system event, or custom analytics event. This action sends event data to Iterable for processing. Events are created asynchronously and processed separately from bulk endpoint. To ensure events are tracked in order, send them all to the same endpoint (bulk or non-bulk). There is a soft limit (default 8,000) on unique fields a custom event can have. Provide either email or userId (but not both) depending on how your project identifies users. For events of the same name, identically named data fields must be of the same type. Rate limit: 100 requests/second per project.

ActionTry it

Track Events in Bulk

Track multiple events in bulk in Iterable. Use this action when you need to track multiple events at once for better performance and to ensure events are processed in the correct order (since bulk events are processed asynchronously together). Each event requires an eventName and should include either an email or userId to identify the user. Note: There is a soft limit of 8,000 unique fields a custom event can have. For events with the same name, identically named data fields must be of the same type.

ActionTry it

Track Purchase

Track a purchase event in Iterable. Use when you need to record a purchase transaction. This action tracks purchase events, clearing the shoppingCartItems field on the user profile. The user profile is updated if it already exists, or created otherwise. Note that there is a soft limit of 1,000 unique fields per user, and field types must remain consistent across all requests in the project. The total amount must match the sum of items (price × quantity), though this is not enforced by the API. If an optional purchase ID is provided and a purchase with that ID already exists, the purchase will be updated instead of creating a new one.

ActionTry it

Trigger Campaign

Trigger a campaign to send to one or more lists of recipients. Use when you need to initiate a marketing campaign immediately, sending to all users in the specified lists. The campaign must be in a ready state before triggering. This action is useful for time-sensitive announcements or promotional campaigns that need to go out immediately. Note: This action cannot be undone once the campaign begins sending. If you need to stop a campaign after triggering, use the 'Cancel campaign' action.

ActionTry it

Trigger Journey

Trigger a journey (workflow) in Iterable for a specific user or list. Use this action when you need to start a journey for an individual user (by email or userId) or for all users in a list. Triggering with a list is asynchronous - if a list trigger is already in progress, it must complete before the same list can be triggered again for the same journey. Journey statistics may take several minutes to update if other journeys are running in parallel. If the journey's start tile has a suppression list configured, users on that list will be excluded from the journey. Provide either email or userId (but not both) when triggering for individual users. Note: This action is idempotent for individual user triggers - triggering the same user for the same journey multiple times will not cause duplicate entries if the journey's entry settings prevent re-entry.

ActionTry it

Unforget User

Unforgets a previously forgotten user in Iterable, resuming data collection. This action allows you to resume collecting data about a user who was previously forgotten (deleted) from your Iterable project. The previously deleted data cannot be recovered, but new data will be collected going forward. Use this action when you need to re-enable tracking for a user after they have requested to be re-included in data collection (e.g., after a GDPR revocation request). In email-based projects, you must unforget users by email. In userID-based projects, you must unforget users by userId. In hybrid projects and projects migrated from email-based to userID-based, you can unforget users by either email or userId. Important: Deleted/forgotten data cannot be recovered, only new data collection resumes.

ActionTry it

Unsubscribe from list

Remove users from a list. Use this action when you need to unsubscribe one or more users from a specific email list in Iterable. This action permanently removes subscribers from the specified list and cannot be easily reversed. Users will need to be manually re-subscribed if they need access to the list again. Note: Users can be identified by email, userId, or both. At least one identifier must be provided for each subscriber.

ActionTry it

Unsubscribe User By ID

Unsubscribes a user from the specified subscription group by their userId. Use when you need to remove a user from a specific email list, message type, or message channel subscription. Contact your customer success manager to enable this API before using this action. Note: This action is irreversible — once a user is unsubscribed, they will not receive messages from that subscription group unless they re-subscribe.

ActionTry it

Update Catalog Field Mappings

Set a catalog's field mappings (data types) in Iterable. Use this action when you need to define the data type for fields in a catalog. After being set, a given field's data type may not be changed. Valid types: boolean, date, geo_location, long, double, object, and string. Note: This action is idempotent - applying the same field mappings multiple times will have the same effect. Field types cannot be changed once set.

ActionTry it

Update Catalog Item

Asynchronously creates or updates the specified catalog item in the given catalog. Use when you need to create a new catalog item or update an existing one. If the item already exists, its fields will be updated with the values provided. Previously existing fields not included in the request body will remain unchanged. The operation is asynchronous — use GET /api/catalogs/{catalogName}/items/{itemId} to verify completion. Note: A catalog item's ID must be unique, contain only alphanumeric characters and dashes, and have a maximum length of 255 characters. Do not use periods in field names.

ActionTry it

Update email template

Update an existing email template in Iterable. Use this action when you need to modify an existing email template's content, settings, sender information, or metadata. Only the fields included in the request will be updated; previously existing fields not included will retain their current values. The templateId is required to identify which template to update. This is an idempotent operation - calling it multiple times with the same parameters will result in the same state.

ActionTry it

Update Embedded Template

Updates an embedded message template with the specified fields. Use this action when you need to modify an existing embedded message template in Iterable. Only the fields included in the request body will be updated; previously existing fields not specified will remain unchanged. This is an idempotent operation — calling it multiple times with the same parameters will produce the same result.

ActionTry it

Update in-app template

Update an existing in-app template in Iterable. Use this action when you need to modify an existing in-app template. Only the fields specified in the request will be updated; fields not included will retain their existing values. The templateId is required to identify the template to update. This action performs a partial update. Note: This action is idempotent and will only update the fields provided. Fields not included in the request will retain their existing values.

ActionTry it

Update push template

Updates an existing push template in Iterable. Use this action when you need to modify an existing push template's content, settings, or configuration. Only the fields specified in the request body will be updated; previously existing fields not included in the request will remain unchanged. Note: This action is idempotent — calling it multiple times with the same request will have the same effect as calling it once.

ActionTry it

Update Shopping Cart

Update a user's shopping cart items in Iterable. Use when you need to update the shoppingCartItems field on a user profile with items from the user's shopping cart. The user profile is updated if it already exists or created otherwise via the user field. Types of data fields must match the types sent in previous requests, across all data fields in the project. Learn about identifying users by userId and email. This action is idempotent - calling it multiple times with the same items will simply update the shoppingCartItems field on the user profile.

ActionTry it

Update SMS template

Update an existing SMS template in Iterable. Use this action when you need to modify the content or settings of an existing SMS template. Only the fields specified in the request will be updated; fields not included will retain their existing values. You must provide the templateId to identify which template to update. Note: This action modifies an existing template. The changes are irreversible and will affect all campaigns using this template.

ActionTry it

Update snippet by ID or name

Updates an existing snippet by ID (numeric) or creates/updates a snippet by name (string). For numeric identifiers: only existing snippets can be updated (returns 404 if not found). For string identifiers (snippet names): creates the snippet if it doesn't exist, or updates it if it already exists. Use this action when you need to modify snippet content, description, or variables for an existing snippet, or create a new snippet by name.

ActionTry it

Update User

Update user data or add a user if none exists in Iterable. Use when you need to create or update user profile information. This action merges data — missing fields are not deleted. Provide either email or userId (but not both) depending on how your project identifies users. There is a soft limit (default: 1,000) on the number of unique fields users can have. Types of data fields must match the types sent in previous requests, across all data fields in the project. Processing time varies based on the current load for Iterable's back-end services. To avoid race conditions, provide a buffer of at least 60 seconds between this request and subsequent dependent requests. Rate limit: 100 requests/second per project.

ActionTry it

Update User Email

Updates a user's email address in Iterable. Use when you need to change a user's email in email-based projects. Use this action when you need to update a user's email address and migrate all profile data and events to the new email. To update an email in a userID-based or hybrid project, use POST /api/users/update instead. Specify either currentEmail or currentUserId in the request body, but not both — if both are provided, currentEmail takes precedence. This action is irreversible and will migrate all historical data to the new email address.

ActionTry it

Update User Subscriptions

Updates user subscription preferences in Iterable. Use when you need to modify a user's subscription status for email lists, message types, and channels. IMPORTANT: This endpoint overwrites (does not merge) existing data for any non-null fields specified in the request. For example, if unsubscribedChannelIds is included in the request, it will replace the user's existing channel subscriptions entirely. Provide either email or userId (but not both), depending on how your project identifies users. Learn about identifying users by userId and email. This action is idempotent - calling it multiple times with the same parameters will result in the same subscription state.

ActionTry it

Update Webhook

Update an existing webhook configuration in Iterable. Use this action when you need to modify webhook settings such as endpoint URL, authentication type, enabled status, or campaign type subscriptions. Only the fields included in the request body will be updated; other fields remain unchanged. The webhook ID (id) is required to identify which webhook to update.

ActionTry it

Upsert email template

Create or update an email template in Iterable. Use this action when you need to create a new email template or update an existing one that matches the provided clientTemplateId. This endpoint performs an upsert operation: if no template exists with the given clientTemplateId, a new template is created; if one or more templates exist with the same clientTemplateId, all matching templates are updated with the provided fields. Note that only the fields specified in the request will be updated. Fields not included in the request will retain their existing values (for updates) or use default values (for new templates).

ActionTry it

Upsert Embedded Template

Creates an embedded message template if it doesn't exist, or updates all embedded message templates that match the provided clientTemplateId. Use this action when you need to create or update embedded message templates in Iterable. If multiple templates exist with the same clientTemplateId, all will be updated with the provided data. This is useful for managing template versions or ensuring a template exists before sending campaigns.

ActionTry it

Upsert in-app template

Create or update an in-app template in Iterable. Use this action when you need to create a new in-app template or update an existing one that matches the provided clientTemplateId. This endpoint performs an upsert operation: if no template exists with the given clientTemplateId, a new template is created; if one or more templates exist with the same clientTemplateId, all matching templates are updated with the provided fields. Note that only the fields specified in the request will be updated. Fields not included in the request will retain their existing values (for updates) or use default values (for new templates).

ActionTry it

Upsert push template

Create or update a push template in Iterable. Use this action when you need to create a new push template or update an existing one that matches the provided clientTemplateId. This endpoint performs an upsert operation: if no template exists with the given clientTemplateId, a new template is created; if one or more templates exist with the same clientTemplateId, all matching templates are updated with the provided fields. Note that only the fields specified in the request will be updated. Fields not included in the request will retain their existing values (for updates) or use default values (for new templates). This action is idempotent - calling it multiple times with the same clientTemplateId will always result in the same state.

ActionTry it

Upsert SMS template

Create or update an SMS template in Iterable. Use this action when you need to create a new SMS template or update an existing one that matches the provided clientTemplateId. This endpoint performs an upsert operation: if no template exists with the given clientTemplateId, a new template is created; if one or more templates exist with the same clientTemplateId, all matching templates are updated with the provided fields. Note that only the fields specified in the request will be updated. Fields not included in the request will retain their existing values (for updates) or use default values (for new templates).

ActionTry it

Verify SMS Code

Verifies an SMS verification code sent to a phone number in Iterable. Use this action when you need to check whether a user has entered the correct verification code during phone number verification. The code must match the most recent, non-expired, not-yet-verified code sent to the specified phone number. If the code is correct, the verification is successful. If the code is incorrect or expired, the verification fails. This action is idempotent - verifying the same code multiple times returns the same result.

ActionTry it
Iterable integration | Dench