Skip to main content
Glama

test_campaign

Send a test email or push notification to specified recipients to validate campaign content and delivery before full deployment.

Instructions

Send a test Email or Push campaign to specific recipients.

channel: EMAIL or PUSH. campaign_name: Name for the test campaign. user_attributes: List of dicts identifying recipients. Each dict has one key-value pair. EMAIL examples: [{"email_id": "alice@example.com"}, {"email_id": "bob@example.com"}] PUSH examples: [{"customer_id": "uid-123"}, {"push_token": "tok-abc"}] Maximum 10 recipients for EMAIL test campaigns.

Required for EMAIL: from_address, and either html_content or template_id. subject is required unless template_id is provided. Required for PUSH: platforms (list of ANDROID/IOS/WEB), push_title, push_message.

Only campaigns created via the MoEngage API can be tested (dashboard-created campaigns will be rejected by MoEngage with an appropriate error).

--- EMAIL PARAMS --- subject: Email subject line (required unless template_id is provided). sender_name: Display name for the sender (defaults to campaign_name). from_address: Sending email address (required). reply_to_address: Reply-to address (defaults to from_address). connector_type: Email connector type (defaults to "AMAZON_SES"). connector_name: Connector config name (defaults to "default"). email_content_type: PROMOTIONAL or TRANSACTIONAL (default: PROMOTIONAL). html_content: Raw HTML body (mutually exclusive with template_id). template_id: Saved template ID (mutually exclusive with html_content). subscription_category: Required for PROMOTIONAL emails. preview_text: Preheader text shown in inbox previews. utm_params: UTM tracking parameters dict (injected at payload top level). 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 PARAMS --- platforms: Target platforms — list of ANDROID, IOS, WEB (required). push_title: Notification title (required). push_message: Notification body (required). android_notification_channel: Android channel ID (default: "default"). android_default_click_action: Android click action (default: "DEEPLINKING"). android_default_click_action_value: Deep link URL for DEEPLINKING. android_image_url: Android notification image URL. android_input_gif_url: Android notification GIF URL. android_key_value_pairs: Custom key-value pairs for Android. android_buttons: Android push action buttons list. android_advanced: Android advanced options dict. android_push_content_override: Replaces auto-built Android content block entirely. Flat android_* params are ignored when this is provided. android_summary: Android notification summary text. android_push_amp_plus_enabled: Enable Push Amplification Plus for Android (default: False). android_template_type: Android template type — BASIC, STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT, TIMER, TIMER_WITH_PROGRESS_BAR, or Custom (default: "BASIC"). android_custom_template_id: Custom template ID (used with Custom template_type). android_custom_template_version: Custom template version. android_timer: Timer configuration dict for countdown notifications. android_template_backup: Fallback template dict for custom templates. android_carousel_content: Carousel content dict for carousel notifications. android_background_color_code: Hex color for notification background (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT). android_app_name_color_code: Hex color for app name text (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT). android_notification_control_color: LIGHT or DARK control color (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT). android_include_app_name_and_time: Show app name and time (IMAGE_BANNER_WITH_TEXT). android_include_title_and_message: Show title and message (IMAGE_BANNER_WITH_TEXT). android_apply_background_color_in_text_editor: Apply background color in text editor (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT). android_image_scaling: FIT_INSIDE_IMAGE_CONTAINER or FILL_IMAGE_CONTAINER (SIMPLE_IMAGE_CAROUSEL, IMAGE_BANNER_WITH_TEXT). android_banner_image_url: Banner image URL (required for IMAGE_BANNER_WITH_TEXT). android_collapsed_push_notification: Collapsed push style e.g. "SAME_AS_TEMPLATE_BACKUP" (IMAGE_BANNER_WITH_TEXT). ios_title: iOS title (falls back to push_title if not set). ios_message: iOS message body (falls back to push_message if not set). ios_default_click_action: iOS click action type. ios_default_click_action_value: iOS click action URL/value. ios_subtitle: iOS notification subtitle. ios_allow_bg_refresh: Allow background refresh for iOS push. ios_rich_media_type: iOS rich media type — IMAGE, VIDEO, AUDIO, GIF. ios_rich_media_value: iOS 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 push. ios_background_color_code: Hex color for notification background (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL). ios_apply_background_color_in_text_editor: Apply background color in text editor (STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL). ios_template_type: iOS template type — BASIC, STYLIZED_BASIC, SIMPLE_IMAGE_CAROUSEL, or Custom (default: "BASIC"). ios_custom_template_id: Custom template ID (used with Custom template_type). ios_custom_template_version: Custom template version. ios_template_backup: Fallback template dict for custom templates. ios_carousel_content: Carousel content dict for carousel notifications. ios_send_to_all_eligible_device: Send to all eligible iOS devices (default True). ios_exclude_provisional: Exclude provisional push devices (mutually exclusive with ios_send_to_only_provisional). ios_send_to_only_provisional: Send only to provisional push devices (mutually exclusive with ios_exclude_provisional). ios_buttons: iOS push action buttons list. ios_advanced: iOS advanced options dict. ios_push_content_override: Replaces auto-built iOS content block entirely. Flat ios_* content params are ignored when this is provided. web_redirect_url: Web push redirect URL (required by MoEngage for WEB platform). web_image_url: Web push notification image URL. web_auto_dismiss_notification: Auto-dismiss web push notification after display. web_buttons: Web push action buttons list. web_advanced: Web advanced options dict. web_icon_image_type: DEFAULT or ICON_URL — web notification icon source. web_icon_url: Custom icon URL for web push (used when icon_image_type is ICON_URL). web_push_content_override: Replaces auto-built Web content block entirely. Flat web_* params are ignored when this is provided.

