DocsChannels & Apps

Channels & Apps

Connect channels that talk to your OAgent (Slack, Discord, Telegram, WhatsApp, Facebook Messenger, Instagram DM, LinkedIn Messages, X DMs, Webhook) and apps it uses as tools (Gmail, Google Calendar, Drive, Sheets, Ads, Analytics, Business, ClickUp, Jira, Attio, LinkedIn, Instagram, X, Apollo, Hunter.io, Findymail, Instantly, Brevo, GitHub, Oya Browser).

Overview

Channels & Apps page showing channels and apps grid with search and filter tabs
The Channels & Apps page lists every platform connection available for your OAgent.

Channels are how people talk to your OAgent: Slack, Discord, Telegram, WhatsApp, Facebook Messenger, Instagram DM, LinkedIn Messages, X DMs, and a generic Webhook. Apps are the tools your OAgent uses to get work done: Gmail, Google Calendar, Drive, Sheets, Ads, Analytics, and Business, plus ClickUp, Jira, Attio, LinkedIn, Instagram, X, Apollo, Hunter.io, Findymail, Instantly, Brevo, GitHub, and the Oya Browser.

Both are platform connections that enable bidirectional messaging between your OAgent and external services. When you connect a channel or app, Oya creates a unique webhook URL that bridges the platform to your OAgent, so messages flow in from the platform and responses flow back out automatically. Internally the API and CLI refer to each connection as a gateway.

Account-Level Connections

All platform connections (Slack, Telegram, Gmail, Google Calendar, Google Drive, LinkedIn, and others) are account-level. You connect once and reuse the connection across all your OAgents.

  • When you connect a platform from any OAgent, the connection is saved to your account.
  • Other OAgents automatically reuse the existing connection: no re-auth needed.
  • To disconnect or change an account, go to Settings > Connected Accounts.
Note
To disconnect a platform or switch to a different account, go to Settings. Disconnecting removes the connection from all OAgents that use it.

Slack

Slack gateway connection dialog
Connect Slack with one-click OAuth or advanced manual configuration.

The Slack gateway supports two connection modes. One-click OAuth handles everything automatically: no Slack app creation needed. For teams that need custom scopes, event subscriptions, or slash commands, the Advanced option lets you provide your own Bot Token, Signing Secret, and Default Channel.

Tip
One-click OAuth is the fastest way to connect. Use it unless you need a custom Slack app with specific scopes or event subscriptions.

Setting Up a Custom Slack Bot

If you need full control over your Slack app (custom scopes, slash commands, interactive components), follow these steps to create your own bot:

  • 1. Go to api.slack.com/apps and click Create New App > From scratch.
  • 2. Name your app and select the workspace.
  • 3. Go to OAuth & Permissions and add these Bot Token Scopes:
text
# Required scopes chat:write : Send messages channels:history : Read messages in public channels groups:history : Read messages in private channels im:history : Read direct messages app_mentions:events : Respond when @mentioned # Optional scopes reactions:read : Read emoji reactions reactions:write : Add emoji reactions files:write : Upload files
  • 4. Install the app to your workspace and copy the Bot User OAuth Token (starts with xoxb-).
  • 5. Go to Basic Information and copy the Signing Secret.
  • 6. Go to Event Subscriptions, enable events, and paste your Oya webhook URL as the Request URL.
  • 7. Subscribe to these bot events: message.channels, message.groups, message.im, app_mention.
  • 8. In Oya, expand Advanced under the Slack gateway, paste the Bot Token and Signing Secret, then click Connect.
Warning
Make sure the bot is invited to the channel it needs to post in. Use /invite @botname in Slack.
Warning
After pasting the webhook URL in Event Subscriptions, Slack sends a verification challenge. Oya handles this automatically: the URL should verify within a few seconds.

Channel Assignment (1 Agent per Channel)

Each Slack gateway can be assigned to a specific channel. This ensures only one OAgent handles messages in that channel: no ambiguity when multiple OAgents share the same workspace. Open the gateway settings and use the channel picker to select a channel the bot is a member of.

  • Only channels the bot has been invited to are shown.
  • Channels already assigned to another OAgent show a "taken by" label.
  • Private channels appear with a lock icon. Invite the bot with /invite @Oya.
  • Unassigned gateways fall back to disambiguation when multiple OAgents receive the same message.
