Opens in a new tab
  1. Home
  2. Guides
  3. Utilities
Utilities guide

How to find a Telegram chat, group or channel ID

Learn how to find the ID of a Telegram private chat, group, supergroup or channel using your bot and the Telegram Bot API, and understand where the chat ID appears in the returned update data.

  • Updated August 19, 2026
  • 11 min read
  • WordPress guide

A Telegram chat ID is the numeric identifier Telegram uses to identify a private conversation, group, supergroup or channel. If you are building a Telegram bot or connecting Telegram to WordPress, an automation platform or another application, you will often need this ID so the bot knows exactly where messages should be sent.

The ID is different from a Telegram username or public link. A channel might be accessible through a username such as @examplechannel, while its internal chat ID is a numeric value used by the Telegram Bot API.

For WordPress integrations, the chat ID normally works together with a Telegram bot token: the token identifies and authenticates the bot, while the chat ID identifies the destination.

This is also the configuration used by TheOneWP’s Telegram User Access Notification module to send WordPress login notifications to a selected Telegram destination.

Fortunately, finding the ID does not require a mysterious third-party service. If you already have a Telegram bot, you can generate an update in the target chat and inspect the data Telegram sends to that bot.

In this guide, we will look at how to find the ID of a private Telegram chat, group, supergroup or channel, how to test it and how to use it when configuring Telegram notifications from WordPress.

What is a Telegram chat ID?

A Telegram chat ID is a numeric identifier associated with a conversation.

Depending on the context, that conversation may represent:

  • a private conversation with a user;
  • a Telegram group;
  • a supergroup;
  • a channel.

When a bot receives a message or another supported update, Telegram includes information about the destination chat in the returned data.

A simplified example looks like this:

{
    "message": {
        "chat": {
            "id": 123456789,
            "type": "private"
        }
    }
}

In this example, the Telegram chat ID is:

123456789

Why do you need a Telegram chat ID?

A Telegram bot needs to know where a message should be delivered.

When calling the Telegram Bot API sendMessage method, the request contains both the destination and the message content.

Conceptually:

chat_id = 123456789
text = Hello from my bot

The chat ID identifies the destination.

You may need one when building:

  • WordPress login notifications;
  • security alerts;
  • contact form notifications;
  • WooCommerce order alerts;
  • server monitoring systems;
  • scheduled reports;
  • CRM notifications;
  • custom Telegram bots;
  • workflow automations.

If your goal is to receive WordPress user-login notifications in Telegram without writing the integration yourself, TheOneWP’s Telegram User Access Notification module provides that workflow directly inside WordPress.

Bot token and chat ID solve different problems

A Telegram integration usually needs two values:

Bot token
Chat ID

The bot token answers:

Which bot is making this request?

The chat ID answers:

Where should the message be sent?

Mixing these concepts is a common source of configuration errors.

The token is sensitive because it authenticates requests as your bot. The chat ID is a destination identifier and does not provide control over the bot by itself.

Telegram chat ID vs user ID

A Telegram user ID and Telegram chat ID are related but represent different things.

A user ID identifies a Telegram user.

A chat ID identifies the conversation where messages are exchanged.

In a private bot conversation, the chat ID commonly corresponds to the user participating in that private chat.

Groups, supergroups and channels have their own chat IDs.

For notification destinations, inspect:

chat.id

rather than assuming the sender’s user ID is always the correct value.

Telegram chat ID vs username

A Telegram username may look like:

@examplechannel

A numeric chat ID may look like:

123456789

or:

-1001234567890

Usernames are designed for people to reference accounts, bots, groups or channels more conveniently.

The numeric ID is the underlying identifier commonly used in Bot API integrations.

Private conversations and private groups may not have public usernames at all, which makes the numeric chat ID especially important.

Before you start: create a Telegram bot

The easiest way to retrieve a Telegram chat ID is through your own bot.

If you do not already have one, create it using Telegram’s official BotFather.

See How to create a Telegram bot with BotFather for the complete setup process.

After creating the bot, BotFather provides a token similar to:

1234567890:AAExampleTokenThatMustRemainPrivate

This token authenticates requests made to the Telegram Bot API as your bot.

Keep it private. Unlike a chat ID, the bot token is an actual credential.

How to find your private Telegram chat ID

Finding the ID of a private conversation with your bot is usually the simplest case.

Step 1: Open your Telegram bot

Search for the bot you created and open the private conversation.