--- SHARED PARAMS --- tags: Campaign tags list (injected into basic_details). team: Team name (injected into basic_details). business_event: Business event name (injected into basic_details). send_to_triggered_platform_only: Send only to the platform that triggered the event (PUSH only). broadcast_live_activity_id: Live Activity broadcast ID (PUSH iOS only). geofences: Geofence configuration dict (PUSH LOCATION_TRIGGERED only). locales: List of locale codes for multi-locale content. For locale-keyed content structure, use campaign_content_override instead. variation_details: Variation metadata dict for A/B test content. personalization_details: Flat dict of attribute overrides for test rendering. Format: {"UserAttribute[First Name]": "Alice", "EventAttribute[App_Version]": "2.0"} identifier_type: Override auto-detected MoEngage identifier type (e.g. "PUSH_ID", "MOE_GAID", "ADVERTISING_IDENTIFIER", "CUSTOM_SEGMENT"). When set, bypasses key-based auto-detection from user_attributes keys entirely. locale_name: Locale name to inject into test_campaign_meta (e.g. "en", "ar"). variation: Variation name to inject into test_campaign_meta (e.g. "A", "B"). campaign_content_override: Replaces the entire auto-built campaign_content section. Highest-precedence override — all channel-specific content params are ignored.

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

Returns: {success: true, recipients_requested, total_success_count, total_failed_count, batches: [{platforms, locale, variation, success_count, failed_count, succeeded: [[...]], failed}], note?: str} on success. When recipients_requested > total_success_count + total_failed_count, a note explains that MoEngage silently skipped recipients without eligible devices for the targeted platform(s). {success: false, error, status_code, api_response} on API error. {success: false, error: ""} on input validation failure.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
channelYes
campaign_nameYes
user_attributesYes
subjectNo
sender_nameNo
from_addressNo
reply_to_addressNo
connector_typeNo
connector_nameNo
email_content_typeNo
html_contentNo
template_idNo
subscription_categoryNo
preview_textNo
utm_paramsNo
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
tagsNo
teamNo
business_eventNo
send_to_triggered_platform_onlyNo
broadcast_live_activity_idNo
geofencesNo
localesNo
variation_detailsNo
personalization_detailsNo
identifier_typeNo
locale_nameNo
variationNo
campaign_content_overrideNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior4/5

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

With no annotations, the description covers many behavioral aspects: rate limits, that MoEngage silently skips recipients without eligible devices, the return shape (success/failure with details), and validation failures. It explains parameter overrides (e.g., campaign_content_override replaces all auto-built content). However, it does not explicitly mention that sending test campaigns results in actual messages being sent (destructive in terms of external effect) or authentication needs.

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

Conciseness3/5

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

The description is very long (100+ lines) due to the high parameter count. It is structured with section headers and bullet-like lists, which aids readability. However, some information is repeated (e.g., default values mentioned both in parameter lists and inline notes), and the length could be reduced by relying more on schema descriptions if they were present.

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?

Given the high complexity (93 parameters, no schema descriptions, no annotations), the description is remarkably complete. It covers all parameters with their semantics, mutual exclusions, overrides, return values (success, error, notes), rate limits, platform-specific behaviors, and even edge cases like MoEngage silently skipping recipients. The output schema is fully described.

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?

Schema description coverage is 0%, so the description must fully compensate. It does so by explaining each parameter group (EMAIL, PUSH, SHARED) in detail, including required vs optional, defaults, mutual exclusivity (e.g., html_content and template_id), and behavioral effects (e.g., identifier_type bypasses auto-detection). It also provides examples for user_attributes and notes overrides.

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 clearly states the tool's purpose: 'Send a test Email or Push campaign to specific recipients.' It identifies the verb 'send' and resource 'test campaign', distinguishing it from sibling tools like create_campaign. The specificity of 'test' differentiates it from regular campaign creation or 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?

The description provides extensive usage context, including channel-specific requirements (EMAIL vs PUSH), prerequisites (only API-created campaigns can be tested), rate limits (5/min, 25/hr, 100/day), and examples for user_attributes. However, it does not explicitly state when not to use this tool versus alternatives like create_campaign, though it implies it's for testing only.

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