Tip
Assign each OAgent to a dedicated channel for the cleanest routing. If two OAgents need access to the same channel, leave both unassigned and the OAgent will be selected by best match.

Progress Messages

Enable the Show Progress toggle in gateway config to get real-time step-by-step progress updates in the channel. When enabled, the OAgent posts an editable message that updates live as it works:

  • Each step shows an emoji indicator: ⏳ in-progress, ✅ done, ❌ failed.
  • Steps include skill execution, sandbox operations, LLM calls, and tool runs.
  • The progress message is kept after completion as a log of what happened.
  • Replaces the generic "Still working..." timer message.
Note
Show Progress is available on Slack and Telegram channels. Toggle it in the channel settings.

Telegram

Telegram gateway connection dialog
Connect Telegram with a Bot Token from @BotFather.

Provide the Bot Token from @BotFather to connect Telegram. Chat IDs are automatically discovered as users message the bot: no manual configuration needed.

Tip
Group chats use negative Chat IDs (e.g., -1001234567890). The bot auto-discovers them when it receives a message.

Voice-to-Text (Speech Recognition)

When a user sends a voice message to the Telegram bot, Oya automatically transcribes it using OpenAI Whisper and processes the text as a regular message. The transcribed text is prefixed with [Voice message] so the OAgent knows it came from speech.

Note
Voice-to-text is automatic: no configuration needed. It requires the OPENAI_API_KEY environment variable to be set on the backend.

Voice Notes (Text-to-Speech)

Enable Send Voice Notes to have the OAgent automatically convert text responses to voice messages via OpenAI TTS. You can choose from multiple voices (alloy, ash, coral, echo, fable, nova, onyx, sage, shimmer). The language is auto-detected from the response text.

Note
Voice notes are generated server-side and sent as native Telegram voice messages alongside the text response. Cost is approximately $0.015 per 1,000 characters.

Discord

Add a bot to your Discord server so your OAgent can read and respond to messages across text channels. Provide the Bot Token from your Discord application, and optionally a Server ID and Default Channel ID (enable Developer Mode in Discord to copy IDs). Enable Show Progress to post live step-by-step updates while the OAgent works.

Gmail

Gmail gateway connection dialog
Connect Gmail with one-click OAuth or a service account.

Gmail supports one-click OAuth for personal accounts or manual setup with a Service Account JSON and User Email for Google Workspace environments.

Warning
For service accounts: domain-wide delegation must be enabled in Google Workspace admin, and the service account must be granted the Gmail API scopes.
Warning
One-click OAuth works for personal Gmail accounts. For Google Workspace, you may need admin consent.

Google Calendar

Google Calendar gateway connection dialog
Connect Google Calendar with one-click OAuth or a service account.

Google Calendar can be connected via one-click OAuth or manually with a Service Account JSON and Calendar ID.

Tip
Use primary as Calendar ID for the default calendar.
Warning
The service account must have access to the calendar. Share the calendar with the service account email.

Google Drive

Google Drive gateway connection dialog
Connect Google Drive with one-click OAuth.

Connect Google Drive with one-click OAuth using the same Google app as Gmail and Calendar. Once connected, your OAgent can list, search, create, upload, download, and manage files and folders in Drive.

Tip
Google Drive, Gmail, and Google Calendar all share the same Google OAuth app. Connecting one makes it easy to add the others.

Google Sheets

Connect Google Sheets with one-click OAuth using the same Google app as Gmail, Calendar, and Drive. Once connected, your OAgent can read, write, and manage spreadsheets.

Connect Google Ads via one-click OAuth. Manual setup also accepts a Developer Token and Customer ID. Once connected, your OAgent can manage campaigns, ad groups, and ads, and pull performance reports.

Google Analytics

Connect Google Analytics via one-click OAuth, then point the connection at a GA4 Property ID. Once connected, your OAgent can query traffic, user, and conversion data from your GA4 properties.

Google Business

Connect a Google Business Profile via one-click OAuth. Once connected, your OAgent can manage listings, reviews, and posts, and view insights.

ClickUp

