C

Contactd

Telegram outreach platform

C

Reset password

We'll send you a reset link

C

Set new password

Enter your new password below

Verify your email

We sent a 6-digit code to

C

Connect service key

Paste the service key provided by your admin to activate

Access Revoked

Your service key has been deactivated by the administrator.

This could mean:

  • Your subscription has ended
  • Your key was revoked for policy reasons
  • An admin is performing maintenance

Have a new key? Enter it below to reactivate:

Or contact your administrator for assistance.

C
Contactd

Dashboard

Total Messages
0
Total Replies
0
reply rate
Total AI Replies
0
auto-generated
Campaigns
0
Active Accounts
0
Recent Campaigns
?Your 3 most recent campaigns
No campaigns yet. Create your first campaign.
Accounts
?All your connected Telegram accounts and their current status
FloodWait — sending paused ?Telegram rate-limited your account. Sending pauses automatically and resumes when the wait expires. Reduce your sending speed to avoid this.
No accounts yet. Add your first account.
Recent Activity
?Daily sent, replied, and failed messages aggregated across all your campaigns (last 30 days)
No activity data yet. Start a campaign to see your daily activity here.

Accounts

Account limit reached
Your plan allows account(s). Contact admin to upgrade.
AccountStatus ?Active = connected and ready. Pending = waiting for verification. Disabled = turned off. Banned = restricted by TelegramProxy ?SOCKS5 proxy required for each account. Protects your IP and prevents Telegram bansAPI IDAdded
No accounts yet. Add your first Telegram or WhatsApp account to get started.
Clients

All registered users and their Telegram accounts

No clients yet. Click Refresh to load.

Contacts

NameUsername ?Telegram @usernamePhoneEmailCompanyPositionCountryCityLists
No contacts found. Import contacts or add them manually.

No lists yet. Create one to organize your contacts.

Clients

Contacts and lists per user

No clients yet. Click Refresh to load.

Get Contacts

Get Contacts coming soon

Get contacts in companies, industries, and countries through our integrations with key data providers — coming in a future update.

Planned

Marketplace

Marketplace coming soon

Purchase ready-to-use Telegram and WhatsApp accounts, SOCKS5 proxies, and other resources for your outreach needs — all in one place.

Planned

Campaigns

No campaigns yet. Create your first campaign to get started. No archived campaigns.
RECIPIENT STATUS MESSAGE CREATED SENT ERROR
No campaign messages found

AI
FloodWait: sending is temporarily paused for
Progress
?Overall campaign progress across all message steps and recipients
Sent
all outgoing
Failed
delivery errors
Replied
incoming replies
AI Replies
auto-generated
Pending
in queue
Total
recipients
Timeline
?Key dates of campaign lifecycle
Created
Started
Completed
Scheduled
Message Steps
?Multi-step campaigns send follow-up messages after a delay. Each step can be configured to send only if no reply was received.
Recipient Status Step Replied Last Sent Error
No recipients
AI Auto-Reply Configuration Disabled Enabled
AI auto-reply was not enabled for this campaign.
System Prompt
Example Reply
Max Tokens
Conversation Replies
No replies yet
Loading analytics...
Delivery Rate
Reply Rate
Failure Rate
Daily Activity
?Messages sent, replies received and failures per day. Replies are counted on the day they were received.
No daily data available yet
Step Funnel
?How many recipients progressed through each step, and their current status at each stage
Summary
Total Recipients
Messages Sent
Replies Received
Failed

Messaging

Choose recipient

For TG: @username or phone. For WhatsApp: phone with country code (e.g. +12025551234)

?Enter a phone number with country code, @username (TG only), or numeric chat_id
?Choose which account to send from

Compose message

Write the message text. You can optionally schedule it for later

?Leave empty to send immediately. Set a date/time to queue the message for later delivery

Review & send

Confirm the details before sending

Recipient
Account
Scheduled
Message preview
ID:
Status:
RECIPIENT STATUS MESSAGE CREATED SENT ERROR
No messages found

Documentation

Getting Started

Contactd is a multi-platform outreach tool that lets you send personalized messages at scale via Telegram and WhatsApp.

