Skip to main content
Glama

update_campaign

Update an existing campaign by modifying its content, scheduling, or targeting, with automatic validation of status-based restrictions.

Instructions

Update an existing campaign using PATCH semantics — only provided fields are sent.

All flat params are optional. Only sub-objects where at least one param is set are included in the PATCH payload. Dict overrides replace auto-built sub-objects.

PATCH semantics: When providing a dict override like campaign_content, include ALL fields you want to keep — the API replaces the entire sub-object, not deep merge.

Status restrictions (validated locally before API call):

  • STOPPED / ARCHIVED: All updates rejected.

  • ACTIVE: trigger_condition, segmentation_details, conversion_goal_details, scheduling_details.delivery_type, scheduling_details.start_time blocked.

  • SCHEDULED: scheduling_details.delivery_type blocked.

--- REQUIRED --- campaign_id: Campaign to update. updated_by: Updater email address (must contain @). channel: EMAIL or PUSH.

--- STATUS CONTEXT --- campaign_status: Current status — drives restriction validation. campaign_delivery_type: e.g. EVENT_TRIGGERED — drives cache_warning.

--- EMAIL CONTENT (sends campaign_content when any email param set) --- subject: Email subject line. sender_name: Display name for sender. from_address: Sending email address. reply_to_address: Reply-to address. html_content: Raw HTML body (mutually exclusive with template_id). template_id: Saved template ID (mutually exclusive with html_content). preview_text: Email preheader text. cc_ids: CC email addresses list. bcc_ids: BCC email addresses list. custom_template_version: Template version number override. attachments: List of attachment dicts.

--- PUSH CONTENT (sends campaign_content when any push param set) --- platforms: Target platforms list — ANDROID, IOS, WEB (required for push content). push_title: Notification title (required for push content). push_message: Notification body (required for push content). android_notification_channel: Android channel ID (default: "default"). android_default_click_action: Click action type (default: "DEEPLINKING"). android_default_click_action_value: Deep link URL. android_image_url: Android notification image URL. android_input_gif_url: Android notification GIF URL. android_key_value_pairs: Custom key-value pairs. android_buttons: Android push action buttons list. android_advanced: Android advanced options dict. android_push_content_override: Replaces auto-built Android content block. android_summary: Android notification summary text. android_push_amp_plus_enabled: Enable Push Amplification Plus. android_template_type: BASIC, STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT, TIMER, TIMER_WITH_PROGRESS_BAR, or Custom. android_custom_template_id: Custom template ID. android_custom_template_version: Custom template version. android_timer: Timer config dict. android_template_backup: Fallback template dict. android_carousel_content: Carousel content dict. android_background_color_code: Hex color for notification background. android_app_name_color_code: Hex color for app name text. android_notification_control_color: LIGHT or DARK. android_include_app_name_and_time: Show app name and time. android_include_title_and_message: Show title and message. android_apply_background_color_in_text_editor: Apply bg color in editor. android_image_scaling: FIT_INSIDE_IMAGE_CONTAINER or FILL_IMAGE_CONTAINER. android_banner_image_url: Banner image URL. android_collapsed_push_notification: Collapsed push style. ios_title: iOS title (falls back to push_title). ios_message: iOS message (falls back to push_message). ios_default_click_action: iOS click action type. ios_default_click_action_value: iOS click action URL. ios_subtitle: iOS notification subtitle. ios_allow_bg_refresh: Allow background refresh. ios_rich_media_type: IMAGE, VIDEO, AUDIO, or GIF. ios_rich_media_value: Rich media URL value. ios_image_url: iOS notification image URL. ios_input_gif_url: iOS notification GIF URL. ios_key_value_pairs: Custom key-value pairs for iOS. ios_background_color_code: Hex color for notification background. ios_apply_background_color_in_text_editor: Apply bg color in editor. ios_template_type: BASIC, STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, or Custom. ios_custom_template_id: Custom template ID. ios_custom_template_version: Custom template version. ios_template_backup: Fallback template dict. ios_carousel_content: Carousel content dict. ios_send_to_all_eligible_device: Send to all eligible iOS devices. ios_exclude_provisional: Exclude provisional push devices. ios_send_to_only_provisional: Send only to provisional. ios_buttons: iOS push action buttons list. ios_advanced: iOS advanced options dict. ios_push_content_override: Replaces auto-built iOS content block. web_redirect_url: Web push redirect URL. web_image_url: Web push notification image URL. web_auto_dismiss_notification: Auto-dismiss web notification. web_buttons: Web push action buttons list. web_advanced: Web advanced options dict. web_icon_image_type: DEFAULT or ICON_URL. web_icon_url: Custom icon URL for web push. web_push_content_override: Replaces auto-built Web content block.

--- BASIC DETAILS (sends basic_details when any param set) --- campaign_name: New campaign name. content_type: PROMOTIONAL or TRANSACTIONAL (EMAIL only). subscription_category: Subscription category (EMAIL PROMOTIONAL only). tags: Campaign tags list (replaces existing tags). team: Team name. business_event: Business event name. send_to_triggered_platform_only: Send only to triggering platform (PUSH). broadcast_live_activity_id: Live Activity broadcast ID (PUSH iOS). geofences: Geofence config dict (PUSH LOCATION_TRIGGERED).

