Campaign Builder
The Campaign Builder is TeleSender's powerful workflow automation tool that combines scraping, sending, and inviting into sophisticated marketing campaigns with scheduling and analytics.
Overview
Create end-to-end marketing workflows with our intuitive wizard interface. Build once, run repeatedly, and track results across all your campaigns.
Campaign Types
TeleSender supports four campaign types:
1. Scrape Only
Extract members from a group for later use.
Select Group → Configure Scraper → Run → Save Results
Use cases:
- Building contact databases
- Research and analysis
- Preparing for future campaigns
2. Scrape-Send
Scrape members and immediately send messages.
Select Source Group → Scrape Members → Compose Message → Send
Use cases:
- Outreach to related communities
- Announcing products/services
- Community building
3. Import-Send
Import existing contacts and send messages.
Import Contacts → Select Targets → Compose Message → Send
Use cases:
- Follow-up campaigns
- Reaching previously scraped users
- External list outreach
4. Invite
Invite users to your groups or channels.
Select Target Group → Import Users → Configure → Invite
Use cases:
- Growing communities
- Building audiences
- Event promotion
Campaign Wizard
Step 1: Campaign Basics
Configure campaign identity:
| Field | Description | Required |
|---|---|---|
| Campaign Name | Descriptive name | Yes |
| Campaign Type | Scrape/Send/Invite | Yes |
| Description | Notes and context | No |
Step 2: Source Configuration
Configure data source based on campaign type:
For Scrape Campaigns
Select the source group and scraping parameters:
{
source: {
type: "scrape",
groupId: "-1001234567890",
groupName: "Marketing Group",
limit: 500,
filters: {
excludeBots: true,
recentOnly: false,
}
}
}
For Import Campaigns
Upload or select existing contacts:
{
source: {
type: "import",
contacts: [/* array of usernames */],
fromHistory: "scrape-id-123", // or upload new
}
}
Step 3: Action Configuration
Configure the main action (send/invite):
Message Composition (Send Campaigns)
{
message: {
text: "Hi! I noticed you're interested in...",
media: [
{
type: "image",
file: "promo.jpg",
caption: "Check this out!"
}
]
}
}
Media support:
- Images (JPG, PNG, GIF, WEBP)
- Videos (MP4, MOV)
- Documents (PDF, DOC, etc.)
- Multiple attachments per message
Invite Configuration (Invite Campaigns)
{
invite: {
targetGroupId: "-1001234567890",
targetGroupName: "My Community",
}
}
Step 4: Safety & Timing
Configure delays and anti-ban settings:
{
safety: {
antiBanProfile: "SAFE",
customDelays: {
enabled: false,
sendDelay: 45000,
inviteDelay: 90000,
}
}
}
Anti-ban profile options:
- Ultra Safe
- Safe (recommended)
- Moderate
- Fast
- Custom
Step 5: Schedule (Optional)
Schedule for future execution:
{
schedule: {
enabled: true,
startDate: "2024-01-15",
startTime: "09:00",
timezone: "UTC",
}
}
Or run immediately by skipping scheduling.
Campaign Management
Campaign List View
┌─────────────────────────────────────────────────────────┐
│ My Campaigns [+ New] │
├─────────────────────────────────────────────────────────┤
│ ☐ Marketing Outreach Jan Running 78% │
│ └── Scrape-Send • 156/200 • Started 2h ago │
│ │
│ ☐ Community Growth Scheduled 0% │
│ └── Invite • Jan 15, 9:00 AM │
│ │
│ ☐ Product Launch Completed 100% │
│ └── Import-Send • 500/500 • Dec 28 │
│ │
│ ☐ Lead Research Draft 0% │
│ └── Scrape Only • Not started │
└─────────────────────────────────────────────────────────┘
Campaign Status
| Status | Description | Actions |
|---|---|---|
| Draft | Not yet run | Edit, Run, Delete |
| Scheduled | Waiting for start time | Edit, Cancel, Run Now |
| Running | Currently executing | Pause, Stop, View Logs |
| Paused | Temporarily stopped | Resume, Stop, Edit |
| Completed | Finished successfully | View Results, Duplicate |
| Failed | Stopped due to error | View Logs, Retry |
Campaign Actions
| Action | Description |
|---|---|
| Run | Start campaign immediately |
| Pause | Pause without losing progress |
| Resume | Continue paused campaign |
| Stop | Cancel campaign |
| Edit | Modify campaign settings |
| Duplicate | Create copy of campaign |
| Delete | Remove campaign permanently |
Progress Monitoring
Live Progress View
┌─────────────────────────────────────────────────────────┐
│ Campaign: Marketing Outreach Jan │
│ Status: Running │
├─────────────────────────────────────────────────────────┤
│ Overall Progress │
│ █████████████████████░░░░░░░░░ 68% │
│ │
│ Phase: Sending Messages │
│ ████████████████████████░░░░░ 85% │
│ │
│ Statistics: │
│ ├── Scraped: 200/200 ✓ │
│ ├── Sent: 136/200 │
│ ├── Failed: 8 │
│ └── Remaining: 56 │
│ │
│ Current: Sending to @john_doe │
│ Next action in: 42s │
│ │
│ [Pause] [Stop] [View Logs] │
└─────────────────────────────────────────────────────────┘
Real-Time Logs
View operation logs as they happen:
12:45:23 [INFO] Campaign started: Marketing Outreach Jan
12:45:24 [INFO] Phase 1: Starting scrape operation
12:45:25 [SUCCESS] Scraped user: @alice (1/200)
12:46:15 [SUCCESS] Scraped user: @bob (2/200)
...
12:58:45 [INFO] Phase 1 complete: 200 members scraped
12:58:46 [INFO] Phase 2: Starting send operation
12:58:47 [SUCCESS] Message sent to @alice (1/200)
12:59:32 [WARNING] FloodWait: Waiting 60 seconds
13:00:33 [SUCCESS] Message sent to @bob (2/200)
...
Log Levels
| Level | Color | Meaning |
|---|---|---|
| INFO | Blue | Normal operation |
| SUCCESS | Green | Successful action |
| WARNING | Yellow | Non-fatal issue |
| ERROR | Red | Failed action |
Campaign Statistics
After completion, view detailed stats:
{
statistics: {
campaign: "Marketing Outreach Jan",
type: "scrape-send",
startTime: "2024-01-10T12:45:23Z",
endTime: "2024-01-10T14:32:15Z",
duration: "1h 46m 52s",
scrape: {
total: 200,
successful: 200,
failed: 0,
},
send: {
total: 200,
sent: 182,
failed: 10,
skipped: 8,
},
timing: {
avgDelay: "47.2s",
totalPauseTime: "5m 23s",
floodWaits: 2,
}
}
}
Statistics Dashboard
┌─────────────────────────────────────────────────────────┐
│ Campaign Results: Marketing Outreach Jan │
├─────────────────────────────────────────────────────────┤
│ │
│ Scraping Sending │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ 200 │ │ 182 │ │
│ │ members │ │ sent │ │
│ │ 100% │ │ 91% │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ Duration: 1h 46m Avg Delay: 47.2s │
│ FloodWaits: 2 Errors: 10 │
│ │
│ [Export Report] [View Details] [Duplicate] │
└─────────────────────────────────────────────────────────┘
Campaign Templates
Using Templates
- Go to Campaigns → Templates
- Select a template
- Customize for your needs
- Save as new campaign
Available Templates
| Template | Type | Description |
|---|---|---|
| Quick Outreach | Scrape-Send | Basic message to group members |
| Community Growth | Invite | Invite users to your group |
| Lead Research | Scrape | Extract and analyze members |
| Follow-up Campaign | Import-Send | Re-engage previous contacts |
Creating Custom Templates
- Create and configure a campaign
- Click "Save as Template"
- Name your template
- Reuse for future campaigns
Storage and Persistence
Campaign Data
Campaigns are stored locally:
// Storage key
"telesender-campaigns"
// Campaign structure
{
id: "campaign-uuid-123",
name: "Marketing Outreach",
type: "scrape-send",
status: "running",
config: { /* full configuration */ },
progress: {
phase: "send",
completed: 136,
total: 200,
},
logs: [ /* log entries */ ],
statistics: { /* stats */ },
createdAt: 1704067200000,
updatedAt: 1704070800000,
}
File Attachments
Media files are serialized as base64 for persistence:
{
media: {
name: "promo.jpg",
type: "image/jpeg",
data: "base64-encoded-content",
}
}
Chrome extension storage has limits. Large media files may need to be re-attached after browser restart.
Best Practices
Campaign Planning
- Start small — Test with 10-20 targets first
- Review logs — Monitor for errors and warnings
- Iterate — Adjust based on results
- Use templates — Save successful campaigns
Timing Recommendations
| Campaign Size | Recommended Duration |
|---|---|
| 50 targets | 1-2 hours |
| 200 targets | 4-6 hours |
| 500 targets | 12-24 hours |
| 1000+ targets | Multiple days |
Error Prevention
- Validate targets — Ensure usernames exist
- Check permissions — Verify admin rights for invites
- Monitor progress — Watch for patterns of failures
- Use appropriate profile — Match anti-ban to account value
Troubleshooting
Campaign Won't Start
Causes:
- Missing required configuration
- Invalid source group
- Account not connected
Solutions:
- Review all wizard steps
- Verify group selection
- Check Telegram account status
Campaign Stuck
Causes:
- Extended FloodWait
- Network issues
- Browser throttling
Solutions:
- Check campaign logs
- Try pausing and resuming
- Ensure browser tab is active
Poor Completion Rate
Causes:
- Many privacy-restricted users
- Invalid usernames
- Aggressive settings
Solutions:
- Review error logs
- Clean target list
- Use safer anti-ban profile
Quick Reference
| Campaign Type | Steps | Best For |
|---|---|---|
| Scrape Only | 3 | Research |
| Scrape-Send | 5 | Full outreach |
| Import-Send | 4 | Follow-ups |
| Invite | 4 | Community building |