Step 2: Start the bot

Press the Start button or send:

/start

This creates an incoming update that Telegram can make available to the bot.

Step 3: Open the getUpdates endpoint

The Telegram Bot API uses endpoints built around the bot token.

The getUpdates endpoint follows this pattern:

https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates

Replace:

YOUR_BOT_TOKEN

with the token generated by BotFather.

Do not publish the complete URL because the bot token is embedded inside it.

Step 4: Find the chat object

The response may contain something similar to:

{
    "ok": true,
    "result": [
        {
            "update_id": 123456789,
            "message": {
                "message_id": 1,
                "from": {
                    "id": 987654321,
                    "is_bot": false,
                    "first_name": "John"
                },
                "chat": {
                    "id": 987654321,
                    "first_name": "John",
                    "type": "private"
                },
                "text": "/start"
            }
        }
    ]
}

Look at:

message → chat → id

In this example:

987654321

is the private Telegram chat ID.

Using a private chat for WordPress notifications

A private chat is often the easiest destination for personal WordPress notifications.

For example, an administrator may want successful privileged logins sent directly to their own Telegram account.

TheOneWP’s Telegram User Access Notification module can use the bot token and destination chat ID so WordPress access events are sent to that private conversation.

The configuration model is straightforward:

WordPress login event
→ TheOneWP
→ Telegram Bot API
→ configured chat ID

How to find a Telegram group ID

The process for a Telegram group is similar, but the bot must first belong to the group and receive an update associated with it.

Step 1: Add the bot to the group

Add your bot to the target Telegram group.

Do not grant unnecessary administrator permissions simply to discover the ID.

Give the bot only the permissions required by the integration.

Step 2: Send a command the bot can receive

A useful option is:

/start@your_bot_username

This is especially useful when Telegram privacy mode is enabled because the bot may not receive every ordinary message posted to the group.

Step 3: Call getUpdates

Request:

https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates

Step 4: Find the group chat object

You may see:

{
    "message": {
        "chat": {
            "id": -123456789,
            "title": "Development Team",
            "type": "group"
        }
    }
}

The group ID is:

-123456789

Preserve the value exactly as Telegram returns it, including the minus sign.

Why use a Telegram group for WordPress alerts?

A group can be useful when several administrators or technical team members should receive the same notification.

For example:

Administrator login
→ Telegram security group

Editor login
→ optional

Subscriber login
→ ignored

With TheOneWP’s Telegram User Access Notification module, notification rules can be tied to selected WordPress roles while messages are delivered to the configured Telegram destination.

This turns Telegram into a lightweight team notification channel without requiring administrators to constantly inspect the WordPress Users screen wondering who appeared when.

How to find a Telegram supergroup ID

The process for a supergroup is almost identical.

  1. add the bot to the supergroup;
  2. send a command or another update the bot can receive;
  3. request getUpdates;
  4. find the returned chat object;
  5. copy the complete id value.

A simplified update might look like:

{
    "message": {
        "chat": {
            "id": -1001234567890,
            "title": "WordPress Developers",
            "type": "supergroup"
        }
    }
}

The supergroup ID is:

-1001234567890

Do not remove the minus sign or attempt to convert the value manually.

Why do some Telegram IDs begin with -100?

Supergroup and channel IDs commonly appear in Bot API data as large negative values beginning with -100.

For example:

-1001234567890

For application configuration, the rule is simple:

Use the complete value exactly as Telegram returns it.

Do not strip -100, remove the minus sign or invent a transformed version.

How to find a Telegram channel ID

Channels behave slightly differently because Telegram delivers channel activity through channel-specific update objects.

Step 1: Add the bot to the channel

Add the bot to the target channel with the permissions required by your integration.

If the bot will eventually send messages to the channel, make sure it has permission to publish there.

Step 2: Publish a new channel post

After the bot has access, publish a new post in the channel.

Step 3: Call getUpdates

Request:

https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates

Step 4: Look for channel_post

A channel update may contain:

{
    "channel_post": {
        "message_id": 42,
        "chat": {
            "id": -1009876543210,
            "title": "TheOneWP Updates",
            "type": "channel"
        },
        "text": "New update available"
    }
}

The channel ID is:

-1009876543210

The relevant path is:

channel_post → chat → id

Private channel vs public channel

A public channel may have a username such as:

@theonewp

A private channel may have no public username.

Both still have internal numeric IDs.

