Telegram for business

Broadcast to thousands of subscribers, reply one by one

Sparrow Telegram connects your bot and your channels to an inbox shared by your teams: you broadcast to every subscriber with no messaging window, routine requests settle themselves, and each private conversation stays attached to the contact in your CRM.

Broadcasting with no messaging window Bots and automated journeys Files up to 2 GB
Sparrow Store
Verified bot · Replies instantly
Today
New collection available 🎒 Free delivery until Sunday. /catalogue to see the models.09:00
/catalogue10:02
Here are the six models in stock. Type the number you're interested in, or /advisor to talk to someone.10:02
310:03
Model 3 — MAD 890, available in sizes 38 to 42. Shall I send you the order link?10:03
12 400subscribers
81 %handled automatically
1 sdelay
Unlimitedbroadcast
What you can do

One channel, five ways to hold your audience

Click a use case to see in detail how Sparrow Telegram sets it up for your business.

The broadcasting other messaging apps do not allow

This is what sets Telegram apart: a channel broadcasts to every subscriber, as often as you decide, with no reply window and no imposed message category. Subscribing is explicit and unsubscribing takes one tap — so you are talking to an audience that asked to hear from you.

  • Broadcast to every subscriber, with no frequency or window limit
  • Unlimited number of subscribers on a channel
  • Posts scheduled, pinned, and editable after sending
  • Photos, videos, polls and buttons in the same post
  • View counter per post, with no third-party tracking tool
  • Public listed channel, or private by invitation
Sparrow Store channel
12,400 subscribers
Sale: -20% across the department until Sunday 🎉09:00
Poll: which model would you like back in stock?09:02
12 400subscribers
9 840views
0limit

What comes up every day becomes a command

On Telegram, automation is native: your bot exposes commands — /catalogue, /order, /advisor — and a button menu. Order tracking, availability, opening hours: the answer arrives in a second, at any hour, and an agent takes over as soon as the request falls outside the script.

  • Custom commands listed in the bot menu
  • Button keyboards, inline or under the input field
  • Live lookups in your catalogue or your order tracking
  • Handover to a human agent on request, or after two misunderstandings
  • Guided forms to collect information step by step
  • Journeys editable from the interface, with no development
Sparrow bot
Running 24/7
/commande 452122:41
Order 4521: out for delivery, expected tomorrow. /advisor to talk to someone.22:41
81 %without an agent
1 sresponse
24/24available

One inbox, several agents

A subscriber who writes to your bot opens a private conversation. It lands in the shared inbox, assigned, tagged and tracked, with the contact's full history — and with no twenty-four-hour window to cut the exchange short.

  • Automatic assignment by queue, by tag or round-robin
  • Internal notes the customer never sees, mentions between colleagues
  • Saved replies, inserted in two keystrokes
  • No reply window: the conversation stays open
  • Handover between agents without losing the thread
  • First response time and resolution time measured
Shared inbox
3 agents online
Hello, I'd like to exchange an item09:12
Of course. Do you have the order number?09:12
2 min1st reply
21open
3agents

Your system writes straight into the conversation

One HTTP request is enough to post to a channel or write to a subscriber: order confirmation, shipping notice, monitoring alert. Inbound messages are returned to you by webhook, so your application can reply on its own.

  • Token-authenticated REST API, one token per application
  • Sending text, images, documents, buttons and polls
  • Webhook on every inbound message and every command received
  • Files up to 2 GB: catalogues, invoices, archives
  • Scheduled posting and editing of a message already sent
  • Test environment separate from production
API call
POST /telegram/send/one
{ "chat_id": "482913", "text": "Order 4521 shipped" }
{ "code": "OK", "result": { "message_id": "8f21c4" } }
120 msresponse
OKcode
1message

What your channel says about your audience

Every post carries its view and click counts, every conversation its first response time and its outcome. You can see which posts grow the channel, which ones lose subscribers, and which requests would deserve a command of their own.

  • Views, clicks and shares per post
  • Channel growth and unsubscribes, day by day
  • First response and resolution times, by agent
  • Share of conversations resolved without a human
  • CSV export and automatic weekly report
  • Metrics pushed to your reporting tool via API
