Skip to content

Latest commit

 

History

History
1695 lines (1209 loc) · 56.9 KB

File metadata and controls

1695 lines (1209 loc) · 56.9 KB

Available Commands (110)

All commands follow the pattern: iterable <category> <command> [options]

Every command also accepts --json <data> for raw JSON input and --help for usage details.

campaigns (14)

abort

Abort a campaign that is currently running

iterable campaigns abort <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to abort

activate

Activate a triggered campaign

iterable campaigns activate <campaignId>
Option Type Required Description
campaignId number yes Triggered campaign ID to activate

archive

Archive one or more campaigns. Scheduled/recurring campaigns will be cancelled, running campaigns will be aborted.

iterable campaigns archive <campaignIds...>
Option Type Required Description
campaignIds number[] yes Campaign IDs to archive

cancel

Cancel a scheduled or recurring campaign

iterable campaigns cancel <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to cancel

create-blast

Create a new blast campaign from an existing template. The campaign is created without being scheduled. Use schedule to schedule it for delivery.

iterable campaigns create-blast --listIds <listIds...> --name <name> --templateId <templateId>
Option Type Required Description
--listIds number[] yes Array of list IDs to which the campaign should be sent
--name string yes The name to use in Iterable for the new campaign
--templateId number yes The ID of a template to associate with the new campaign
--campaignDataFields json no A JSON object containing campaign-level data fields that are available as merge parameters (for example, {{field}}) during message rendering. These fields are available in templates, data feed URLs, and all other contexts where merge parameters are supported. Campaign-level fields are overridden by user and event data fields of the same name.
--suppressionListIds number[] no Array of suppression list IDs

create-triggered

Create a new triggered campaign from an existing template. The campaign is created in Ready state and must be activated before it can send.

iterable campaigns create-triggered --name <name> --templateId <templateId>
Option Type Required Description
--name string yes The name to use in Iterable for the new campaign
--templateId number yes The ID of a template to associate with the new campaign
--campaignDataFields json no A JSON object containing campaign-level data fields that are available as merge parameters (for example, {{field}}) during message rendering. These fields are available in templates, data feed URLs, and all other contexts where merge parameters are supported. Campaign-level fields are overridden by user and event data fields of the same name.

deactivate

Deactivate a triggered campaign

iterable campaigns deactivate <campaignId>
Option Type Required Description
campaignId number yes Triggered campaign ID to deactivate

get

Get detailed information about a specific campaign

iterable campaigns get <id>
Option Type Required Description
id number yes Campaign ID to retrieve

get-children

Get child campaigns generated by a recurring campaign

iterable campaigns get-children <id>
Option Type Required Description
id number yes ID of the recurring campaign
--order asc | desc no Sort direction (asc or desc)
--page number no Page number (starting at 1)
--pageSize number no Number of results to return per page (defaults to 20, maximum of 1000)
--sort string no Field to sort by

get-metrics

Get campaign performance metrics

iterable campaigns get-metrics <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to get metrics for
--endDateTime string no End date for metrics (YYYY-MM-DD HH:MM:SS format)
--startDateTime string no Start date for metrics (YYYY-MM-DD HH:MM:SS format)

list

Retrieve campaigns

iterable campaigns list
Option Type Required Description
--campaignState Draft | Ready | Scheduled | Running | Finished | Starting | Aborted | Recurring | Archived no Filter campaigns by state
--order asc | desc no Sort direction (asc or desc)
--page number no Page number (starting at 1)
--pageSize number no Number of results to return per page (defaults to 20, maximum of 1000)
--sort string no Field to sort by

schedule

Schedule an existing campaign to be sent at a specific time

iterable campaigns schedule <campaignId> --sendAt <sendAt>
Option Type Required Description
campaignId number yes Campaign ID to schedule
--sendAt string yes When to send (ISO-8601 format, e.g. 2024-12-20T10:15:30Z)
--recipientTimeZone json no Recipient timezone configuration (JSON: {defaultTimeZone, startTimeZone})

send

Send an existing scheduled campaign immediately

iterable campaigns send <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send now

trigger

Trigger a campaign to send to specified lists

