Skip to main content

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 Builder

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:

Step 1 - Basics

FieldDescriptionRequired
Campaign NameDescriptive nameYes
Campaign TypeScrape/Send/InviteYes
DescriptionNotes and contextNo

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:

Step 4 - Safety

{
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

StatusDescriptionActions
DraftNot yet runEdit, Run, Delete
ScheduledWaiting for start timeEdit, Cancel, Run Now
RunningCurrently executingPause, Stop, View Logs
PausedTemporarily stoppedResume, Stop, Edit
CompletedFinished successfullyView Results, Duplicate
FailedStopped due to errorView Logs, Retry

Campaign Actions

ActionDescription
RunStart campaign immediately
PausePause without losing progress
ResumeContinue paused campaign
StopCancel campaign
EditModify campaign settings
DuplicateCreate copy of campaign
DeleteRemove 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

LevelColorMeaning
INFOBlueNormal operation
SUCCESSGreenSuccessful action
WARNINGYellowNon-fatal issue
ERRORRedFailed 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

  1. Go to CampaignsTemplates
  2. Select a template
  3. Customize for your needs
  4. Save as new campaign

Available Templates

TemplateTypeDescription
Quick OutreachScrape-SendBasic message to group members
Community GrowthInviteInvite users to your group
Lead ResearchScrapeExtract and analyze members
Follow-up CampaignImport-SendRe-engage previous contacts

Creating Custom Templates

  1. Create and configure a campaign
  2. Click "Save as Template"
  3. Name your template
  4. 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",
}
}
Storage Limits

Chrome extension storage has limits. Large media files may need to be re-attached after browser restart.

Best Practices

Campaign Planning

  1. Start small — Test with 10-20 targets first
  2. Review logs — Monitor for errors and warnings
  3. Iterate — Adjust based on results
  4. Use templates — Save successful campaigns

Timing Recommendations

Campaign SizeRecommended Duration
50 targets1-2 hours
200 targets4-6 hours
500 targets12-24 hours
1000+ targetsMultiple days

Error Prevention

  1. Validate targets — Ensure usernames exist
  2. Check permissions — Verify admin rights for invites
  3. Monitor progress — Watch for patterns of failures
  4. 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:

  1. Review all wizard steps
  2. Verify group selection
  3. Check Telegram account status

Campaign Stuck

Causes:

  • Extended FloodWait
  • Network issues
  • Browser throttling

Solutions:

  1. Check campaign logs
  2. Try pausing and resuming
  3. Ensure browser tab is active

Poor Completion Rate

Causes:

  • Many privacy-restricted users
  • Invalid usernames
  • Aggressive settings

Solutions:

  1. Review error logs
  2. Clean target list
  3. Use safer anti-ban profile

Quick Reference

Campaign TypeStepsBest For
Scrape Only3Research
Scrape-Send5Full outreach
Import-Send4Follow-ups
Invite4Community building

Next: Learn about AI Features →