Weekly report
Week 33
12,400 subscribers · +318 this week · 41 left
Most-viewed post: new collection, 9,840 views
12 400subscribers
+318week
81 %auto
Use cases

The different business uses of Telegram

One platform, three formats that do different jobs: the channel broadcasts without replies, the group lets members talk to each other, the bot holds the private conversation.

Broadcast channel

New arrivals, promotions, announcements: one message to every subscriber, as often as you decide.

No frequency limit

Service bot

Order tracking, availability, opening hours: commands and buttons that answer in a second.

Available 24/7

Private conversation

Questions, complaints and advice handled by your agents from a shared inbox.

No reply window

Community group

Your customers or resellers talk to each other, under your moderation and your rules.

Up to 200,000 members

Confirmations and tracking

Order placed, parcel shipped, ready for collection: triggered by your application.

Via API

Document sending

Catalogue, invoice, manual, archive: up to 2 GB per file, with no external file-sharing service.

Files up to 2 GB

Polls and votes

One question to your audience, an immediate result, public or anonymous.

Live results

Technical alerts

Monitoring, incidents, on-call duty: the internal channel that reaches your teams first.

Internal use

Verification codes

A one-time passcode delivered in the conversation, for accounts already linked to your bot.

On linked accounts
Features

Everything you need to broadcast, and to reply

The shared inbox, channels, bots and the API in one subscription, with no extra tool to plug in.

Channels and broadcasting

One message to every subscriber, with no frequency limit and no reply window. Posts scheduled, pinned, editable after sending, with a view counter.

Bots and journeys

Commands, button keyboards and guided forms. Routine requests settle themselves and an agent takes over whenever needed.

Shared inbox

Private conversations on one screen, assigned, tagged and tracked. Internal notes, mentions between colleagues, and handover without losing the thread.

Large files

Up to 2 GB per document: catalogue, invoice, manual, archive. No file-sharing service on the side, no link that expires.

Channel analytics

Subscribers, growth, departures, views and clicks per post. CSV export, weekly report, API feed.

REST API and webhooks

Your applications post and reply without going through the interface. One token per application, a test environment, and examples in the main languages.

Integration

One HTTP request, and the message goes out on Telegram

No proprietary library to install. The REST API is called from any language, and the shared inbox remains available for conversations handled by your agents.

Authentication — a call to POST /api/v1/login with your credentials returns a token (api_token) that you then place in the Authorization: Bearer {api_token} header of every request. One account can hold several applications, each with its own token: statistics stay separate, application by application.
OperationMethodURL
Get a tokenPOSThttps://app.sparrowmessage.com/api/v1/login
Send a messagePOSThttps://app.sparrowmessage.com/api/v1/telegram/send/one
Receive a messagePOST inboundhttps://your-site.com/sparrow/webhook
Message statusPOSThttps://app.sparrowmessage.com/api/v1/telegram/status
Status of a listPOSThttps://app.sparrowmessage.com/api/v1/telegram/status/bulk
PHP Python Node.js .NET Java Ruby WordPress Odoo Salesforce HubSpot Shopify PrestaShop WooCommerce Zapier SEMS SEMS Amplitude HR Amplitude HR

1 — Get the token, then send a message.

<?php
$base = 'https://app.sparrowmessage.com/api/v1';

// — Authentication: keep the token, don't request a new one for every send
$ch = curl_init("$base/login");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Accept: application/json', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS     => json_encode([
        'email'    => 'you@company.com',
        'password' => 'your-password',
    ]),
]);
$token = json_decode(curl_exec($ch), true)['api_token'];
curl_close($ch);

// — Send a message
$ch = curl_init("$base/telegram/send/one");
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Accept: application/json',
        'Content-Type: application/json',
        "Authorization: Bearer $token",
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'recipient'     => '718294106203941',
        'text'      => 'Your verification code is 385 214.',
        // Optional: Sparrow will post status changes here
        'notifyurl' => 'https://your-site.com/sparrow/status',
    ]),
]);
$reponse = json_decode(curl_exec($ch), true);
curl_close($ch);

// Every response carries a code field: OK or KO
echo $reponse['code'] === 'OK' ? "Message envoyé\n" : "Échec : {$reponse['error']}\n";

Single send, then bulk send.

import requests

base = 'https://app.sparrowmessage.com/api/v1'

