Campaign Walkthrough - Your First Bulk Send
Complete guide to sending your first WhatsApp campaign.
Prerequisites
✅ WhatsApp Business connected to IceCore
✅ At least 1 approved message template
✅ CSV file with recipients
Step 1: Prepare Your Template
Option A: Use Existing Template
List your approved templates:
GET /api/whatsapp/templates?workspaceId={id}&status=APPROVEDOption B: Create New Template
POST /api/whatsapp/templates
{
"workspaceId": "workspace-uuid",
"name": "black_friday_sale",
"language": "en",
"category": "MARKETING",
"components": [
{
"type": "BODY",
"text": "Hi {{1}}! 🎉 Black Friday: {{2}}% off everything! Use code: {{3}}",
"example": {
"body_text": [["Aibek", "50", "BF2025"]]
}
}
]
}⏳ Wait 24-48 hours for Meta approval
Step 2: Prepare Recipients CSV
Create a CSV file with your recipients:
Format:
phone,name,discount,code
+77001234567,Aibek,50,BF2025
+77007654321,Samat,50,BF2025
+77009876543,Arman,50,BF2025
Rules:
First row = column headers
phonecolumn is requiredOther columns = template variables (in order)
Max 1,000 rows per campaign
Step 3: Send Campaign
Via Dashboard (Easiest)
Navigate to: Campaigns → New Campaign
Enter campaign name: "Black Friday 2025"
Select template: "black_friday_sale"
Upload your CSV
Review summary
Click "Send Campaign"
Via API (Programmatic)
POST /api/whatsapp/bulk-send
Content-Type: application/json
Cookie: your_session_cookie
{
"workspaceId": "workspace-uuid",
"templateName": "black_friday_sale",
"languageCode": "en",
"recipients": [
{
"phone": "+77001234567",
"variables": {
"name": "Aibek",
"discount": "50",
"code": "BF2025"
}
}
]
}Expected time: ~1 minute per 1,000 messages
Step 4: Monitor Results
Real-Time Progress
Results returned immediately:
{
"total": 1000,
"successful": 987,
"failed": 13,
"results": [
{
"phone": "+77001234567",
"success": true,
"messageId": "wamid.ABC123..."
},
{
"phone": "+77007654321",
"success": false,
"error": "Invalid phone number"
}
]
}Campaign History
View all sent campaigns:
Dashboard: Campaigns → Campaign History
Shows:
Total recipients
Success rate
Cost estimate
Sent by (user)
Timestamp
Step 5: Track Responses (Optional)
Customers who reply to your campaign will create new conversations in IceCore.
Setup webhook to get notified:
POST /api/webhooks
{
"workspaceId": "workspace-uuid",
"url": "https://your-server.com/webhooks",
"events": ["message.received"]
}Your webhook receives:
{
"event": "message.received",
"data": {
"message_id": "msg_123",
"conversation_id": "conv_456",
"direction": "inbound",
"text": "I want to buy!",
"channel": "whatsapp"
}
}Real-World Example
E-commerce Order Updates
Template: order_shipped
Hi {{1}}, great news! Your order {{2}} has shipped.
Track it here: {{3}}
CSV:
phone,name,order_id,tracking_url
+77001234567,Aibek,ORD-12345,https://track.kz/12345
+77007654321,Samat,ORD-67890,https://track.kz/67890
Send:
POST /api/whatsapp/bulk-send
{
"templateName": "order_shipped",
"recipients": [
{
"phone": "+77001234567",
"variables": {
"name": "Aibek",
"order_id": "ORD-12345",
"tracking_url": "https://track.kz/12345"
}
}
]
}Result: Each customer gets personalized shipping notification!
Cost Example
Campaign: 1,000 recipients, marketing template
Calculation:
1,000 messages × $0.055 = $55 USD
Delivery rate: 98% → 980 delivered
Actual cost: ~$53.90
Tip: Test with 10-50 recipients first to verify template works correctly.
Best Practices
Start small: Test with 10-20 recipients
Verify template: Check all variables are mapped
Clean data: Remove duplicates, invalid numbers
Time it right: Send during business hours in recipient timezone
Monitor closely: Watch first 100 sends for issues
Have budget: Know your WhatsApp account balance
Common Mistakes
❌ Sending without approval
Template status: PENDING
Result: All sends fail
✅ Solution: Wait for APPROVED status
❌ Wrong variable count
Template has 3 variables, CSV has 2 columns
Result: Failed sends
✅ Solution: Match CSV columns to template variables
❌ Invalid phone format
Phone: 77001234567 (missing +)
Result: Failed send
✅ Solution: Use international format: +77001234567
Next Steps
After your first campaign:
Track responses: Setup webhooks for
message.receivedAnalyze results: View campaign history
Optimize templates: A/B test different messages
Segment audiences: Create targeted campaigns
Automate: Use API for recurring campaigns
Questions? → support@icecore.ai