iterable campaigns trigger --campaignId <campaignId> --listIds <listIds...>
Option Type Required Description
--campaignId number yes Campaign ID to trigger
--listIds number[] yes A non-empty array of list IDs to send to
--allowRepeatMarketingSends boolean no Allow repeat marketing sends? Defaults to true.
--dataFields json no Fields to merge into handlebars context
--suppressionListIds number[] no Lists to suppress

catalogs (12)

bulk-delete-items

Bulk delete catalog items by their IDs

iterable catalogs bulk-delete-items --catalogName <catalogName> --itemIds <itemIds...>
Option Type Required Description
--catalogName string yes Name of the catalog
--itemIds string[] yes Array of item IDs to delete

create

Create a new catalog

iterable catalogs create <catalogName>
Option Type Required Description
catalogName string yes Catalog name (alphanumeric and dashes only, max 255 chars)

delete

Delete a catalog

iterable catalogs delete <catalogName>
Option Type Required Description
catalogName string yes Name of the catalog to delete

delete-item

Delete a specific catalog item by ID

iterable catalogs delete-item --catalogName <catalogName> --itemId <itemId>
Option Type Required Description
--catalogName string yes Name of the catalog
--itemId string yes ID of the catalog item to delete

get-field-mappings

Get field mappings and data types for a catalog

iterable catalogs get-field-mappings <catalogName>
Option Type Required Description
catalogName string yes Name of the catalog

get-item

Get a specific catalog item by ID

iterable catalogs get-item --catalogName <catalogName> --itemId <itemId>
Option Type Required Description
--catalogName string yes Name of the catalog
--itemId string yes ID of the catalog item to retrieve

get-items

Get items from a catalog with optional pagination and sorting

iterable catalogs get-items <catalogName>
Option Type Required Description
catalogName string yes Name of the catalog
--orderBy string no Field by which results should be ordered
--page number no Page number (starting at 1)
--pageSize number no Number of results per page (defaults to 10, max 1000)
--sortAscending boolean no Sort results by ascending (defaults to false)

list

Get list of all catalogs with optional pagination

iterable catalogs list
Option Type Required Description
--page number no Page number (starting at 1)
--pageSize number no Number of results per page (max 100)

partial-update-item

Partial update (PATCH) a catalog item - updates only specified fields

iterable catalogs partial-update-item --catalogName <catalogName> --itemId <itemId> --update <json>
Option Type Required Description
--catalogName string yes Name of the catalog
--itemId string yes ID of the catalog item
--update json yes Fields to update

replace-item

Replace (PUT) a catalog item - replaces the entire item with new value

iterable catalogs replace-item --catalogName <catalogName> --itemId <itemId> --value <json>
Option Type Required Description
--catalogName string yes Name of the catalog
--itemId string yes ID of the catalog item
--value json yes New value for the item

update-field-mappings

Update catalog field mappings (data types)

iterable catalogs update-field-mappings <catalogName> --mappingsUpdates <mappingsUpdates...>
Option Type Required Description
catalogName string yes Name of the catalog
--mappingsUpdates string[] yes Field mappings to update

update-items

Update catalog items

iterable catalogs update-items <catalogName> --items <items...>
Option Type Required Description
catalogName string yes Name of the catalog
--items json[] yes Catalog items to update

events (4)

get-by-email

Get event history for a user by email address

iterable events get-by-email <email>
Option Type Required Description
email string yes User email address
--limit number no Maximum number of events to return

get-by-userid

Get event history for a user by user ID

iterable events get-by-userid <userId>
Option Type Required Description
userId string yes User ID to get events for
--limit number no Maximum number of events to return (default: 20)

track

Track a custom event for a user

iterable events track <eventName>
Option Type Required Description
eventName string yes
--campaignId number no
--createdAt number no
--createNewFields boolean no
--dataFields json no
--email string no
--id string no
--templateId number no
--userId string no

track-bulk

Track multiple events in a single request for better performance

iterable events track-bulk --events <events...>
Option Type Required Description
--events json[] yes

experiments (4)

get

Get detailed information about a specific experiment by ID

iterable experiments get <experimentId>
Option Type Required Description
experimentId number yes Experiment ID

get-metrics

Get experiment metrics for A/B testing analysis