# — Authentication
token = requests.post(f'{base}/login', json={
    'email': 'you@company.com',
    'password': 'your-password',
}).json()['api_token']

headers = {'Authorization': f'Bearer {token}', 'Accept': 'application/json'}

# — Send a message
r = requests.post(f'{base}/telegram/send/one', headers=headers, json={
    'recipient':     '718294106203941',
    'text':      'Your verification code is 385 214.',
    'notifyurl': 'https://your-site.com/sparrow/status',
}).json()

print('Message envoyé' if r['code'] == 'OK' else f"Échec : {r['error']}")

# — Bulk send: one request, several recipients
requests.post(f'{base}/telegram/send/bulk', headers=headers, json={
    'phones': ['718294106203941', '+2126YYYYYYYY'],
    'text':   'Soldes : -20 % jusqu\'à dimanche. STOP au 36000',
})

# — Delivery status, from the identifier returned
status = requests.post(f'{base}/telegram/status', headers=headers, json={
    'message_id': '8f21c4',
}).json()
print(status['result'])

Node 18 or later: fetch is built in.

const base = 'https://app.sparrowmessage.com/api/v1';

// — Authentication
const { api_token } = await fetch(`${base}/login`, {
  method:  'POST',
  headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
  body:    JSON.stringify({
    email:    'you@company.com',
    password: 'your-password',
  }),
}).then(r => r.json());

const headers = {
  'Content-Type': 'application/json',
  Accept:         'application/json',
  Authorization: `Bearer ${api_token}`,
};

// — Send a message
const reponse = await fetch(`${base}/telegram/send/one`, {
  method:  'POST',
  headers: headers,
  body: JSON.stringify({
    phone:     '718294106203941',
    text:      'Your verification code is 385 214.',
    notifyurl: 'https://your-site.com/sparrow/status',
  }),
}).then(r => r.json());

console.log(reponse.code === 'OK' ? 'Message envoyé' : `Échec : ${reponse.error}`);

// — Bulk send
await fetch(`${base}/telegram/send/bulk`, {
  method:  'POST',
  headers: headers,
  body: JSON.stringify({
    phones: ['718294106203941', '+2126YYYYYYYY'],
    text:   'Soldes : -20 % jusqu\'à dimanche. STOP au 36000',
  }),
});

.NET 6 or later.

using System.Net.Http.Json;

var http = new HttpClient { BaseAddress = new Uri("https://app.sparrowmessage.com/api/v1/") };

// — Authentication
var auth = await http.PostAsJsonAsync("login", new {
    email    = "you@company.com",
    password = "your-password",
});
var token = (await auth.Content.ReadFromJsonAsync<Dictionary<string, string>>())["api_token"];
http.DefaultRequestHeaders.Authorization = new("Bearer", token);

// — Send a message
var msg = await http.PostAsJsonAsync("sms/send/one", new {
    phone     = "718294106203941",
    text      = "Your verification code is 385 214.",
    notifyurl = "https://your-site.com/sparrow/status",
});

var result = await msg.Content.ReadFromJsonAsync<Dictionary<string, object>>();
Console.WriteLine(result["code"].ToString() == "OK" ? "Message envoyé" : $"Échec : {result["error"]}");

// — Bulk send
await http.PostAsJsonAsync("sms/send/bulk", new {
    phones = new[] { "718294106203941", "+2126YYYYYYYY" },
    text   = "Soldes : -20 % jusqu'à dimanche. STOP au 36000",
});

Java 11 or later, native HTTP client.

import java.net.URI;
import java.net.http.*;

var client = HttpClient.newHttpClient();
var base   = "https://app.sparrowmessage.com/api/v1";

// — Authentication
var auth = HttpRequest.newBuilder(URI.create(base + "/login"))
    .header("Content-Type", "application/json")
    .header("Accept", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("""
        {"email":"you@company.com","password":"your-password"}"""))
    .build();

var token = extract(client.send(auth, HttpResponse.BodyHandlers.ofString()).body(), "api_token");

// — Send a message
var msg = HttpRequest.newBuilder(URI.create(base + "/telegram/send/one"))
    .header("Content-Type", "application/json")
    .header("Accept", "application/json")
    .header("Authorization", "Bearer " + token)
    .POST(HttpRequest.BodyPublishers.ofString("""
        {"recipient":"718294106203941",
         "text":"Your verification code is 385 214.",
         "notifyurl":"https://your-site.com/sparrow/status"}"""))
    .build();