ClickUp gateway connection dialog
Connect ClickUp with one-click OAuth.

Connect ClickUp with one-click OAuth. Oya automatically detects your team ID after authorization. Once connected, the OAgent can create and manage tasks, lists, folders, and comments across your ClickUp workspace.

Jira

Jira gateway connection dialog
Connect Jira with Atlassian OAuth.

Connect Jira via Atlassian 3-Legged OAuth (3LO). After authorization, Oya auto-detects your Atlassian cloud ID. The connection uses rotating refresh tokens for long-lived access without re-authentication.

Note
Jira uses Atlassian's OAuth 2.0 (3LO) flow. Refresh tokens rotate automatically, so the connection stays active without manual re-authorization.

Attio

Connect Attio, the data-driven CRM, to give your OAgent read and write access to your workspace. Two connection paths are supported and both land on the same gateway:

  • One-click OAuth (default): install the Oya app from Attio's app store or click "Connect Attio" in the gateway sidebar. Attio handles authorization in a single browser hop and the connection is reused across every OAgent on your account.
  • Personal access token: paste a token from app.attio.com/settings/api into the gateway connect dialog. Useful when you don't want to install the OAuth app, or for headless setups.
Note
Attio uses OAuth 2.0 with rotating refresh tokens: Oya pre-refreshes access tokens in the background before they expire, so the connection stays active without manual re-authorization.

What the OAgent can do

The Attio skill exposes 24 actions covering the full data model:

  • Records: list, search, get, create, update across people, companies, and any custom objects.
  • Lists: list lists, list entries, add a record to a list.
  • Tasks: list, create, complete. Assignees resolve from workspace member emails or IDs.
  • Notes: list (workspace-wide or filtered to one record), get a single note with full content, and create a markdown note attached to a record.
  • Comments & threads: list threads on a record or list entry, fetch a thread with its comments, post a comment to an existing thread or start a new one inline.
  • Meetings (beta): list meetings filtered by linked record, linked object, or participant emails.
  • Call recordings (beta): list recordings for a meeting, fetch one with its transcript inline.
  • Files (beta): list files across the workspace with optional record/object/storage-provider filters, fetch one with its download URL.
  • Workspace members: list members: useful for resolving the author of a comment or the assignee of a task.

Requested scopes

Attio scopes are configured on the OAuth app at build.attio.com rather than requested per-authorize call. The Oya app asks for the following granular scopes, review them on Attio's consent screen during install:

  • record_permission:read-write: read and write records (people, companies, custom objects).
  • object_configuration:read: discover what objects and attributes exist in your workspace.
  • list_entry:read-write: read and write entries on lists.
  • list_configuration:read: discover what lists exist.
  • task:read-write: read, create, and complete tasks.
  • note:read-write: read and create notes on records.
  • comment:read-write: read threads, read comments, post new comments.
  • meeting:read: read meetings (beta).
  • call_recording:read: read call recordings and transcripts (beta).
  • file:read: read file metadata and download URLs (beta).
  • user_management:read: list workspace members.
Note
Personal access tokens carry the scopes you select when generating them, make sure your token includes the same scopes above if you want the full skill capability.

Real-time triggers

Oya doesn't register Attio webhooks for you automatically yet, but you can wire Attio events into an OAgent today using the generic Webhook gateway (see below). Create a webhook gateway in Oya, copy the URL, and paste it into Attio Settings > Developers > Webhooks. Pick the event types you care about (record updates, list entry additions, comments, call recordings, etc.) and Attio will POST events to your OAgent in real time.

LinkedIn

Connect LinkedIn via one-click OAuth. After authorization, Oya stores the access token and auto-refreshes it before expiry (tokens last 60 days, refreshed at 50 days). Once connected, the OAgent can manage your LinkedIn presence: create posts, share URLs, react to content, comment on posts, and manage company pages.

Note
LinkedIn access tokens expire after 60 days. Oya auto-refreshes them so the connection stays active without re-authorization.
Tip
Connecting LinkedIn also auto-enables LinkedIn Messages, so your OAgent can auto-respond to inbound DMs. See LinkedIn Messages below.
Note
Authorization runs through a hosted auth wizard on LinkedIn's own domain, so you sign in directly with LinkedIn and Oya never sees your password.