Quick setup checklist
1. Add a Telegram or WhatsApp account
2. Import or create your contact list
3. Create a campaign with your message
4. Launch and monitor results on the Dashboard
Telegram
Requires API credentials from my.telegram.org. Verify via SMS code or QR scan. Proxy required.
Read setup guide →
WhatsApp
No API credentials needed. Simply scan a QR code with your phone to connect. Proxy required.
Read setup guide →

Add Telegram Account

Before you can send messages, you need to connect at least one Telegram account. Each account requires API credentials from Telegram.

Step 1 — Get Telegram API credentials

  1. Go to my.telegram.org in your browser
  2. Log in with your Telegram phone number — you will receive a confirmation code in the Telegram app
  3. Click API development tools
  4. Fill out the form:
    • App title — any name (e.g. "My App")
    • Short name — any short name (e.g. "myapp")
    • Platform — select Desktop
  5. Click Create application
  6. You will see your api_id (a number) and api_hash (a long string). Save both — you'll need them in the next step.
Important: Each Telegram phone number can only have one API app. If you already created one before, you'll see the existing credentials — just use those.

Step 2 — Add the account in Contactd

  1. Navigate to Accounts page and click Add Account
  2. Step 1: Enter a display name for the account
  3. Step 2: Enter your phone number (with country code), api_id, api_hash, and optionally your TG username
  4. Step 3: Configure a SOCKS5 proxy (required) — enter host, port, username and password, then test the connection
  5. Click Create — the account will appear in the table with status "pending"
Required: Accounts without a proxy will not be able to send messages. Use a dedicated SOCKS5 proxy for each account — do not share the same proxy across multiple accounts.

Step 3 — Verify the account

You have two options to verify:

Option A: SMS Code
Click Send Code → enter the code you receive via SMS or Telegram → click Verify. If 2FA is enabled, you'll also need to enter your cloud password.
Option B: QR Code
Click QR → scan the QR code with your Telegram app (Settings → Devices → Link Desktop Device). The account activates automatically.

Once verified, the account status changes to active and it's ready to send messages.

Step 4 — Cloud Password (2FA)

If your Telegram account has Two-Step Verification enabled, you will be prompted to enter your cloud password after the verification code. If 2FA is not enabled yet, we strongly recommend turning it on:

  1. Open Telegram on your phone
  2. Go to Settings → Privacy and Security → Two-Step Verification
  3. Set a strong password and save the recovery email
Recommended: Cloud password protects your account from unauthorized logins. Without it, anyone with access to your SIM card can log into your account.

Add WhatsApp Account

WhatsApp accounts connect via QR code — no API credentials needed. Your phone must have WhatsApp installed and active.

Step 1 — Create the account

  1. Go to Accounts and click Add Account
  2. Select platform: WhatsApp
  3. Enter a display name and your phone number (with country code, e.g. +7912...)
  4. Configure a SOCKS5 proxy (required) — enter host, port, username and password, then test the connection
  5. Click Create

Step 2 — Scan QR code

  1. After creation, a QR code will appear on screen
  2. Open WhatsApp on your phone
  3. Go to Settings → Linked Devices → Link a Device
  4. Scan the QR code displayed in Contactd
  5. The account will automatically switch to active
QR code expires quickly. If the code expires before you scan it, click Reconnect to generate a new one. You have about 60 seconds per QR code.

Troubleshooting

Status: disconnected
Your WhatsApp session lost connection. Click Reconnect — if the session is still valid, it will reconnect automatically without a new QR scan.
Encryption error
This happens when encryption keys become out of sync. Click Reconnect — the keys will be cleared and you'll need to scan a new QR code. Your login is preserved.
Session logged out
You or someone removed the linked device from WhatsApp settings on your phone. You'll need to scan a new QR code to reconnect.
Important: WhatsApp requires your phone to have an active internet connection. If your phone goes offline for an extended period, the linked device may disconnect.

Authentication can drop unexpectedly

WhatsApp Web sessions are inherently unstable. Unlike Telegram (which uses persistent sessions), WhatsApp can revoke linked device access at any time without warning. This is normal behavior and not a platform bug.

