|
| 1 | +# telegram-toolkit — Telegram SDR Best Practices & Templates |
| 2 | + |
| 3 | +> Bot commands, inline keyboards, large file handling, and channel-specific sales strategies for Telegram-based B2B SDR. |
| 4 | +
|
| 5 | +## Why Telegram for B2B Sales |
| 6 | + |
| 7 | +| Advantage | Impact | |
| 8 | +|-----------|--------| |
| 9 | +| **No 72h window** | Proactive outreach anytime — nurture, follow-ups, stalled leads | |
| 10 | +| **2GB file limit** | Full product catalogs, certifications, video demos | |
| 11 | +| **Bot commands** | Structured self-service (`/catalog`, `/quote`, `/status`) | |
| 12 | +| **Inline keyboards** | One-tap BANT qualification, 3-5x faster than free-text | |
| 13 | +| **Username-based** | Lower barrier — customer doesn't expose phone number | |
| 14 | +| **Free API** | No per-message cost | |
| 15 | +| **No account bans** | Bot API is stable, unlike WhatsApp's aggressive anti-automation | |
| 16 | + |
| 17 | +## Bot Commands |
| 18 | + |
| 19 | +Register these commands with @BotFather using `/setcommands`: |
| 20 | + |
| 21 | +``` |
| 22 | +start - Welcome message and product overview |
| 23 | +catalog - Browse product catalog |
| 24 | +quote - Request a quotation |
| 25 | +status - Check order or quote status |
| 26 | +contact - Speak with a human representative |
| 27 | +language - Change conversation language |
| 28 | +``` |
| 29 | + |
| 30 | +### Command Behavior |
| 31 | + |
| 32 | +#### `/start` |
| 33 | +1. Detect language from Telegram user profile |
| 34 | +2. Send welcome message with company intro (2-3 sentences max) |
| 35 | +3. Create CRM record: source = `telegram_organic`, status = `new` |
| 36 | +4. Offer product categories via inline keyboard |
| 37 | +5. Begin BANT qualification naturally |
| 38 | + |
| 39 | +#### `/catalog` |
| 40 | +1. Check CRM for customer's product interest (if returning) |
| 41 | +2. If known interest: Send relevant product section + full catalog link |
| 42 | +3. If unknown: Send inline keyboard with product categories |
| 43 | +4. Always include: specs, MOQ, typical lead time |
| 44 | +5. File format: PDF preferred, under 20MB per file |
| 45 | + |
| 46 | +#### `/quote` |
| 47 | +1. Check if BANT data exists in memory |
| 48 | +2. If incomplete: Trigger inline keyboard qualification flow |
| 49 | +3. If complete: Generate quote draft → send to owner for approval |
| 50 | +4. Confirm to customer: "I'm preparing your quotation, will have it ready shortly." |
| 51 | + |
| 52 | +#### `/status` |
| 53 | +1. Read CRM for customer's active records |
| 54 | +2. Return: latest status, pending actions, next follow-up date |
| 55 | +3. If quote_sent: "Your quote was sent on [date]. Would you like to discuss it?" |
| 56 | +4. If no records: "I don't have an active order for you yet. Would you like to start one?" |
| 57 | + |
| 58 | +## Inline Keyboard Flows |
| 59 | + |
| 60 | +### Quick BANT Qualification |
| 61 | + |
| 62 | +**Step 1 — Need (Product):** |
| 63 | +```json |
| 64 | +{ |
| 65 | + "text": "What products are you interested in?", |
| 66 | + "reply_markup": { |
| 67 | + "inline_keyboard": [ |
| 68 | + [{"text": "{{product_1}}", "callback_data": "product_1"}], |
| 69 | + [{"text": "{{product_2}}", "callback_data": "product_2"}], |
| 70 | + [{"text": "{{product_3}}", "callback_data": "product_3"}], |
| 71 | + [{"text": "📋 Full catalog", "callback_data": "full_catalog"}] |
| 72 | + ] |
| 73 | + } |
| 74 | +} |
| 75 | +``` |
| 76 | + |
| 77 | +**Step 2 — Budget (Volume):** |
| 78 | +```json |
| 79 | +{ |
| 80 | + "text": "What's your estimated order quantity?", |
| 81 | + "reply_markup": { |
| 82 | + "inline_keyboard": [ |
| 83 | + [{"text": "< 100 units", "callback_data": "qty_small"}], |
| 84 | + [{"text": "100-500", "callback_data": "qty_medium"}], |
| 85 | + [{"text": "500-1000", "callback_data": "qty_large"}], |
| 86 | + [{"text": "1000+", "callback_data": "qty_bulk"}] |
| 87 | + ] |
| 88 | + } |
| 89 | +} |
| 90 | +``` |
| 91 | + |
| 92 | +**Step 3 — Timeline:** |
| 93 | +```json |
| 94 | +{ |
| 95 | + "text": "When do you need delivery?", |
| 96 | + "reply_markup": { |
| 97 | + "inline_keyboard": [ |
| 98 | + [{"text": "This month", "callback_data": "timeline_urgent"}], |
| 99 | + [{"text": "1-3 months", "callback_data": "timeline_soon"}], |
| 100 | + [{"text": "3-6 months", "callback_data": "timeline_planning"}], |
| 101 | + [{"text": "Just exploring", "callback_data": "timeline_exploring"}] |
| 102 | + ] |
| 103 | + } |
| 104 | +} |
| 105 | +``` |
| 106 | + |
| 107 | +**Step 4 — Authority:** |
| 108 | +After 3 keyboard interactions, ask naturally in conversation: |
| 109 | +"Are you the purchasing decision-maker, or should I prepare materials for your team?" |
| 110 | +(Don't use a keyboard for this — it feels too transactional.) |
| 111 | + |
| 112 | +### Quick Actions Keyboard |
| 113 | +Send after qualification is complete: |
| 114 | +```json |
| 115 | +{ |
| 116 | + "text": "How can I help you next?", |
| 117 | + "reply_markup": { |
| 118 | + "inline_keyboard": [ |
| 119 | + [{"text": "📋 Get a quote", "callback_data": "action_quote"}], |
| 120 | + [{"text": "📦 Product specs", "callback_data": "action_specs"}], |
| 121 | + [{"text": "🏭 Factory info", "callback_data": "action_factory"}], |
| 122 | + [{"text": "👤 Talk to sales rep", "callback_data": "action_human"}] |
| 123 | + ] |
| 124 | + } |
| 125 | +} |
| 126 | +``` |
| 127 | + |
| 128 | +## Large File Strategy |
| 129 | + |
| 130 | +Telegram's 2GB limit makes it the best channel for heavy files: |
| 131 | + |
| 132 | +| Use Case | File | Action | |
| 133 | +|----------|------|--------| |
| 134 | +| Product catalog | PDF, 10-100MB | Send directly via Telegram | |
| 135 | +| Certification docs (ISO, CE, etc.) | PDF, 1-20MB | Send on request | |
| 136 | +| Product video / factory tour | MP4, 50MB-2GB | Send via Telegram, link on WhatsApp | |
| 137 | +| Test reports | PDF, 1-10MB | Send on request | |
| 138 | +| Proforma invoice | PDF, < 5MB | Send here + email for formal record | |
| 139 | + |
| 140 | +**Cross-channel file routing:** |
| 141 | +When customer is on WhatsApp and needs a large file: |
| 142 | +> "The full catalog is 85MB — I'll send it to you on Telegram. What's your Telegram username?" |
| 143 | +
|
| 144 | +## Telegram-First Markets |
| 145 | + |
| 146 | +In these markets, treat Telegram as the **primary** channel: |
| 147 | + |
| 148 | +| Market | Why Telegram First | |
| 149 | +|--------|-------------------| |
| 150 | +| Russia / CIS | 80%+ business messaging on Telegram | |
| 151 | +| Iran | Telegram is the dominant platform | |
| 152 | +| Eastern Europe | Strong Telegram adoption for B2B | |
| 153 | +| Central Asia | Telegram preferred over WhatsApp | |
| 154 | +| Tech/crypto industry | Global preference for Telegram | |
| 155 | + |
| 156 | +**Detection:** Check CRM `country` field. If Russia/CIS/Iran/Eastern Europe, default to Telegram-first strategy. |
| 157 | + |
| 158 | +## Nurture via Telegram |
| 159 | + |
| 160 | +Telegram has no messaging window — ideal for long-term nurture: |
| 161 | + |
| 162 | +### Nurture Cadence (Telegram) |
| 163 | +| Timing | Content | |
| 164 | +|--------|---------| |
| 165 | +| Day 0 | Initial contact + product overview | |
| 166 | +| Day 3 | Relevant case study or industry insight | |
| 167 | +| Day 7 | Specific product recommendation based on their interest | |
| 168 | +| Day 14 | New product announcement or limited offer | |
| 169 | +| Day 30 | Market update or trade show invitation | |
| 170 | +| Day 60+ | Quarterly check-in with personalized industry news | |
| 171 | + |
| 172 | +### Telegram Channel (One-to-Many) |
| 173 | +For customers who follow your brand channel: |
| 174 | +- Weekly: Industry news, market trends |
| 175 | +- Bi-weekly: New product announcements |
| 176 | +- Monthly: Case studies, customer success stories |
| 177 | +- Never: Direct sales pitches (keep those in DM) |
| 178 | + |
| 179 | +## Security Notes |
| 180 | + |
| 181 | +- Bot Token stored in `secrets.sh`, never in config.sh or workspace files |
| 182 | +- `dmPolicy: "pairing"` requires pairing code — use for exclusive/VIP access |
| 183 | +- `dmPolicy: "open"` (not available in all OpenClaw versions) — accepts all DMs |
| 184 | +- Admin commands restricted to whitelist (same as WhatsApp) |
| 185 | +- Rate limit: Same anti-abuse measures as WhatsApp (15 msg/5min, 50 msg/1hr) |
0 commit comments