WhatsApp

Connect WhatsApp via one-click auth. Scan a QR code from your WhatsApp app to link your account. Once connected, your OAgent can send and receive WhatsApp messages for outbound prospecting.

Auto-respond is configurable per gateway: the AI can auto-respond to incoming messages or notify you on Slack instead.

Note
WhatsApp requires scanning a QR code from the WhatsApp app on your phone.
Note
Linking runs through a hosted auth wizard on WhatsApp's own domain, so you scan the code and authorize directly with WhatsApp, and Oya never sees your credentials.

Instagram DM

Connect Instagram DM via one-click auth. You sign in through a hosted auth wizard on Instagram's own domain to link your account, so Oya never sees your password. Once connected, your OAgent can send and receive Instagram direct messages.

Auto-respond is configurable per gateway.

LinkedIn Messaging

LinkedIn Messaging requires LinkedIn to be connected first (in Apps). Click Enable LinkedIn Messaging to add messaging capabilities to your OAgent. If LinkedIn is not connected yet, clicking the button connects LinkedIn first, then enables messaging automatically.

Once enabled, your OAgent can send connection requests, InMail, and direct messages on LinkedIn.

Facebook Messenger

Connect Facebook Messenger via one-click Meta OAuth. Authorize the OyaAI app on Facebook, and Oya automatically detects your Page and generates a long-lived Page Access Token. Once connected, your OAgent can send and receive Facebook Messenger messages from your Page.

For advanced use cases, expand the Advanced section to provide your own Page ID and Page Access Token manually.

Note
Facebook Messenger requires a Facebook Page. Messages are sent and received through the Page, not a personal profile.

X DMs

Connect X DMs via one-click auth to enable bidirectional direct message conversations on X (Twitter). This is separate from the X (Twitter) posting gateway: the X gateway handles public tweets and engagement, while X DMs handles private conversations.

Once connected, your OAgent can send and receive X direct messages for outbound prospecting and customer conversations.

Note
X DMs and the X posting gateway are independent connections. You can use one or both depending on your needs.
Note
Authorization runs through a hosted auth wizard on X's own domain, so you sign in directly with X and Oya never sees your password.

X (Twitter)

Connect X (Twitter) via one-click OAuth 2.0 with PKCE. Access tokens expire every 2 hours and are automatically refreshed using rotating refresh tokens. Once connected, the OAgent can create tweets, reply, retweet, like, search recent tweets, and look up users.

Note
X uses rotating refresh tokens: each refresh invalidates the previous token. Oya handles this automatically so the connection stays active.

Instagram

The Instagram app connection lets your OAgent publish posts, carousels, reels, and stories to an Instagram Business account. It uses the Instagram Business API: provide your Instagram Business Account ID and a long-lived access token from your Meta app's API Setup page. This is separate from Instagram DM (a channel, above), which handles direct-message conversations.

Apollo

Connect Apollo with your API key from Apollo Settings > Integrations > API Keys. Once connected, the OAgent can search people and organizations matching your ICP, and enrich contact profiles with emails, phone numbers, and company data.

Tip
Apollo is the lead sourcing engine of the AI SDR toolkit. Pair it with Hunter.io for email verification and Instantly for outreach campaigns.

Hunter.io

Connect Hunter.io with your API key from Hunter.io Dashboard > API & Integrations. The OAgent can find emails at a domain, find a specific person's email, verify email deliverability, and count emails by department and seniority.

  • domain_search: Find all emails at a company domain.
  • email_finder: Find a specific person's email by name + domain.
  • email_verifier: Check deliverability (status, score, MX records, SMTP).
  • email_count: Count emails at a domain (free, no credits used).
Note
Free plan includes 25 searches and 50 verifications per month.

Findymail

Connect Findymail with your API key from the Findymail dashboard. Findymail is a waterfall email finder that stacks 10+ providers and runs after Hunter in the cascade, so you only spend credits on leads Hunter can't resolve. Credits are charged only on successful finds.

Instantly