iterable experiments get-metrics
Option Type Required Description
--campaignId number[] no Campaign IDs whose experiments to export (can specify multiple)
--endDateTime string no Export ending at (ISO 8601 format)
--experimentId number[] no Experiment IDs to export (can specify multiple)
--startDateTime string no Export starting from (ISO 8601 format)

get-variants

Get variant content for an experiment, including subject lines, preheaders, HTML source, and plain text

iterable experiments get-variants <experimentId>
Option Type Required Description
experimentId number yes Experiment ID

list

List experiments with optional filtering by campaign, status, and date range

iterable experiments list
Option Type Required Description
--campaignId number no Filter by campaign ID
--endDate string no Filter experiments ending before this date (ISO 8601 format)
--limit number no Number of results to return (max 1000, default 20)
--offset number no Number of results to skip (default 0)
--startDate string no Filter experiments starting from this date (ISO 8601 format)
--status draft | running | finished no Filter by status (draft, running, finished)

export (4)

cancel

Cancel a queued or running export job

iterable export cancel <jobId>
Option Type Required Description
jobId number yes The ID of the export job to cancel (returned from startExportJob)

get-files

Get the job status and download URLs for files from a completed export job

iterable export get-files <jobId>
Option Type Required Description
jobId number yes The ID of the export job (returned from startExportJob)
--startAfter string no Skip file names up to and including this value. Use for paginating over the files in the export (e.g., 'file-1679086247925.csv')

list-jobs

Get a list of recent export jobs for the current project

iterable export list-jobs
Option Type Required Description
--jobState string no Filter results to only include jobs in the specified state (enqueued, queued, running, completed, failed, cancelled, cancelling)

start

Start a data export job that processes as a background job. Use get-files to check status and obtain download links.

iterable export start --dataTypeName <dataTypeName> --outputFormat <outputFormat>
Option Type Required Description
--dataTypeName emailSend | emailOpen | emailClick | hostedUnsubscribeClick | emailComplaint | emailBounce | emailSendSkip | pushSend | pushOpen | pushUninstall | pushBounce | pushSendSkip | inAppSend | inAppOpen | inAppClick | inAppClose | inAppDelete | inAppDelivery | inAppSendSkip | inAppRecall | inboxSession | inboxMessageImpression | smsSend | smsBounce | smsClick | smsReceived | smsSendSkip | webPushSend | webPushClick | webPushSendSkip | rcsSend | rcsSendSkip | emailSubscribe | emailUnSubscribe | purchase | customEvent | user | smsUsageInfo | embeddedSend | embeddedSendSkip | embeddedClick | embeddedReceived | embeddedImpression | embeddedSession | anonSession | journeyExit | whatsAppBounce | whatsAppClick | whatsAppReceived | whatsAppSeen | whatsAppSend | whatsAppSendSkip | whatsAppUsageInfo yes Data type name to export (e.g., 'user' for user data, 'emailSend' for email send events)
--outputFormat text/csv | application/x-json-stream yes Output format
--campaignId number no Only export data from this campaign
--delimiter string no CSV file delimiter
--endDateTime string no Export events occurring or users updated before date and time exclusive
--omitFields string no Fields to omit from the export (comma separated)
--onlyFields string no Only include these fields in the export (comma separated)
--startDateTime string no Export events occurring or users updated after date and time inclusive

journeys (2)

list

Get journeys (workflows) with optional pagination and state filtering

iterable journeys list
Option Type Required Description
--order asc | desc no Sort direction (asc or desc)
--page number no Page number (starting at 1)
--pageSize number no Number of results per page (max 50)
--sort string no Field to sort by
--state string[] no Filter by journey state (e.g., ['Archived'])

trigger

Trigger a journey (workflow) for a user

iterable journeys trigger <workflowId>
Option Type Required Description
workflowId number yes Journey/workflow ID to trigger
--dataFields json no Data fields for the journey
--email string no User email address
--listId number no List ID to trigger for (alternative to individual user)
--userId string no User ID (alternative to email)

lists (8)

create

Create a new user list

iterable lists create <name>
Option Type Required Description
name string yes Name of the list to create
--description string no Description of the list

delete

Delete a user list

iterable lists delete <listId>
Option Type Required Description
listId number yes ID of the list to delete