Common reasons authentication drops:

  • Phone went offline — if your phone loses internet for more than ~14 days, all linked devices are automatically disconnected
  • WhatsApp app update — major updates on your phone can reset linked device sessions
  • Server-side session expiry — WhatsApp periodically rotates encryption keys, which can invalidate existing sessions
  • Too many linked devices — WhatsApp allows up to 4 linked devices. Adding a 5th disconnects the oldest
  • Account flagged — if WhatsApp detects suspicious activity, it may force-disconnect all linked devices
  • Platform restarts — server deployments or container restarts require sessions to re-authenticate. Most will auto-reconnect, but some may need a new QR scan
What to do when authentication drops
  1. Check account status on the Accounts page — look for disconnected or error status
  2. Click Reconnect — if the session is still valid, it will auto-reconnect without a QR scan
  3. If reconnect fails, you'll see a new QR code — scan it from your phone to re-link
  4. Running campaigns will automatically resume once the account is back to active
Tip: Check your WhatsApp accounts at least once a day if you have active campaigns. Set up the Contactd dashboard as your default tab to quickly spot disconnected accounts on the status overview.

Managing Contacts

Contacts are the people you want to reach. You can add them manually or import in bulk.

Importing contacts

  1. Go to Contacts → click Import
  2. Upload a CSV file with columns: username, first_name, last_name, phone (at minimum)
  3. Select or create a Contact List to organize them
  4. Click Import — contacts will be added and deduplicated automatically

Contact Lists

Lists help you organize contacts into groups. When creating a campaign, you select one or more lists as recipients. You can manage lists from the Lists tab on the Contacts page.

Campaigns

Campaigns let you send messages to an entire contact list with just a few clicks. You can use Telegram accounts, WhatsApp accounts, or both in a single campaign — messages will be distributed across all selected accounts.