For private destinations, the numeric chat ID becomes particularly important because there may be no public username available for configuration.

Can you use a username instead of a numeric chat ID?

Some Telegram Bot API methods accept a public channel or supergroup username such as:

@channelusername

Numeric IDs are often more useful for persistent application configuration because they do not depend on the chat retaining the same public username.

Private groups and channels may also have no username at all.

For integrations such as TheOneWP Telegram notifications, a numeric destination ID provides an explicit target that can be stored in the WordPress configuration.

How to find the ID using curl

If you prefer the terminal, request updates with:

curl "https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates"

The response is returned as JSON.

Look for:

"chat": {
    "id": ...
}

Do not paste the real command containing your bot token into public logs, screenshots or support posts.

Make getUpdates easier to read with jq

Raw JSON quickly becomes unpleasant when several updates exist.

If jq is installed, format the response with:

curl -s "https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates" | jq

For ordinary message chats:

curl -s "https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates" | jq '.result[].message.chat'

For channel posts:

curl -s "https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates" | jq '.result[].channel_post.chat'

Some entries may return null because not every Telegram update contains the same structure. JSON continues its proud tradition of making simple data look like archaeology.

How to identify the type of Telegram destination

Do not rely only on the numeric format.

Inspect the type field inside the chat object.

Typical values include:

private
group
supergroup
channel

For example:

{
    "id": -1001234567890,
    "title": "Example Channel",
    "type": "channel"
}

This confirms that the ID belongs to a channel.

What if getUpdates returns an empty result?

A successful request may return:

{
    "ok": true,
    "result": []
}

This means no updates are currently available through that request.

Check the following:

  • send a new message or command to the bot;
  • make sure the bot belongs to the target group or channel;
  • generate the event after adding the bot;
  • confirm that the correct bot token is being used;
  • check whether previous updates have already been consumed;
  • check whether the bot currently uses a webhook.

getUpdates and webhooks cannot be used as the normal update method at the same time

Telegram supports two primary approaches for receiving bot updates:

  • long polling through getUpdates;
  • webhooks.

If a webhook is configured, getUpdates cannot normally be used for retrieving updates until the webhook is removed.

This matters when troubleshooting an existing production bot.

Removing a webhook merely to find a chat ID can interrupt the application currently consuming Telegram events.

If the bot already uses a webhook, inspect the existing webhook payload instead.

See the official Telegram getUpdates documentation for the underlying API behaviour.

How to check whether a webhook is configured

Telegram provides:

https://api.telegram.org/botYOUR_BOT_TOKEN/getWebhookInfo

If the returned data contains an active webhook URL, Telegram is delivering updates to that endpoint.

For an existing application, inspecting those incoming updates is usually safer than changing the delivery mechanism.

Find a chat ID from a webhook payload

If your bot already receives updates through a webhook, the chat ID appears in the same JSON payload Telegram sends to your server.

For normal messages:

message.chat.id

For channel posts:

channel_post.chat.id

For example:

{
    "update_id": 123456,
    "message": {
        "chat": {
            "id": -1001234567890,
            "title": "Team",
            "type": "supergroup"
        }
    }
}

You can inspect the relevant field without changing the bot from webhook delivery to long polling.

Why does my bot not see normal group messages?

Telegram bots can operate with privacy mode.

When privacy mode is enabled, a bot does not automatically receive every ordinary group message.

It can still receive relevant events such as commands directed to it and certain service messages.

If you only need the group ID, send a command directly to the bot instead of disabling privacy mode unnecessarily.

Telegram explains this behaviour in its official Bot FAQ.

Do you need to disable privacy mode?

Usually, no.

You do not need access to every group message simply to discover the chat ID.

A command addressed directly to the bot is normally sufficient to generate an update containing the group chat object.

Disabling privacy mode for this task gives the bot broader visibility than necessary.

What if the bot was added but no update appears?

Try:

/start@your_bot_username

or:

/help@your_bot_username

Then call getUpdates again.

Make sure the command was sent after the bot joined the group.

What happens when a group becomes a supergroup?

A Telegram group may be migrated into a supergroup.

When this happens, integrations may need to use the new supergroup identifier.

If an existing WordPress or automation integration stops delivering messages after a migration, inspect a current Telegram update and confirm the stored destination ID still matches the active chat.

Do not manually derive a new identifier from an old one. Use the values Telegram provides.

