How to use
How a conversation starts
The contact starts the thread. You do not start it from GoHighLevel Conversations, the composer, or a workflow send. SMS or email only carries the opt-in link.
- For an existing contact, open their record and click Invite to Telegram. For a new lead (website, ad, print), generate a capture-new link on the Optigram Custom Page.
- Share it: SMS, email, copy, website, funnel, or a printed QR.
- They open Telegram and tap Start. That sends
/startto your bot — that tap is the opt-in. - The first inbound message lands in Conversations, mapped to the GHL contact.
- After that mapping exists, reply in that thread — or let workflows and Conversation AI reply.
Do not open a new conversation in GHL and send the first message. Telegram bots cannot start a chat.
That send fails with no_telegram_optin and nothing is delivered. See
Troubleshooting.
Invite an existing contact
Open the contact in the CRM (not the Optigram Custom Page). Click Invite to Telegram, then choose SMS, email, or copy link. Stay on the contact.
- SMS needs a phone on the contact and a sending number on this sub-account (native SMS credits).
- Email needs an email on the contact and a sending mailbox.
- Copy link if you will paste it yourself. Always available once a bot is connected.
If the contact is already connected on Telegram, send is hidden; you can still copy a link.
They receive:
SMS: Tap Start in Telegram to opt in to chat with us: https://t.me/<bot>?start=<token>
Email subject: Opt in to chat with us on Telegram
Email body: Open the link, then tap Start in Telegram. That opts you in to message this business there. You can stop the chat in Telegram anytime. Plus an Open Telegram button.
If the Invite button is missing, check the Custom Page toggle below. If Custom JS is not approved yet, use the paste-id fallback on this page. Details: Install & connect (bot must be connected; webhook healthy).
Show or hide Invite on contact details
Open the Optigram Custom Page for this sub-account. Under Contact page, Show Invite to Telegram on contact details is on by default. Uncheck it to hide the button on CRM contact records. Custom Page paste-id still works.
- The checkbox only stores the preference. The button still needs Custom JS on the contact record.
- The setting is per location. Refresh the contact after you change it.
- It does not appear on Conversations or the contacts list — only URLs with
/contacts/detail/. - Contacts already connected on Telegram (an opt-in mapping) do not get the button.
Customize the Invite button
The label stays Invite to Telegram on prod (not agency-editable). On Optigram Dev it
reads Invite to Telegram - Dev. Color, text color, and
position are. Agency view → Settings → Company → Custom CSS. Set the variables
below; they apply even though the button uses inline chrome so GHL cannot strip the styles.
To override a property GHL still wins on, use #optigram-invite-btn { … !important }.
:root {
--optigram-invite-bg: #1676ab;
--optigram-invite-fg: #fff;
--optigram-invite-right: 4rem;
--optigram-invite-bottom: 2.5rem;
}
#optigram-invite-btn,
.optigram-invite-btn {
border-radius: 0.4rem;
} Defaults sit bottom-right, left of GHL’s help icons. After saving CSS, hard-refresh a contact details page.
Generate an opt-in link
Use the Optigram Custom Page for a new lead, a shared website/QR, or as a fallback. You
get a Telegram deep link (https://t.me/<bot>?start=<token>), a QR code, and a
pasteable button snippet. The GHL contact id field chooses who the chat belongs to:
Leave blank — capture a new lead. The Telegram display name becomes a new GHL contact. Use this for a shared website or printed QR. Optigram does not look up an existing contact by phone or name. Do not use Invite on a contact for a website QR.
Paste a GHL contact id (fallback) — attach the Telegram conversation to that existing contact. Copy the id from the contact URL in GHL. Prefer Invite to Telegram on the contact when that button is available.
- Contact-bound tokens (invite or pasted id) are single-use and map to that GHL contact.
- Capture-new tokens (blank) can be reused until they expire; each new Telegram user becomes a new GHL contact.
What the lead sees
They open Telegram, tap Start, and message the bot. Token-less /start (someone found the bot
via search, or typed /start with no payload) is always rejected: they are
told they need an opt-in link, and no GHL contact is created. There is no dashboard setting to capture
or prompt them. Optigram does not cold-message anyone. Telegram bots cannot start a chat.
Inbound (Telegram → GHL)
Mapped chats post into the GHL Conversations inbox and can drive workflows and Conversation AI. Text and photos are in scope; other media may appear as a placeholder until full media parity ships.
Outbound (GHL → Telegram)
Replies, workflow sends, and bulk actions that hit this provider are delivered as Telegram text — but only
after the contact has opted in. Limits: about 30 messages/second per bot and
1 message/second per chat. Bursts are queued. Sending to a contact who never opted in
(including a new conversation you started in GHL) fails with status no_telegram_optin — it
does not error as a raw API failure, and it does not attempt a cold DM.