--- SCHEDULING (sends scheduling_details when any param set) --- scheduling_delivery_type: AT_FIXED_TIME, ASAP, SEND_IN_BTS, SEND_IN_USER_TIMEZONE. start_time: ISO 8601 start datetime. Blocked for ACTIVE campaigns. end_time: ISO 8601 expiry datetime. periodic_details: Periodic scheduling config dict. bts_details: Best-time-to-send config dict. user_timezone_details: User timezone config dict.

--- CONNECTOR --- connector_type: Email service provider. connector_name: Connector config name.

--- SEGMENTATION SHORTCUTS --- is_all_user_campaign: Target all users. custom_segment_id: Target a specific segment.

--- UTM --- utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_custom.

--- DICT OVERRIDES --- basic_details: Full basic_details dict. campaign_content: Full campaign_content dict. scheduling_details: Full scheduling_details dict. segmentation_details: Full segmentation_details dict. Blocked for ACTIVE. connector: Full connector dict. trigger_condition: Full trigger_condition dict. Blocked for ACTIVE. delivery_controls: Full delivery_controls dict. conversion_goal_details: Full conversion_goal_details dict. Blocked for ACTIVE. control_group_details: Full control_group_details dict. utm_params: Full UTM params dict. advanced: Full advanced dict (PUSH only). locales: Locale configuration for A/B testing. variation_details: Variation metadata for A/B testing.

Rate limit: 5/min, 25/hr, 100/day.

Returns: {success: true, campaign_id, dashboard_url} on success. (+ cache_warning if EVENT_TRIGGERED with content changes) {success: false, error, campaign_id} on status restriction. {success: false, error, status_code, api_response} on API error.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
updated_byYes
channelYes
campaign_statusNo
campaign_delivery_typeNo
subjectNo
sender_nameNo
from_addressNo
reply_to_addressNo
html_contentNo
template_idNo
preview_textNo
cc_idsNo
bcc_idsNo
custom_template_versionNo
attachmentsNo
platformsNo
push_titleNo
push_messageNo
android_notification_channelNo
android_default_click_actionNo
android_default_click_action_valueNo
android_image_urlNo
android_input_gif_urlNo
android_key_value_pairsNo
android_buttonsNo
android_advancedNo
android_push_content_overrideNo
android_summaryNo
android_push_amp_plus_enabledNo
android_template_typeNo
android_custom_template_idNo
android_custom_template_versionNo
android_timerNo
android_template_backupNo
android_carousel_contentNo
android_background_color_codeNo
android_app_name_color_codeNo
android_notification_control_colorNo
android_include_app_name_and_timeNo
android_include_title_and_messageNo
android_apply_background_color_in_text_editorNo
android_image_scalingNo
android_banner_image_urlNo
android_collapsed_push_notificationNo
ios_titleNo
ios_messageNo
ios_default_click_actionNo
ios_default_click_action_valueNo
ios_subtitleNo
ios_allow_bg_refreshNo
ios_rich_media_typeNo
ios_rich_media_valueNo
ios_image_urlNo
ios_input_gif_urlNo
ios_key_value_pairsNo
ios_background_color_codeNo
ios_apply_background_color_in_text_editorNo
ios_template_typeNo
ios_custom_template_idNo
ios_custom_template_versionNo
ios_template_backupNo
ios_carousel_contentNo
ios_send_to_all_eligible_deviceNo
ios_exclude_provisionalNo
ios_send_to_only_provisionalNo
ios_buttonsNo
ios_advancedNo
ios_push_content_overrideNo
web_redirect_urlNo
web_image_urlNo
web_auto_dismiss_notificationNo
web_buttonsNo
web_advancedNo
web_icon_image_typeNo
web_icon_urlNo
web_push_content_overrideNo
campaign_nameNo
content_typeNo
subscription_categoryNo
tagsNo
teamNo
business_eventNo
send_to_triggered_platform_onlyNo
broadcast_live_activity_idNo
geofencesNo
scheduling_delivery_typeNo
start_timeNo
end_timeNo
periodic_detailsNo
bts_detailsNo
user_timezone_detailsNo
connector_typeNo
connector_nameNo
is_all_user_campaignNo
custom_segment_idNo
utm_sourceNo
utm_mediumNo
utm_campaignNo
utm_termNo
utm_contentNo
utm_customNo
basic_detailsNo
campaign_contentNo
scheduling_detailsNo
segmentation_detailsNo
connectorNo
trigger_conditionNo
delivery_controlsNo
conversion_goal_detailsNo
control_group_detailsNo
utm_paramsNo
advancedNo
localesNo
variation_detailsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully discloses behavior: PATCH semantics, status-based restrictions (STOPPED/ARCHIVED rejected, ACTIVE/SCHEDULED blocked fields), sub-object replacement with dict overrides, and response structure including cache_warning. Very transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections and headers, front-loaded with key PATCH semantics and status restrictions. Every sentence adds value given the complexity; no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all aspects: input parameters with semantics, PATCH behavior, status restrictions, rate limits, and multiple response formats. Output schema exists but description also clarifies context and error cases. Very complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides extensive semantic meaning for all 115 parameters, grouping them logically, explaining defaults, mutual exclusivity (e.g., html_content vs template_id), and conditions (e.g., platforms required for push). Far exceeds baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Update an existing campaign using PATCH semantics', clearly stating the verb and resource. It distinguishes from sibling tools like create_campaign and change_campaign_status by emphasizing incremental update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear guidance on when updates are allowed via status restrictions and rate limits. However, lacks explicit comparison to sibling tools like change_campaign_status or create_campaign, which would help an agent choose between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/poddubnyoleg/moengage_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server