Do Telegram chat IDs need to be secret?

A chat ID is not equivalent to a password or bot token.

Knowing the numeric destination does not authenticate someone as your bot.

There is still little reason to expose internal configuration values unnecessarily, but the bot token deserves much stronger protection.

Never publish your Telegram bot token

The bot token authenticates Bot API requests.

Do not place it in:

  • public Git repositories;
  • frontend JavaScript;
  • public screenshots;
  • documentation examples;
  • forum posts;
  • shared URLs;
  • client-side HTML.

If a token is exposed, rotate it through BotFather and update every application using the previous token.

Store the bot token safely in WordPress

If WordPress needs to send Telegram notifications, the bot token should remain on the server side.

A proper integration stores the credential in server-side configuration or a protected WordPress setting rather than exposing it to frontend visitors.

TheOneWP’s Telegram User Access Notification module provides the WordPress-side configuration for the Telegram bot and destination used by login notifications, avoiding the need to build the notification request manually in frontend code.

Can you find a chat ID without your own bot?

Telegram’s normal client is designed for messaging, not exposing raw Bot API identifiers.

Third-party ID finder bots exist, but using one means sending information about your account, group or channel to another service.

If you already need a bot for the integration, using your own bot is cleaner and more reproducible.

Avoid random Telegram ID finder bots

There is little reason to involve an unrelated third-party bot when your own Telegram bot can return the required information.

The workflow is:

  1. add your bot to the target destination;
  2. generate an update;
  3. inspect chat.id;
  4. copy the complete value;
  5. test it;
  6. remove any permissions the bot does not actually need.

How to test a Telegram chat ID

Once you have the ID, test it before saving it as production configuration.

The sendMessage endpoint follows this pattern:

https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage

The request requires a destination and message text.

For example:

chat_id=-1001234567890
text=Telegram connection test

If the token, permissions and chat ID are correct, Telegram should deliver the message to the expected destination.

Testing a Telegram chat ID with curl

You can test it from the terminal:

curl -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage" \
    -d "chat_id=-1001234567890" \
    -d "text=Telegram connection test"

If Telegram returns an error, check:

  • the bot token;
  • the complete chat ID;
  • any leading minus sign;
  • whether the bot still belongs to the chat;
  • whether it has permission to send messages;
  • whether the destination still exists.

See the official Telegram sendMessage documentation for the supported parameters.

Test the destination before connecting it to WordPress

This is an important troubleshooting step.

Before configuring the destination inside WordPress, prove that the Telegram side works independently.

The process becomes:

Test Bot API manually
→ confirm message arrives

Save Bot Token + Chat ID in WordPress
→ configure integration

Trigger WordPress event
→ confirm automatic notification

This separates Telegram configuration problems from WordPress configuration problems and makes debugging considerably less theatrical.

Use the chat ID with TheOneWP Telegram User Access Notification

Once the Telegram destination works, the chat ID can be used with TheOneWP’s Telegram User Access Notification module.

The module is designed to send Telegram notifications when selected WordPress users successfully access the site.

A typical configuration flow is:

  1. create a Telegram bot;
  2. obtain its bot token;
  3. find the destination chat ID;
  4. test that the bot can send a message to that destination;
  5. configure the Telegram values in TheOneWP;
  6. select which WordPress roles should generate access notifications;
  7. test a real WordPress login.

This turns the values discovered in this guide into a working WordPress notification system rather than leaving them sitting magnificently inside a JSON response doing absolutely nothing.

Choose which WordPress logins deserve Telegram notifications

Not every login necessarily needs to produce an alert.

On a site with hundreds or thousands of customer or subscriber accounts, sending every authentication event to Telegram could create more noise than useful information.

A more focused setup may monitor privileged roles such as:

Administrator
Editor
Shop Manager
Custom privileged role

TheOneWP’s Telegram User Access Notification module allows the notification workflow to focus on selected WordPress roles.

This makes Telegram particularly useful for visibility into privileged account access.

Combine login notifications with stronger authentication

A Telegram login notification tells you that an account successfully accessed WordPress.

It does not itself make authentication stronger.

For privileged accounts, TheOneWP’s Two-Factor Authentication module can add TOTP-based authentication while Telegram User Access Notification provides visibility into successful access.

The two modules solve different problems:

Two-Factor Authentication
→ make account authentication harder to compromise

Telegram User Access Notification
→ notify administrators when selected accounts successfully log in

