Skip to main content

Mass Marketing

Send WhatsApp campaigns to contact lists with scheduling, segmentation, auto-reply, and unsubscribe management.

Overview

The mass marketing system lets you:

  • Create and manage contact lists
  • Build campaigns with message text, media, and scheduling
  • Send campaigns across multiple WhatsApp sessions (round-robin)
  • Track delivery status per contact
  • Handle unsubscribes automatically
  • Configure auto-reply for campaign responses

Creating a Campaign

curl

curl -X POST https://www.wazion.com/api/mcp/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $WAZION_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "create_campaign",
"arguments": {
"name": "March Promotion",
"message_text": "Hi! We have a special offer for you this month. Check it out at https://mystore.com/promo",
"list_id": 1,
"include_unsubscribe_link": true,
"send_interval_seconds": 30,
"session_ids": [1, 2]
}
},
"id": 1
}'

Python

import requests

def create_campaign(token, name, message, list_id, session_ids):
return requests.post(
"https://www.wazion.com/api/mcp/",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "create_campaign",
"arguments": {
"name": name,
"message_text": message,
"list_id": list_id,
"session_ids": session_ids,
"include_unsubscribe_link": True,
"send_interval_seconds": 30
}
},
"id": 1
}
).json()

Campaign Lifecycle

draft → start → running → completed

pause → resume → running

cancel
ToolDescription
create_campaignCreate a new campaign (starts as draft)
start_campaignBegin sending
pause_campaignPause a running campaign
resume_campaignResume a paused campaign
cancel_campaignCancel permanently
archive_campaignArchive a completed campaign
unarchive_campaignRestore an archived campaign

Contact Lists

Create a List

{
"name": "create_contact_list",
"arguments": {
"name": "VIP Customers",
"description": "High-value repeat customers"
}
}

Add Contacts

{
"name": "add_contacts_to_list",
"arguments": {
"list_id": 1,
"contacts": [
{"phone": "+34600000001", "name": "John"},
{"phone": "+34600000002", "name": "Maria"}
]
}
}

Import from Conversations

Import all phone numbers from your WhatsApp conversation history:

{
"name": "import_contacts_from_conversations",
"arguments": {
"list_id": 1
}
}

Create List from Inactive Customers

{
"name": "create_list_from_inactive",
"arguments": {
"days": 30,
"name": "Inactive 30+ days"
}
}

Scheduling Campaigns

{
"name": "create_campaign",
"arguments": {
"name": "Black Friday",
"message_text": "Black Friday sale is live!",
"list_id": 1,
"session_ids": [1],
"scheduled_at": "2026-11-27T09:00:00"
}
}

Cancel a scheduled campaign:

{
"name": "cancel_campaign_schedule",
"arguments": {
"campaign_id": 5
}
}

Segmentation

Filter contacts within a list before sending:

{
"name": "count_filtered_contacts",
"arguments": {
"list_id": 1,
"segment_filters": {
"tags": ["vip"],
"exclude_tags": ["unsubscribed"]
}
}
}

Blacklist

Block specific numbers from receiving campaigns:

ToolDescription
list_blacklistView blocked numbers
add_to_blacklistBlock a number
remove_from_blacklistUnblock a number
bulk_add_to_blacklistBlock multiple numbers

Unsubscribe Management

ToolDescription
get_unsubscribed_listView unsubscribed contacts
remove_unsubscribed_bulkRemove unsubscribe records

Campaign Configuration

Global settings for mass marketing:

{
"name": "save_mass_marketing_config",
"arguments": {
"auto_reply_enabled": true,
"auto_reply_text": "Thanks for your reply! An agent will contact you shortly.",
"auto_reply_translate": true,
"auto_reply_unsubscribe": true
}
}

All Mass Marketing Tools (39 tools)

ToolTypeDescription
get_mass_marketing_configqueryGet marketing configuration
save_mass_marketing_configmutationSave marketing configuration
list_contact_listsqueryList all contact lists
create_contact_listmutationCreate a contact list
delete_contact_listmutationDelete a contact list
get_contact_list_detailqueryView contacts in a list
add_contacts_to_listmutationAdd contacts to a list
remove_contact_from_listmutationRemove a contact
remove_contacts_bulkmutationRemove multiple contacts
import_marketing_contactsmutationImport contacts (various sources)
import_contacts_manualmutationImport from typed phone numbers
import_contacts_from_conversationsmutationImport from conversation history
list_campaignsqueryList all campaigns
get_campaignqueryGet campaign details
create_campaignmutationCreate a campaign
update_campaignmutationUpdate a draft campaign
delete_campaignmutationDelete a campaign
duplicate_campaignmutationDuplicate a campaign
start_campaignmutationStart sending
pause_campaignmutationPause sending
resume_campaignmutationResume sending
cancel_campaignmutationCancel permanently
archive_campaignmutationArchive completed campaign
unarchive_campaignmutationRestore archived campaign
approve_campaignmutationApprove pending campaign
cancel_campaign_schedulemutationCancel scheduled send
get_campaign_logsqueryView send logs
export_campaign_csvqueryExport logs as CSV
get_mass_marketing_statsqueryCampaign statistics
count_filtered_contactsqueryCount contacts with filters
get_marketing_sessionsqueryWhatsApp sessions for marketing
assign_marketing_sessionmutationEnable/disable session for marketing
list_blacklistqueryView blocked numbers
add_to_blacklistmutationBlock a number
remove_from_blacklistmutationUnblock a number
bulk_add_to_blacklistmutationBlock multiple numbers
get_unsubscribed_listqueryView unsubscribed contacts
remove_unsubscribed_bulkmutationRemove unsubscribe records
create_list_from_inactivemutationCreate list from inactive customers
create_list_from_followupmutationCreate list from follow-up data

Gotchas

  • Each campaign message costs 1000 credits (2x the normal message cost).
  • Default send interval is 30 seconds between messages to avoid WhatsApp rate limits.
  • The session_ids field accepts multiple sessions for round-robin sending.
  • Campaigns can only be updated while in draft status.
  • The unsubscribe link uses HMAC tokens for security.
  • Contacts are automatically excluded if they are in the unsubscribe or blacklist.