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 Campaigns → Templates
  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 →