That combination is considerably more useful than treating a notification as if it somehow prevented the login that already happened.

Review user privileges before choosing notification roles

If Telegram notifications are configured by role, it helps to know what those roles actually allow.

A custom role may have privileges similar to an Administrator even if its name sounds harmless.

Before deciding which accounts deserve access notifications, review your WordPress role structure.

See How to audit user roles on a WordPress site for the broader permissions review.

Common Telegram chat ID mistakes

1. Removing the minus sign

If Telegram returns:

-1001234567890

use that complete value.

Do not change it to:

1001234567890

2. Confusing from.id with chat.id

An update may include both the sender and destination.

For the destination, use:

message.chat.id

not automatically:

message.from.id

3. Looking only for message in channel updates

Channel posts may appear under:

channel_post

instead of:

message

4. Using getUpdates while a webhook is active

Inspect the webhook payload instead of disrupting an existing production bot.

5. Copying the ID from the wrong update

Verify title and type when multiple destinations appear.

6. Keeping stale configuration after a group migration

If a group becomes a supergroup, verify that the stored ID is still current.

7. Exposing the bot token while troubleshooting

Replace the token with a placeholder before sharing logs or examples.

8. Configuring WordPress before testing Telegram

Test sendMessage first so you know the bot and destination work independently.

Quick reference: where to find each Telegram chat ID

Private conversation:

message.chat.id

Group:

message.chat.id

Supergroup:

message.chat.id

Channel:

channel_post.chat.id

Chat type:

message.chat.type

or:

channel_post.chat.type

Telegram chat ID checklist

  • Create or identify the Telegram bot used by the integration.
  • Keep the bot token private.
  • Add the bot to the target private chat, group or channel.
  • Generate a new message, command or channel post.
  • Use getUpdates when long polling is active.
  • Inspect webhook payloads when the bot already uses webhooks.
  • Find the relevant chat object.
  • Copy the complete numeric ID.
  • Keep any leading minus sign.
  • Verify the type field.
  • Confirm the title when several chats appear.
  • Test the destination with sendMessage.
  • Do not expose the bot token while troubleshooting.
  • Only then save the destination in WordPress.

Use Telegram notifications with TheOneWP

Once you have a working bot token and chat ID, TheOneWP’s Telegram User Access Notification module can connect WordPress access events to that Telegram destination.

This is particularly useful for monitoring successful logins from privileged WordPress accounts.

Instead of building the Bot API request manually, the module provides the WordPress-side workflow for configuring Telegram login notifications.

The basic architecture becomes:

WordPress user logs in
→ role matches configured notification policy
→ TheOneWP sends notification
→ Telegram bot
→ configured chat ID

This can send the notification to:

  • a private administrator chat;
  • a technical team group;
  • a security supergroup;
  • another Telegram destination supported by the bot configuration.

Build a broader WordPress access-security workflow

Telegram notifications provide visibility, but they can also sit alongside other TheOneWP account-security modules.

For example:

These modules cover different stages of account access:

Block User Login
→ should this account be allowed to authenticate?

Two-Factor Authentication
→ what additional verification is required?

Telegram User Access Notification
→ should administrators be notified after successful access?

Last Login
→ when did the account last authenticate?

The goal is not to enable every module because the switches exist. It is to build the access controls and visibility that match the importance of the site.

You can explore the complete toolkit on the TheOneWP features page.

Final thoughts on finding a Telegram chat ID

Finding a Telegram chat ID is mostly a matter of generating an update and inspecting the chat information Telegram sends to your bot.

For private conversations, groups and supergroups, look at:

message.chat.id

For channels, look at:

channel_post.chat.id

Copy the complete value exactly as Telegram returns it, including any negative prefix, and confirm the associated chat type and title before saving it.

Then test the destination with a harmless sendMessage request before connecting it to WordPress.

If your goal is to receive WordPress access alerts in Telegram, the next step is to configure TheOneWP’s Telegram User Access Notification module with the bot token and chat ID you have just tested.

If you still need the bot itself, start with How to create a Telegram bot with BotFather.

Once the bot, token and destination are configured correctly, the chat ID stops being an obscure number buried inside JSON and becomes what it was supposed to be in the first place: the address your WordPress notification actually needs.

Simplify your WordPress stack

A modular WordPress toolkit. 104 focused tools.

Ultimately, you can build cleaner workflows, maintain fewer plugins and enable only the features each website actually needs.