The Telegram and Social nodes live in the Social section of the component palette; switch the toolbar Mode toggle from Normal to Dev to see it.
Telegram
Telegram is the fastest messaging integration to set up: a bot token is free and takes about two minutes.- In Telegram, message @BotFather and send
/newbotto create a bot. BotFather replies with an HTTP API token. - In OpenCompany, click the key icon in the toolbar to open API Credentials, select Telegram Bot, paste the token into Bot Token, and click Validate. The field shows Valid and the provider gets a green Connected badge.
self recipient route to your account immediately (DM @userinfobot to find your id) — or leave it blank and OpenCompany auto-captures it from the first private DM you send the bot.
Telegram Send
Sends a message through your connected bot. Supports text, photos, documents, locations, and contacts.Parameters
select
default:"self"
Who receives the message:
self (the captured bot owner), user, or groupstring
Numeric chat id or
@username. Required when Recipient Type is user or group.select
default:"text"
Message kind:
text, photo, document, location, or contactstring
Message text. Required when Message Type is
text.string
Remote URL or Telegram
file_id. Required for photo and document messages.string
Optional caption for
photo and document messageslocation messages, latitude and longitude (numbers) are required. For contact messages, phone_number and first_name are required and last_name is optional.
select
default:"Auto"
Text formatting:
Auto (GFM markdown converted to Telegram HTML), None, HTML, Markdown, or MarkdownV2. Applies to text, photo, and document messages.boolean
default:"false"
Send without a notification sound
number
default:"0"
When set to a non-zero message id, sends the message as a reply to it
Output
Telegram Receive
Trigger node — waits for an incoming Telegram message that passes its filters, then starts the workflow with the message as output.Parameters
select
default:"all"
Accept only one content type:
all, text, photo, video, audio, voice, document, sticker, location, contact, or pollselect
default:"all"
Who can trigger the workflow:
all, self (the bot owner), private, group, supergroup, channel, specific_chat, specific_user, or keywordsstring
Numeric chat id or
@username. Required when Sender Filter is specific_chat.string
Numeric user id. Required when Sender Filter is
specific_user.string
Comma-separated keywords, matched case-insensitively as substrings. Required when Sender Filter is
keywords.boolean
default:"true"
Skip messages sent by other bots (not applied when Sender Filter is
self)Output
photo (file_id, width, height, file_size), document (file_id, file_name, mime_type, file_size), location (latitude, longitude), or contact (phone_number, first_name, last_name, user_id). For captioned media, text carries the caption.
Twitter/X
The four Twitter/X nodes authenticate with OAuth 2.0 against your own X Developer app:- Create an app in the X Developer Portal with OAuth 2.0 enabled and set its callback URL to
http://localhost:3010/api/twitter/callback. - In API Credentials, select Twitter/X and enter the Client ID (and optionally the Client Secret — optional for PKCE).
- Click Save Credentials, then Login with Twitter/X and approve the requested scopes in the browser.
tweet.read, tweet.write, users.read, follows.read, follows.write, like.read, like.write, and offline.access (for silent token refresh). Use Disconnect in the same panel to revoke the stored tokens.
The three action nodes are dual-purpose: wire them to an AI Agent’s tools handle and the agent can call twitter_send, twitter_search, and twitter_user on its own. Twitter Receive is a trigger only.
Twitter Send
Performs write actions against your authenticated account.Parameters
select
default:"tweet"
required
One of
tweet, reply, retweet, quote, like, unlike, or deletestring
Tweet content. Required for
tweet, reply, and quote. Silently truncated to 280 characters.string
Target tweet ID. Required for
reply, retweet, quote, like, unlike, and delete.include_media, media_urls (comma-separated, max 4 images or 1 video), include_poll, poll_options (comma-separated 2-4 options, 25 characters each), and poll_duration (minutes, 5-10080, default 1440) — see the warning below.
Output
action field reports what happened: tweet_sent, reply_sent, quoted, retweeted, liked, unliked, or deleted.
Twitter Search
Searches recent tweets and returns enriched results: expanded URLs, joined author profiles, attached media, referenced tweets, and full long-form text when a tweet exceeds 280 characters.Parameters
string
required
X search query. Supports the full operator set (
from:, lang:, -is:retweet, …).number
default:"10"
Number of results, clamped to 10-100 (the API minimum is 10)
sort_order (default recency), start_time / end_time (ISO 8601), and include_metrics / include_author toggles, but the current implementation does not forward them — the full field set is always requested.
Output
urls, media, and referenced_tweets arrays when the API returns them. Only the first result page is returned — pagination is not surfaced.
Twitter User
Looks up users and their social graph.Parameters
select
default:"me"
required
One of
me, by_username, by_id, followers, or followingstring
Handle without the
@. Required for by_username.string
Numeric user id. Required for
by_id; optional for followers and following (defaults to the authenticated user).number
default:"100"
Result count for
followers and following, clamped to 1-1000Output
Forme, by_username, and by_id:
followers and following, the output is { "operation": "...", "users": [...], "count": 42 } where each entry has the same user shape. Only the first page is returned.
Twitter Receive
Trigger node — polls the X API (no push webhooks on the free tier) and fires the workflow when a matching event arrives.Parameters
select
default:"mentions"
required
What to watch:
mentions, search, or timelinestring
Required when Trigger Type is
search. Matched case-insensitively as a substring against the event’s query.string
For
timeline: watch a specific user’s timeline. Empty means the authenticated user.boolean
default:"true"
Form-level hint; not enforced by the event filter in the current implementation
boolean
default:"false"
Form-level hint; not enforced by the event filter in the current implementation
number
default:"60"
Seconds between polls (15-3600). Applied when the workflow is deployed.
Output
query field; timeline events add user_id.
Unified Social nodes
The Social nodes decouple your workflow from any single platform. Social Receive sits after a platform trigger (WhatsApp Receive, Telegram Receive, Chat Trigger) and normalizes whatever arrives into one schema; Social Send takes one payload shape and routes it to the platform selected by itschannel parameter. Build the middle of your workflow once against the unified schema, and swap the endpoints per platform.
Social Send
Platform-agnostic outbound messaging. The node advertises ten channels (whatsapp, telegram, discord, slack, signal, sms, webchat, email, matrix, teams), but only whatsapp is implemented today — other values return a “not yet implemented” error. Use Telegram Send for Telegram in the meantime.
It exposes four input handles — message, media, contact, and metadata — matching the four output handles on Social Receive, and can also be wired to an AI Agent as a tool.
Key parameters
select
default:"whatsapp"
Target platform. Only
whatsapp is wired today.select
default:"phone"
How the recipient is addressed:
phone, group, channel, user, or chat. Each choice reveals its matching id field (phone, group_id, channel_id, user_id, chat_id).select
default:"text"
text, image, video, audio, document, sticker, location, contact, poll, buttons, or liststring
Message body for
text messagesformat (plain, markdown, or html, default plain) and a disable_preview toggle. Media messages pick a media_source — url (media_url), base64 (media_data), or file (file_path). Additional parameter groups appear per message type: caption / filename / mime_type for media, latitude / longitude / location_name / address for locations, contact_name / contact_phone / vcard for contacts, poll_question / poll_options / poll_allow_multiple for polls, and buttons / list_sections (JSON) for interactive messages. Delivery flags: reply_to_message (+ reply_message_id, reply_to_current), audio_as_voice, silent, and protect_content.
Output
Social Receive
Normalizes messages from any connected platform trigger into a unified inbound schema, applies filters, and fans the result out across four output handles so downstream nodes grab just the slice they need. Connect a platform trigger (WhatsApp Receive, Telegram Receive, Chat Trigger) to Social Receive; it detects the source platform from the upstream node and normalizes automatically.Parameters
select
default:"all"
Accept only one platform:
all, whatsapp, telegram, discord, slack, signal, sms, webchat, email, matrix, or teamsselect
default:"all"
all, text, image, video, audio, document, sticker, location, contact, poll, or reactionselect
default:"all"
all, any_contact (no group messages), contact (specific phone), group (specific chat), or keywordsstring
Exact phone match. Required when Sender Filter is
contact.string
Exact chat id match. Required when Sender Filter is
group.string
Comma-separated keywords, matched case-insensitively as substrings
boolean
default:"true"
Drop messages you sent yourself
boolean
default:"false"
Drop messages sent by bots
boolean
default:"false"
Include the base64 media payload in the output (memory-intensive)
Outputs
Social Receive is the one node in this family with four dedicated output handles:
The main output carries the full unified message:
message_id, channel, sender, sender_phone, sender_name, chat_id, chat_type, message_type, text, timestamp, is_group, is_from_me, is_forwarded, is_bot, plus the original platform payload under raw.
Example: cross-post an update
Send the same text to Telegram, Twitter/X, and WhatsApp from one trigger:-
Telegram Send
- Recipient Type:
self - Message Type:
text - Text:
{{chattrigger.message}}
- Recipient Type:
-
Twitter Send
- Action:
tweet - Text:
{{chattrigger.message}}(truncated to 280 characters)
- Action:
-
Social Send
- Channel:
whatsapp - Recipient Type:
phone - Phone: your number, digits only
- Message Type:
text - Message:
{{chattrigger.message}}
- Channel:
Tips
Related
Full WhatsApp integration: QR pairing, groups, channels, and media
Telegram Bot Tutorial
Build a free AI-powered Telegram bot in 10 minutes