System.out.println(client.send(msg, HttpResponse.BodyHandlers.ofString()).body());

Copy and paste into a terminal.

# — 1. Get the token
curl -X POST https://app.sparrowmessage.com/api/v1/login \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"email":"you@company.com","password":"your-password"}'

# Response: {"code":"OK","api_token":"eyJ0eXAiOiJKV1Qi..."}

# — 2. Send a message
curl -X POST https://app.sparrowmessage.com/api/v1/telegram/send/one \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $TOKEN" \
     -d '{"recipient":"718294106203941",
          "text":"Your verification code is 385 214.",
          "notifyurl":"https://your-site.com/sparrow/status"}'

# — 3. Receive inbound messages
curl -X POST https://app.sparrowmessage.com/api/v1/telegram/send/bulk \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $TOKEN" \
     -d '{"phones":["718294106203941","+2126YYYYYYYY"],
          "text":"Reminder: your appointment is tomorrow at 2:30 pm."}'

# — 4. Delivery status
curl -X POST https://app.sparrowmessage.com/api/v1/telegram/status \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $TOKEN" \
     -d '{"message_id":"8f21c4"}'

# — 5. Status of a batch
curl -X POST https://app.sparrowmessage.com/api/v1/telegram/status/bulk \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $TOKEN" \
     -d '{"messages_id":["8f21c4","8f21c5"]}'

Every response carries a code field set to OK ou KO. On anOK, result — or results for bulk calls — carries the detail; on a KO, error gives the reason. Full documentation and a sandbox are provided when your account opens.

Customers

Trusted by

Enterprises, institutions and public bodies, in Morocco and abroad. The same organisations, whatever the channel.

Employee, supplier and customer communication

Customer and employee communication

Customer and employee communication

Supplier communication

Customer and employee communication

Candidate and employer communication

Member and partner communication

Member communication

Partner and donor communication

Customer communication

Customer notifications from the CRM

Customer communication

Candidate and employer communication

Member communication

Customer and partner communication

Supplier communication

Student and partner communication

Tourism industry communication

Customer communication

Member communication

Customer and user communication

Student and administration communication

Student and administration communication

Customer and store communication

Employee communication

Customer and prospect communication

Customer and prospect communication

Customer communication

Customer communication

Customer communication

Customer notifications and relations

Customer and supplier notifications

Customer notifications and campaigns

Industries

A channel built for every industry

Retail and distribution

A new-arrivals channel, order tracking through the bot, advice in the private conversation.

Banking and insurance

Account alerts, case tracking, certificates and statements sent as attachments.

Education

An announcements channel for families, timetables, notices and large course materials.

Real estate

A new-listings channel, floor plans and complete files sent as one document.

Transport and logistics

Delivery notices through the bot, slot confirmed with one button, complaints handled privately.

Hospitality and food service

Today's menu on the channel, booking through the bot, table confirmation and reminder.

Associations and federations

An information channel for members, a discussion group, meeting notices and minutes.

Industry and IT

An internal monitoring-alerts channel, on-call staff notified first, logs attached.

Getting started

Your Telegram channel live in 4 phases

From creating the bot to the first post on your channel, a mapped-out path and a single point of contact.

1Scoping, bot and channel
Review of your most frequent requests
Bot and channel created under your name
Agent accounts and roles created
2Inbox and queues
Queues and assignment rules set up
Qualification tags and saved replies
Opening hours and out-of-hours message
3Commands and integration
Bot commands and menu written
Connection to your catalogue, CRM or ERP
Scenario testing in the sandbox
4Growth and support
Go-live and first posts
Subscriber acquisition from your other channels
Metrics review and journey tuning

Typical timeline: bot and channel live within 24 hours, first automated commands within one to two weeks depending on their complexity.

How pricing works

A proposal built on your volumes

Telegram is not billed per message like SMS: the cost depends on the conversation, the number of agents and what you automate. We therefore build a tailored proposal after a thirty-minute conversation.

Conversation volume

How many conversations open each month, and how many resolve without a human. This is the main cost driver.