Creating a campaign

  1. Go to Campaigns and click New Campaign
  2. Give your campaign a name
  3. Select the contact lists you want to target
  4. Select which accounts should be used for sending — you can select multiple accounts to distribute the load
  5. Write your message. Use personalization variables like $first_name (see Template Variables)
  6. Optionally add follow-up steps (sent after a delay if the recipient doesn't reply)
  7. Optionally enable AI Auto-Reply — the AI will automatically respond to incoming messages from recipients (see AI Auto-Reply section below)
  8. Click Create Campaign, then start it from the campaign detail page

Campaign statuses

Draft Running Paused Completed Failed

Editing a running campaign

You can edit campaigns even while they are running — no need to pause or restart. Changes apply to all future messages immediately.

  • Message text — edit any step's text, and new recipients will receive the updated version
  • AI settings — change the system prompt or model at any time
  • Accounts — add or remove sending accounts to adjust load distribution
Note: Messages already sent or queued will not be affected by edits. Only future messages use the updated content. Recipients who already received a step will not receive it again with the new text.

Tracking replies

Open a campaign and switch to the Replies tab to see all incoming replies. You can also see analytics like delivery rate, reply rate, and per-step performance.

Template Variables

Personalize your campaign messages using template variables. Each variable is replaced with the corresponding field from the recipient's contact data.

Available variables

Variable Description Example output
$first_nameContact's first nameAlex
$last_nameContact's last nameSmith
$usernameTelegram @usernamealexsmith
$companyCompany nameAcme Inc
$positionJob titleCTO
$cityCityLondon
$countryCountryUK
$phonePhone number+44123456789
$emailEmail addressalex@acme.com

Fallback values

If a contact doesn't have a field filled in, the variable will be empty. Use the $variable|fallback syntax to provide a default value:

Hi $first_name|there, I noticed you work at $company|your company...

In this example, if the contact has no first name, the message will say "Hi there" instead of "Hi ".

Tips

  • Always use fallbacks for optional fields like $company and $position
  • Click the variable buttons in the message composer to insert them automatically
  • Variables work in all message steps (initial + follow-ups)
  • You can add up to 3 follow-up messages per campaign

Direct Messaging

The Messaging page lets you send a single message to a specific recipient without creating a campaign. Use it to test your accounts before launching a campaign.

Send Message wizard

  1. Step 1: Enter the recipient and select which account to send from. For Telegram: phone number, @username, or chat_id. For WhatsApp: phone number in international format (e.g. +79121234567)
  2. Step 2: Write your message. Optionally schedule it for later
  3. Step 3: Review and send

History

The History tab shows all messages sent from the Messaging page. Campaign messages are shown separately under Campaigns → Messages.

Rate Limits

Both Telegram and WhatsApp enforce rate limits on messaging. Contactd automatically manages sending speed per platform to keep your accounts safe.

Telegram
Default: 20 msg/hour per account. Recommended max: 10 msg/hour. Higher rates increase FloodWait risk and temporary bans.
WhatsApp
Default: 10 msg/hour per account. WhatsApp is stricter than Telegram — exceeding limits can result in a temporary or permanent ban.
FloodWait (Telegram): If Telegram rate-limits your account, you'll see a FloodWait warning on the Dashboard. Sending pauses automatically and resumes when the wait period expires. No action needed on your end.
WhatsApp bans: Unlike Telegram, WhatsApp can permanently ban accounts for spam-like behavior. Start with low volumes (5–10 msg/hour) on new numbers and gradually increase. Use personalized messages and avoid links in the first message.

You can configure rate limits per platform in Settings → Rate Limits. Telegram and WhatsApp have separate rate settings.

AI Auto-Reply

Campaigns can optionally use AI to automatically reply to incoming messages from recipients. All AI replies are visible in the campaign's Replies tab.

Setting up AI Provider

First, configure your AI provider in Settings → AI Provider. Contactd supports two providers:

OpenAI
Models: GPT-5.2, GPT-5.1, GPT-5, GPT-5 Mini, GPT-5 Nano, GPT-4.1, GPT-4.1 Mini, GPT-4.1 Nano, GPT-4o. Requires an API key (sk-...).
Anthropic
Models: Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5. Requires an API key (sk-ant-...).

Select your provider, enter your API key, choose a model, and click Save.

Enabling AI in a campaign

  1. When creating a campaign, enable AI Auto-Reply
  2. Write a system prompt that describes how the AI should respond
  3. Optionally provide an example reply for better quality

Best Practices

Follow these recommendations to keep your accounts safe and maximize delivery rates across both platforms.

Telegram

  • Warm up new accounts — start with 5–10 messages/hour for the first week, then gradually increase to 20/hour
  • Use dedicated proxies — each account should have its own SOCKS5 proxy. Shared proxies raise ban risk
  • Personalize messages — use template variables ($first_name, $company). Identical messages trigger spam detection
  • Enable quiet hours — avoid sending at night (22:00–08:00 in the recipient's timezone)
  • Distribute across accounts — assign multiple accounts to a campaign to split the load
  • Enable jitter — random delays between messages (10–30 sec) make sending patterns look natural
  • Monitor FloodWait — if you see frequent FloodWait warnings on the Dashboard, reduce your rate
  • Don't exceed 10 msg/hour — going higher significantly increases FloodWait and temporary bans

WhatsApp

WhatsApp is much stricter than Telegram. Bans can be permanent and are very difficult to appeal. Follow these guidelines carefully.
  • Warm up is critical — start with 3–5 messages/hour for new numbers. Increase by 2–3 per week. Never jump to high volumes immediately
  • Avoid links in the first message — WhatsApp flags links in initial outreach. Send a text-only first message, share links in follow-ups after a reply
  • Keep it conversational — WhatsApp users expect natural, personal messages. Short messages (2–3 sentences) work best
  • Don't exceed 10 msg/hour — WhatsApp rate limits are stricter and bans can be permanent
  • Use aged numbers — newly registered WhatsApp numbers are flagged more aggressively. Accounts with 2+ weeks of normal usage are safer
  • Use dedicated proxies — same as Telegram, each WhatsApp account should have its own proxy for best results
  • Monitor for disconnections — check account status regularly. If an account shows "disconnected" or "encryption error", reconnect it before continuing campaigns
  • Keep your phone online — WhatsApp Web requires the phone to have an active internet connection. If the phone goes offline for too long, the session disconnects

General tips

  • Always use fallback values$first_name|there prevents sending "Hi " when a name is missing
  • Test before launching — send a test message from the Messaging page to your own number before running a campaign
  • Use follow-up steps wisely — space follow-ups at least 24 hours apart. Don't send more than 2–3 follow-ups total
  • Clean your contact lists — remove bounced or invalid contacts to improve delivery rates

Settings

The Settings page lets you manage your profile, configure rate limits, set up AI providers, and control sending behavior.

Profile

Update your display name, email, and password. Changes are saved immediately when you click Save Profile.

Rate Limits

Control how fast messages are sent per account. The settings include:

  • Messages per Hour — maximum messages sent per hour per account. Recommended maximum: 10 messages per hour
  • Jitter (Random Delay) — adds a random delay between messages to make sending patterns look more natural. Set min and max delay in seconds

Quiet Hours

Pause all sending during specific hours to respect recipients' time. When enabled, messages are queued and sent automatically after quiet hours end.

  • Start / End Hour — define the window (0–23) when no messages are sent
  • Timezone — select the timezone for your quiet hours schedule
Example: Setting quiet hours from 22:00 to 08:00 (UTC+3) means no messages will be sent overnight. Queued messages resume at 08:00.

AI Provider

Configure the AI model used for campaign auto-replies. See the AI Auto-Reply section for full setup instructions and available models.

Need help? Contact your administrator or reach out to support.

Settings

Profile
Change Password
Service Plan
?Your current plan limits. Message quota resets monthly on the date shown. Key expiration controls how long you have access.
Plan
Max Accounts
Msg/Month
Messages used this month:
Quota resets:
Key expires:
Master Key
?The root key from your .env file. Used during initial admin onboarding. Keep it secret

Root key from .env — for admin onboarding

This key grants admin access — keep it secret.
Service Keys
?Each service key creates an isolated workspace for a client. Assign a plan to control limits (accounts, messages, rate)

Service keys for clients. Each key = one tenant workspace.

New key — copy now, won't be shown again:
Name Key Role Plan Messages Expires Status Created
No service keys yet
Rate Limits
?Control sending speed to avoid Telegram rate limiting. Lower values are safer but slower

Your sending speed — capped by plan

Global defaults for all tenants

Speed ?Maximum messages sent per hour per account. Higher values risk FloodWait from Telegram. Recommended: 30-60
Recommended: 15-30 for WA
Jitter (Random Delay) ?Adds a random delay between messages to look more natural. Each message waits a random time between min and max seconds
Quiet Hours ?Pause sending during specific hours to respect recipients' time zones. Messages queue up and send after quiet hours end
AI Provider
?AI powers automatic campaign replies. Set your API key here, then enable AI auto-reply per campaign

Configure your AI API key. Auto-reply is enabled per campaign.

Plans
?Plans define limits per service key: max accounts, messages/month, and sending rate. Assign a plan when creating a key

Service plans assigned to service keys

No plans yet
All Platform Accounts

Telegram & WhatsApp accounts across all users

Total:
Owner Platform Account Status Proxy Added
No accounts found. Click Refresh to load.
Messages Log
?Complete history of all messages sent through the system. Click a row to see full debug details

All message records across all clients

result(s) for ""
ClientRecipientMessageStatusAccountDate
Click Load to fetch messages
Message Details
Message ID TG Message ID Account ID Account User ID Client Campaign ID Job ID Retries Idempotency Key Created Sent at Scheduled Source
Error:
Full text:
Dead Letter Queue
?Messages that failed after all retry attempts. You can retry them manually or delete permanently

Permanently failed messages

Message IDReason
Click Load to check queue
Delete Account

Permanently delete your account and all data

Warning — this action is irreversible. Deleting your account will:
  • Disconnect and remove all Telegram accounts
  • Delete all contacts and contact lists
  • Delete all campaigns and their history
  • Remove your profile and all settings
Global Stats

Platform-wide usage overview

Total Users
Active Accounts
Total Messages
Sent
Queued
Failed
DLQ
Campaigns
Running
Completed
Failed