Connect Instantly with your API key from Instantly Settings > Integrations > API. Enable the campaigns and leads scopes when creating the key. The OAgent can manage campaigns, add leads, launch outreach, and monitor analytics.

  • list_campaigns / get_campaign: Browse and inspect campaigns.
  • add_lead / add_leads_bulk: Add leads with personalization and custom variables.
  • launch_campaign / pause_campaign: Control campaign sending.
  • campaign_analytics: Track opens, replies, bounces, and unsubscribes.
  • list_accounts: View connected sending accounts and warmup status.
Tip
The recommended AI SDR workflow: Apollo (find leads) → Hunter (verify emails) → Instantly (send campaigns).

Brevo

Connect Brevo with your API key plus a verified sender email and sender name. Once connected, your OAgent can send personalized transactional emails with per-email open, click, and bounce tracking.

GitHub

Connect GitHub with a Personal Access Token to search repos, trending projects, issues, and discussions: a lead-discovery source for engineering and dev-tool ICPs. A token raises the rate limit from 60 requests/hour (unauthenticated) to 5,000 requests/hour; repo and discussion scopes are recommended.

Tip
Connecting GitHub also grants a one-time credit to your account balance. See the Billing page for details.

Oya Browser

Give your OAgent its own remote browser to navigate, click, type, screenshot, and manage tabs on any website. Connect with an API key from the browser.oya.ai dashboard. All browsers on the key are pooled automatically.

Webhook

Webhook gateway connection dialog
Generic HTTP webhook for custom integrations.

The generic HTTP webhook gateway accepts a Connection Name, an optional HMAC Secret for payload verification, and a Response URL where the OAgent sends replies.

Send a POST request with a JSON body containing a text field:

bash
curl -X POST "https://oya.ai/api/gateways/{gateway_id}/webhook" \ -H "Content-Type: application/json" \ -d '{"text": "What is the weather in NYC?"}'

The OAgent processes the message and sends the response to your configured Response URL:

json
{ "message": "The current weather in NYC is 72°F and sunny.", "channel": "" }
Tip
Use webhooks to integrate with any system that can send HTTP requests: Zapier, Make, n8n, custom backends.

Managing Connections

All connections are account-level. You connect a platform once, either from Settings or from any OAgent, and every OAgent on your account can use that connection. To disconnect or switch to a different account, go to Settings > Connected Accounts.

You can add multiple gateways to a single OAgent: for example, Slack and Telegram simultaneously. Each connection gets a connection name and a unique webhook URL. To add a gateway, click the platform card on the Gateways page and fill in the required fields.

Each gateway produces a unique webhook URL. Use it to configure event delivery on the external platform:

text
# Slack: paste in Event Subscriptions > Request URL https://oya.ai/api/gateways/{gateway_id}/slack/events # Telegram: auto-registered via setWebhook API https://oya.ai/api/gateways/{gateway_id}/telegram/webhook

Activate / Deactivate

Each gateway has an activation toggle. Deactivating a gateway stops it from processing incoming messages without deleting the connection. The gateway shows an "Inactive" badge when deactivated. Re-activate it at any time to resume.

Viewing Credentials

Connected gateways show masked credentials. Click the eye icon to reveal stored tokens and secrets. For OAuth-connected gateways, the panel shows the connected account details (workspace name, email, or site).

Activity Logs

Each gateway has an expandable activity log section showing recent messages processed through that connection. Logs display the timestamp, status (done, failed, queued), user, message preview, and any errors. Click a log entry to view the full thread in Chat.

Warning
To disconnect a platform entirely, go to Settings > Connected Accounts. This removes the connection from all OAgents. Deleting a gateway from a single OAgent only removes that OAgent's use of the connection: the account-level connection remains.

Debugging

Every gateway message is processed as a background job and stored in a thread. To debug what happened during a gateway interaction:

  • Open the OAgent's Chat page: gateway threads appear in the sidebar named by platform and channel.
  • Each assistant response has a Run Tree trace showing LLM calls, tool executions, token counts, cost, and duration.
  • Trace data is internal only: platform users on Slack, Telegram, and other channels only see the text response, never the trace.
Tip
If the OAgent isn't responding on a platform, check the gateway logs on the Gateways page. Jobs stuck in "queued" status indicate the background worker isn't processing them. Jobs that complete but show no response may have an empty completion: check the Run Tree for errors.