Number of agents

How many people log into the shared inbox, and during which hours. An extra agent can be added at any time.

What you automate

Guided journeys, catalogue connection, CRM or ERP integration: setup is quoted once, then running costs apply.

Let's talk — we reply within one business day

Tell us your current volume and your most frequent requests. We come back with a costed proposal and a rollout schedule, with no commitment.

Frequently asked questions

Everything about Telegram for business

The channel broadcasts: you post, your subscribers read, they do not reply. The group creates discussion: members talk to each other, up to two hundred thousand people, under your moderation. The bot holds the private conversation: a subscriber writes to it, and it either answers alone or hands over to an agent. Most companies use all three — the channel to announce, the bot to serve, the group to run a community.

No, and that is the main difference. Telegram imposes no reply window, no message category and no template to get approved. You can write to a subscriber who last messaged you six months ago, and post to your channel as often as you judge useful. The only limit is commercial common sense: a channel that talks too much loses its subscribers, and unsubscribing takes one tap.

Yes, as with any messaging app. Telegram is very common in some countries and professional circles, far less in others: it is a channel to open when your audience is already there, not one to impose. We look at your database together before recommending it — and if the numbers are not there, SMS or WhatsApp remains the first choice.

A channel does not fill itself: it feeds on your other touchpoints. A link in your emails and SMS, a QR code in store and on your packaging, a button on your website, a mention in your social posts. A public channel is also findable in Telegram search. We put these in place with you in phase four.

Up to 2 GB per file, which no other channel on this list allows. A high-resolution catalogue, a technical manual, an invoice archive, a demo video: the document goes out in the conversation, with no file-sharing service on the side and no link that expires after seven days.

Yes — that is exactly what the shared inbox is for. Each conversation is assigned to one agent, visible to the others, and cannot receive two competing replies. Handover takes one click, internal notes included, and the history stays attached to the contact whichever agent replied.

Yes, and it is useful more often than you would think: a wrong price, an incorrect date, a broken link can be fixed in the original post, for every subscriber at once. Deletion is also possible, on both sides of the conversation.

Yes, through the REST API and webhooks. Every inbound message can be pushed to your system, and your system can write into the conversation or post to the channel. Connectors exist for the most widely used CRMs and e-commerce platforms; for an in-house tool, integration through the API takes a few days.

Yes, with the full history attached to the contact: a customer who comes back six months later is recognised, and the agent sees what was said. Retention is configurable to match your data policy, and export is available at any time.

In Morocco, personal data processing falls under Law 09-08 and the CNDP: your conversations and your channel's subscriber list contain personal data and must appear in your declaration. Since Telegram imposes no window and no message category, consent is what sets the limit: subscribing to the channel serves as consent, and unsubscribing must remain immediate. Subscriptions, consent withdrawals and deletion requests are kept and exportable. We are not lawyers: have your setup and your CNDP declaration reviewed by your counsel.

The GDPR applies to Telegram conversations as to any processing of personal data: legal basis, informing the customer, retention period and the right to erasure. Since Telegram imposes no window and no message category, consent is what sets the limit: subscribing to the channel serves as consent, and unsubscribing must remain immediate. Subscriptions, consent withdrawals and deletion requests are kept and exportable, ready to feed your record of processing activities. We are not lawyers: have your setup reviewed by your counsel.

In the United States, commercial solicitation by message falls under the CAN-SPAM Act for email and the TCPA for phone messaging, both enforced by the FTC and the FCC; messaging is treated by analogy and carries the same requirement of consent and easy opt-out. Since Telegram imposes no window and no message category, consent is what sets the limit: subscribing to the channel serves as consent. Subscriptions and opt-outs are kept and exportable. We are not lawyers: have your setup reviewed by your counsel before any campaign.

The bot and the channel are live within twenty-four hours, and the shared inbox is usable immediately. Automated commands take one to two weeks depending on their complexity: you have to list the frequent requests, write the answers, then test them on real cases before going live.

Contact

Let's talk about your Telegram project

Morocco

CAF OFFICE, 1er étage, N° 2
Casablanca 20000, Maroc

+212 662-583818

United States

224 W 35th St Ste 500 N 1018
New York, NY 10001, United States

+1 (347) 789-2280