get-preview-users

Preview users in a list (up to 5000 users)

iterable lists get-preview-users <listId>
Option Type Required Description
listId number yes List ID to preview users from
--preferUserId boolean no Return userId instead of email when both exist
--size number no Number of users to return (max 5000, default 1000)

get-size

Get the count of users in a specific list

iterable lists get-size <listId>
Option Type Required Description
listId number yes List ID to get size for

get-users

Get users in a specific list

iterable lists get-users <listId>
Option Type Required Description
listId number yes List ID to get users from
--maxResults number no Maximum number of users to return

list

Retrieve user lists

iterable lists list

subscribe

Subscribe users to a specific list

iterable lists subscribe <listId> --subscribers <subscribers...>
Option Type Required Description
listId number yes ID of the list to subscribe to
--subscribers json[] yes Array of users to subscribe
--updateExistingUsersOnly boolean no Skip operation for unknown userIds/emails when true

unsubscribe

Unsubscribe users from a specific list

iterable lists unsubscribe <listId> --subscribers <subscribers...>
Option Type Required Description
listId number yes List ID to unsubscribe from
--subscribers json[] yes Users to unsubscribe

messaging (16)

cancel-email

Cancel scheduled email for specific user

iterable messaging cancel-email
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

cancel-in-app

Cancel scheduled in-app message for specific user

iterable messaging cancel-in-app
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

cancel-push

Cancel scheduled push notification for specific user

iterable messaging cancel-push
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

cancel-sms

Cancel scheduled SMS message for specific user

iterable messaging cancel-sms
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

cancel-web-push

Cancel scheduled web push notification for specific user

iterable messaging cancel-web-push
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

cancel-whatsapp

Cancel scheduled WhatsApp message for specific user

iterable messaging cancel-whatsapp
Option Type Required Description
--campaignId number no Campaign ID to cancel
--email string no Email address that identifies a user profile
--scheduledMessageId number no Scheduled message ID to cancel
--userId string no User ID that identifies a user profile

get-channels

Get all available communication channels (email, SMS, push, etc.)

iterable messaging get-channels

get-embedded-messages

Get embedded messages for a user, grouped by placement ID

iterable messaging get-embedded-messages
Option Type Required Description
--currentMessageIds string[] no IDs of embedded messages already retrieved
--email string no User email address
--packageName string no Package name of the app
--placementIds number[] no Placements to include in response
--platform string no Platform: iOS, Android, or Web (case-sensitive)
--sdkVersion string no Iterable SDK version (e.g., 6.5.0)
--userId string no User ID (alternative to email)

get-in-app-messages

Get in-app messages for a user

iterable messaging get-in-app-messages
Option Type Required Description
--count number no Number of messages to retrieve
--email string no User email address
--platform iOS | Android | Web no Platform filter
--userId string no User ID (alternative to email)

get-message-types

Get all message types within the project for use in templates

iterable messaging get-message-types

send-email

Send email to user

iterable messaging send-email <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for email personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientUserId string no Recipient user ID (alternative to email)
--sendAt string no When to send the email (YYYY-MM-DD HH:MM:SS format)

send-in-app

Send in-app message to user

iterable messaging send-in-app <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientUserId string no Recipient user ID (alternative to email)
--sendAt string no When to send (YYYY-MM-DD HH:MM:SS format)

send-push

Send push notification to user

iterable messaging send-push <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientUserId string no Recipient user ID
--sendAt string no When to send (YYYY-MM-DD HH:MM:SS format)

send-sms

Send SMS message to user

iterable messaging send-sms <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientPhone string no Recipient phone number
--recipientUserId string no Recipient user ID
--sendAt string no When to send (YYYY-MM-DD HH:MM:SS format)

send-web-push

Send web push notification to user

iterable messaging send-web-push <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientUserId string no Recipient user ID
--sendAt string no When to send (YYYY-MM-DD HH:MM:SS format)

send-whatsapp

Send WhatsApp message to user

iterable messaging send-whatsapp <campaignId>
Option Type Required Description
campaignId number yes Campaign ID to send
--allowRepeatMarketingSends boolean no Allow repeat marketing sends
--dataFields json no Data fields for personalization
--metadata json no Additional metadata
--recipientEmail string no Recipient email address
--recipientPhone string no Recipient phone number
--recipientUserId string no Recipient user ID
--sendAt string no When to send (YYYY-MM-DD HH:MM:SS format)

