Email and SMS campaigns tools
- list_email_campaigns: List the email campaigns in a project.
- get_email_campaign: Get the full definition of an email campaign.
- list_sms_campaigns: List the SMS and MMS campaigns in a project.
- get_sms_campaign: Get the full definition of an SMS or MMS campaign.
list_email_campaigns
Lists every email campaign in a project. Email campaigns send one-time or event-triggered emails to customers who match a filter. The response gives you the name, status (draft, active, or inactive), tags, archived flag, and whether the campaign is paused. Schedule, customer filter, email design, and A/B split configuration are not included here — use get_email_campaign for those.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
Response parameters
The tool returns an EmailCampaignsResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[EmailCampaignSummary] | The email campaigns defined in the project. |
error | str | null | Error message if the request failed. |
The EmailCampaignSummary object has the following fields:
| Field | Type | Description |
|---|---|---|
id | str | The email campaign's unique ID. |
name | str | The campaign's display name. |
status | str | One of draft, active, or inactive. |
is_paused | bool | Whether the campaign is paused. |
archived | bool | Whether the campaign has been archived. |
tags | list[str] | User-defined tags. |
company_id | str | The project ID this campaign belongs to. |
scenario_id | str | null | The ID of the underlying system scenario. |
created | any | null | Unix timestamp of when the campaign was created. |
created_by_display_name | str | Display name of the creator. |
edited | float | null | Unix timestamp of the last edit. |
edited_by_display_name | str | Display name of the last editor. |
initiative_id | str | null | The initiative this campaign belongs to, if any. |
is_global_object | bool | Whether the campaign is a global, shared object. |
locked | bool | Whether the campaign is locked by access groups. |
locked_for_current_user | bool | Whether the current user is locked out of editing. |
get_email_campaign
Returns the full definition of a single email campaign, including the schedule, customer filter, A/B split with all variants, silent hours, consent settings, frequency policy, recipient configuration, and throughput policy.
To avoid large response sizes, the beefree_template and jinja_html fields are stripped from each variant's design. The other design fields (subject, sender, preheader, provider, and so on) are still returned.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
email_campaign_id | str | Yes | The email campaign ID returned by list_email_campaigns. |
Response parameters
The tool returns an EmailCampaignResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | EmailCampaign | null | The full email campaign record. |
error | str | null | Error message if the request failed. |
The EmailCampaign object adds the following fields on top of the summary record:
| Field | Type | Description |
|---|---|---|
schedule | any | null | The trigger and schedule. type='now' sends immediately; type='datetime' sends at a fixed time; type='event' triggers on a customer event; type='optimal_time' uses an ML-predicted optimal send time. |
customer_filter | any | null | The conditions that decide which customers receive the campaign. |
split | any | null | The A/B test configuration. type='off' means a single variant; other values are manual, auto-winner, and contextual (bandits). Each variant contains an email design. |
design | any | null | The email design of the first variant. For multi-variant campaigns, use split.variants[0].design. The beefree_template and jinja_html fields are stripped. |
silent_hours | any | null | The silent hours configuration. Sends that fall inside quiet hours are delayed. |
consent_category | str | null | The GDPR consent category required to send to a customer. |
consent_category_tracking | str | null | The consent category for tracking pixels and click events. |
general_consent | bool | Whether the campaign uses the general consent category. |
frequency_policy | str | null | The ID of the frequency policy applied to this campaign. |
recipient_name | str | null | The recipient name template. May use Jinja2. |
recipient_email | str | null | The recipient email address template. May use Jinja2. |
communication_type | str | null | The communication type code used for consent and compliance routing. |
throughput_policy | any | null | The rate-limiting policy for this campaign. |
list_sms_campaigns
Lists every SMS and MMS campaign in a project. The response gives you the name, status, tags, archived flag, schedule, customer filter, and A/B split. The message content itself (the action field, with variants and translations) is not included here — use get_sms_campaign for that.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
Response parameters
The tool returns a SmsCampaignsResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | list[SmsCampaignSummary] | The SMS campaigns defined in the project. |
error | str | null | Error message if the request failed. |
The SmsCampaignSummary object has the following fields:
| Field | Type | Description |
|---|---|---|
id | str | The SMS campaign's unique ID. |
name | str | The campaign's display name. |
status | str | One of draft, active, or inactive. |
is_paused | bool | Whether the campaign is paused. |
archived | bool | Whether the campaign has been archived. |
tags | list[str] | User-defined tags. |
company_id | str | The project ID this campaign belongs to. |
scenario_id | str | null | The ID of the underlying system scenario. |
created | any | null | Unix timestamp of when the campaign was created. |
created_by_display_name | str | Display name of the creator. |
edited | float | null | Unix timestamp of the last edit. |
edited_by_display_name | str | Display name of the last editor. |
initiative_id | str | null | The initiative this campaign belongs to, if any. |
is_global_object | bool | Whether the campaign is a global, shared object. |
schedule | any | null | The trigger and schedule. type is now, event, datetime, or optimal_time. |
customer_filter | any | null | The conditions that decide which customers receive the campaign. |
split | any | null | The A/B split configuration. |
silent_hours | any | null | The silent hours configuration. |
get_sms_campaign
Returns the full definition of a single SMS or MMS campaign, including the action field with all message variants and their translations.
Request parameters
| Name | Type | Required? | Description |
|---|---|---|---|
project_id | str | Yes | The project ID returned by list_projects. |
sms_campaign_id | str | Yes | The SMS campaign ID returned by list_sms_campaigns. |
Response parameters
The tool returns an SmsCampaignResponse object with the following parameters:
| Parameter | Type | Description |
|---|---|---|
success | bool | Whether the request succeeded. |
data | SmsCampaign | null | The full SMS campaign record. |
error | str | null | Error message if the request failed. |
The SmsCampaign object adds the following fields on top of the summary record:
| Field | Type | Description |
|---|---|---|
action | any | null | The message definition. Contains the variants list (each with type of sms or mms, translations keyed by language code, and sender configuration), frequency_policy, consent_category, consent_category_tracking, general_consent, transfer_user_identity, url_params, and custom_event_properties. |
locked | bool | Whether the campaign is locked by access groups. |
locked_for_current_user | bool | Whether the current user is locked out of editing. |
throughput_policy | any | null | The rate-limiting policy for this campaign. |
Updated about 1 hour ago