snippets (5)

create

Create a new snippet with Handlebars templating support

iterable snippets create --content <content> --name <name>
Option Type Required Description
--content string yes Content of the snippet. Handlebars must be valid. Disallowed content: script tags with JS sources or non-JSON content, inline JS event handlers (e.g., onload="..."), and javascript: in href or src attributes (anchors and iframes).
--name string yes Name of the snippet. Must be unique within the project, up to 100 characters (a-z, A-Z, 0-9, hyphens (-), underscores (_), and spaces). Cannot be changed after snippet is created.
--createdByUserId string no User ID (email) of the creator. If not provided, defaults to the project creator.
--description string no Description of the snippet
--variables string[] no A list of variable names used in the content with a Handlebars expression such as {{#if (eq myVariable "someValue")}}. Variable names are case-sensitive and should be simple identifiers (letters, numbers, underscores). To learn more about using variables in Snippets, see Customizing Snippets with Variables.

delete

Delete a snippet by ID (numeric) or name (string)

iterable snippets delete <identifier>
Option Type Required Description
identifier string yes Snippet ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names

get

Get a snippet by ID (numeric) or name (string)

iterable snippets get <identifier>
Option Type Required Description
identifier string yes Snippet ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names

list

Get all snippets for the current project

iterable snippets list

update

Update a snippet by ID (numeric) or name (string)

iterable snippets update --content <content> --identifier <identifier>
Option Type Required Description
--content string yes Content of the snippet. Handlebars must be valid. Disallowed content: script tags with JS sources or non-JSON content, inline JS event handlers (e.g., onload="..."), and javascript: in href or src attributes (anchors and iframes).
--identifier string yes Snippet ID (numeric) or name (string). Numeric identifiers are treated as IDs, string identifiers as names
--createdByUserId string no User ID (email) of the updater. If not provided, defaults to the project creator.
--description string no Description of the snippet
--variables string[] no List of variable names used in the content with a Handlebars expression such as {{myField}}. Variable names are case-sensitive and should be simple identifiers (letters, numbers, underscores). To learn more about using Handlebars in Snippets, see Customizing Snippets with Variables.

subscriptions (5)

bulk-update

Subscribe or unsubscribe multiple users to/from a subscription group

iterable subscriptions bulk-update --action <action> --subscriptionGroup <subscriptionGroup> --subscriptionGroupId <subscriptionGroupId>
Option Type Required Description
--action subscribe | unsubscribe yes Action to perform
--subscriptionGroup emailList | messageType | messageChannel yes Type of subscription group
--subscriptionGroupId number yes Subscription Group Id
--users string[] no Users to subscribe/unsubscribe, identified by email
--usersByUserId string[] no Users to subscribe/unsubscribe, identified by userId

subscribe-by-email

Subscribe a user to a subscription group by email

iterable subscriptions subscribe-by-email --subscriptionGroup <subscriptionGroup> --subscriptionGroupId <subscriptionGroupId> --userEmail <userEmail>
Option Type Required Description
--subscriptionGroup emailList | messageType | messageChannel yes Type of subscription group
--subscriptionGroupId number yes Subscription Group Id
--userEmail string yes User's email address

subscribe-by-userid

Subscribe a user to a subscription group by userId

iterable subscriptions subscribe-by-userid --subscriptionGroup <subscriptionGroup> --subscriptionGroupId <subscriptionGroupId> --userId <userId>
Option Type Required Description
--subscriptionGroup emailList | messageType | messageChannel yes Type of subscription group
--subscriptionGroupId number yes Subscription Group Id
--userId string yes User's userId

unsubscribe-by-email

Unsubscribe a user from a subscription group by email

iterable subscriptions unsubscribe-by-email --subscriptionGroup <subscriptionGroup> --subscriptionGroupId <subscriptionGroupId> --userEmail <userEmail>
Option Type Required Description
--subscriptionGroup emailList | messageType | messageChannel yes Type of subscription group
--subscriptionGroupId number yes Subscription Group Id
--userEmail string yes User's email address

unsubscribe-by-userid

Unsubscribe a user from a subscription group by userId

iterable subscriptions unsubscribe-by-userid --subscriptionGroup <subscriptionGroup> --subscriptionGroupId <subscriptionGroupId> --userId <userId>
Option Type Required Description
--subscriptionGroup emailList | messageType | messageChannel yes Type of subscription group
--subscriptionGroupId number yes Subscription Group Id
--userId string yes User's userId

templates (21)

delete

Delete one or more templates by ID

iterable templates delete <ids...>
Option Type Required Description
ids number[] yes IDs of templates to delete

get-by-client-id

Get template by client template ID

iterable templates get-by-client-id <clientTemplateId>
Option Type Required Description
clientTemplateId string yes Client template ID to look up template by

get-email

Get details for specific email template by ID

iterable templates get-email <templateId>
Option Type Required Description
templateId number yes Template ID to retrieve
--locale string no Locale of content to get

get-inapp

Get details for specific in-app message template by ID

iterable templates get-inapp <templateId>
Option Type Required Description
templateId number yes Template ID to retrieve
--locale string no Locale of content to get

get-push

Get details for specific push notification template by ID

iterable templates get-push <templateId>
Option Type Required Description
templateId number yes Template ID to retrieve
--locale string no Locale of content to get

get-sms

Get details for specific SMS template by ID

iterable templates get-sms <templateId>
Option Type Required Description
templateId number yes Template ID to retrieve
--locale string no Locale of content to get

list

Retrieve templates

iterable templates list
Option Type Required Description
--endDateTime string no Get templates created before this date time (yyyy-MM-dd HH:mm:ss [ZZ])
--messageMedium Email | Push | InApp | SMS no Filter by message medium
--order asc | desc no Sort direction (asc or desc)
--page number no Page number (starting at 1)
--pageSize number no Number of results to return per page (defaults to 20, maximum of 1000)
--sort string no Field to sort by
--startDateTime string no Get templates created at or after this date time (yyyy-MM-dd HH:mm:ss [ZZ])
--templateType Base | Blast | Triggered | Workflow no Filter by template type

preview-email

Preview email template with custom data. Returns fully rendered HTML.

iterable templates preview-email <templateId>
Option Type Required Description
templateId number yes Template ID
--data json no Data to use for template rendering (JSON: {dataFields, dataFeed, fetchDataFeeds})
--locale string no Locale of content to get

preview-inapp

Preview in-app message template with custom data. Returns fully rendered HTML.

iterable templates preview-inapp <templateId>
Option Type Required Description
templateId number yes Template ID
--data json no Data to use for template rendering (JSON: {dataFields, dataFeed, fetchDataFeeds})
--locale string no Locale of content to get

proof-email

Send a proof of an email template to a specific user

iterable templates proof-email <templateId>
Option Type Required Description
templateId number yes Template ID to send proof for
--dataFields json no Fields to merge into template for proof
--locale string no Locale for the proof message. If provided, must be a valid locale for the project. If not provided, falls back to the user's locale, then to the project's default locale.
--recipientEmail string no An email address that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.
--recipientUserId string no A user ID that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.

proof-inapp

Send a proof of an in-app message template to a specific user

iterable templates proof-inapp <templateId>
Option Type Required Description
templateId number yes Template ID to send proof for
--dataFields json no Fields to merge into template for proof
--locale string no Locale for the proof message. If provided, must be a valid locale for the project. If not provided, falls back to the user's locale, then to the project's default locale.
--recipientEmail string no An email address that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.
--recipientUserId string no A user ID that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.

proof-push

Send a proof of a push notification template to a specific user

iterable templates proof-push <templateId>
Option Type Required Description
templateId number yes Template ID to send proof for
--dataFields json no Fields to merge into template for proof
--locale string no Locale for the proof message. If provided, must be a valid locale for the project. If not provided, falls back to the user's locale, then to the project's default locale.
--recipientEmail string no An email address that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.
--recipientUserId string no A user ID that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.

proof-sms

Send a proof of an SMS template to a specific user

iterable templates proof-sms <templateId>
Option Type Required Description
templateId number yes Template ID to send proof for
--dataFields json no Fields to merge into template for proof
--locale string no Locale for the proof message. If provided, must be a valid locale for the project. If not provided, falls back to the user's locale, then to the project's default locale.
--recipientEmail string no An email address that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.
--recipientUserId string no A user ID that identifies a user profile in Iterable. Provide a recipientEmail or a recipientUserId (but not both), depending on how your project identifies users.

update-email

Update existing email template by templateId

iterable templates update-email <templateId>
Option Type Required Description
templateId number yes Template ID to update
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--fromEmail string no From email
--fromName string no From name
--html string no HTML content
--locale string no Template locale
--messageTypeId number no Message type ID
--name string no Template name
--plainText string no Plain text content
--subject string no Email subject

update-inapp

Update existing in-app message template by templateId

iterable templates update-inapp <templateId>
Option Type Required Description
templateId number yes Template ID to update
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--html string no HTML content of the in-app notification
--locale string no Template locale
--messageTypeId number no Message type ID
--name string no Template name

update-push

Update existing push notification template by templateId

iterable templates update-push <templateId>
Option Type Required Description
templateId number yes Template ID to update
--badge number no Badge count
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--locale string no Template locale
--message string no Push notification message
--messageTypeId number no Message type ID
--name string no Template name
--payload json no Custom payload
--sound string no Sound file
--title string no Push notification title

update-sms

Update existing SMS template by templateId

iterable templates update-sms <templateId>
Option Type Required Description
templateId number yes Template ID to update
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--locale string no Template locale
--message string no SMS message content
--messageTypeId number no Message type ID
--name string no Template name

upsert-email

Create or update email template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.

iterable templates upsert-email <clientTemplateId>
Option Type Required Description
clientTemplateId string yes Client template ID
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--fromEmail string no From email
--fromName string no From name
--html string no HTML content
--locale string no Template locale
--messageTypeId number no Message type ID
--name string no Template name
--plainText string no Plain text content
--subject string no Email subject

upsert-inapp

Create or update in-app message template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.

iterable templates upsert-inapp <clientTemplateId>
Option Type Required Description
clientTemplateId string yes Client template ID
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--html string no HTML content of the in-app notification
--locale string no Template locale
--messageTypeId number no Message type ID
--name string no Template name

upsert-push

Create or update push notification template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.

iterable templates upsert-push <clientTemplateId>
Option Type Required Description
clientTemplateId string yes Client template ID
--badge number no Badge count
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--locale string no Template locale
--message string no Push notification message
--messageTypeId number no Message type ID
--name string no Template name
--payload json no Custom payload
--sound string no Sound file
--title string no Push notification title

upsert-sms

Create or update SMS template. If a template with the specified clientTemplateId exists, it will be updated; otherwise, a new template will be created.

iterable templates upsert-sms <clientTemplateId>
Option Type Required Description
clientTemplateId string yes Client template ID
--campaignDataFields json no Campaign-level data fields available as {{field}} merge parameters during message rendering. These fields are overridden by user and event data fields of the same name.
--campaignId number no Associated campaign ID
--creatorUserId string no Creator user ID
--locale string no Template locale
--message string no SMS message content
--messageTypeId number no Message type ID
--name string no Template name

users (13)

bulk-update

Update multiple users at once

iterable users bulk-update --users <users...>
Option Type Required Description
--users json[] yes Array of users to update

delete (alias)

Delete a user by email or userId (auto-detected)

iterable users delete <identifier>
Option Type Required Description
identifier string yes Email address or userId

delete-by-email

Delete a user by email address (asynchronous)

iterable users delete-by-email <email>
Option Type Required Description
email string yes Email address of the user to delete

delete-by-userid

Delete a user by user ID (asynchronous, deletes all users with same userId)

iterable users delete-by-userid <userId>
Option Type Required Description
userId string yes User ID of the user to delete

get (alias)

Get a user by email or userId (auto-detected)

iterable users get <identifier>
Option Type Required Description
identifier string yes Email address or userId

get-by-email

Get user profile information by email address

iterable users get-by-email <email>
Option Type Required Description
email string yes Email address of the user to retrieve

get-by-userid

Get user profile information by user ID

iterable users get-by-userid <userId>
Option Type Required Description
userId string yes User ID to retrieve

get-fields

Get all user profile field definitions and their types

iterable users get-fields

get-sent-messages

Get messages sent to a specific user with optional filtering

iterable users get-sent-messages
Option Type Required Description
--campaignIds number[] no Only include messages from these campaigns
--email string no User email address
--endDateTime string no End date time (yyyy-MM-dd HH:mm:ss ZZ)
--excludeBlastCampaigns boolean no Exclude results from blast campaigns
--limit number no Maximum number of messages to return (default: 10, max: 1000)
--messageMedium Email | Push | InApp | SMS no Only include messages of this type
--startDateTime string no Start date time (yyyy-MM-dd HH:mm:ss ZZ)
--userId string no User ID (alternative to email)

merge

Merge two user profiles — all data and events from source are migrated to destination

iterable users merge
Option Type Required Description
--arrayMerge json[] no Array fields whose contents should be merged (only custom arrays, not Iterable-managed ones like devices)
--destinationEmail string no Email of the destination user profile to merge into
--destinationUserId string no User ID of the destination user profile to merge into
--sourceEmail string no Email of the source user profile to merge from
--sourceUserId string no User ID of the source user profile to merge from

update

Update user profile information (accepts email OR userId)

iterable users update
Option Type Required Description
--createNewFields boolean no Whether new fields should be ingested and added to the schema
--dataFields json no User data fields to update
--email string no User email address
--mergeNestedObjects boolean no Merge top-level objects instead of overwriting them
--preferUserId boolean no Whether to create new user if userId doesn't exist (email-based projects only)
--userId string no User ID (alternative to email)

update-email

Update a user's email address (only for email-based projects)

iterable users update-email <newEmail>
Option Type Required Description
newEmail string yes The new email address to assign to the specified user.
--currentEmail string no An email address that identifies a user profile in Iterable. Provide a currentEmail or a currentUserId (but not both), depending on how your project identifies users.
--currentUserId string no A user ID that identifies a user profile in Iterable. Provide a currentEmail or a currentUserId (but not both), depending on how your project identifies users.

update-subscriptions

Update user subscriptions (overwrites existing data for any non-null fields specified)

iterable users update-subscriptions
Option Type Required Description
--campaignId number no Campaign to attribute unsubscribes
--email string no An email address that identifies a user profile in Iterable. For each user in your request, provide an email or a userId (but not both), depending on how your project identifies users.
--emailListIds number[] no Lists that a user is subscribed to
--subscribedMessageTypeIds number[] no Individual message type IDs to subscribe (does not impact channel subscriptions). To set a value for this field, first have your CSM enable the opt-in message types feature. Otherwise, attempting to set this field causes an error.
--templateId number no Template to attribute unsubscribes
--unsubscribedChannelIds number[] no Email channel ids to unsubscribe from
--unsubscribedMessageTypeIds number[] no Individual message type IDs to unsubscribe (does not impact channel subscriptions).
--userId string no A user ID that identifies a user profile in Iterable. For each user in your request, provide an email or a userId (but not both), depending on how your project identifies users.
--validateChannelAlignment boolean no Defaults to true (validation enabled). When false, allows subscribing users to message types that belong to unsubscribed channels. By default, Iterable validates that subscribed message types belong to subscribed channels. Setting this to false bypasses this validation, allowing you to save message type preferences even when the parent channel is unsubscribed. Users won't receive messages from these types while the channel remains unsubscribed, but their preferences are preserved for when the channel becomes subscribed.

webhooks (2)

list

Get all webhooks for the project

iterable webhooks list

update

Update a webhook configuration

iterable webhooks update <webhookId>
Option Type Required Description
webhookId number yes Webhook ID to update
--active boolean no Whether webhook is active
--events string[] no Events to subscribe to
--url string no Webhook URL

keys

Manage stored API keys.

list

View all stored API keys

iterable keys list

add

Add a new API key

iterable keys add

update

Update an existing key's settings

iterable keys update <name-or-id>

activate

Switch to a different key

iterable keys activate <name-or-id>

deactivate

Deactivate the current key

iterable keys deactivate

delete

Remove a key by ID or name

iterable keys delete <name-or-id>

validate

Test the API connection

iterable keys validate