Channels Setup (for Admins)
Who is this for? Workspace admins enabling Email, SMS, Slack, Microsoft Teams, or WhatsApp for the whole workspace. If you're an individual user looking to change how you personally get notified, see the Notifications article instead.
Adomo reaches your team where they already work. Once you enable a channel here, each user picks their own preferred order (for example, Slack first, SMS as a fallback) under Settings > Notifications, and Adomo tries their channels in that order until someone responds.
How to set up a channel (at a glance)
- Sign in to Adomo as an admin.
- Go to Admin > Channels and pick the tab for the channel you want to enable (Email, SMS, Slack, Teams, WhatsApp).
- Paste the credentials from the provider (see the guide below for each).
- Click Test Connection. Adomo verifies with the provider without sending a real message, so you can set things up safely.
- Click Save. The channel is now available for approvals and notifications across your workspace.
Each user then picks how they want to be reached under Settings > Notifications.
Adomo can send email two ways: through a standard SMTP relay (simplest when you already have one), or through Gmail / Microsoft 365 with OAuth2 (recommended for personal Gmail accounts, since Google no longer allows basic-auth SMTP from most accounts).
Option A: SMTP relay (basic)
Works with services like SendGrid, Postmark, Amazon SES, Mailgun, or your own corporate mail server.
- Create (or log in to) your relay account and create an API key or SMTP credentials.
- In Adomo under Admin > Channels > Email, fill in:
- SMTP host and SMTP port (usually
587with STARTTLS, or465with SSL). - From address - must be a verified sender on your relay.
- SMTP username and SMTP password (the API key or credentials from step 1).
- SMTP host and SMTP port (usually
- Leave Auth type on basic.
- Click Test Connection, then Save.
Option B: Gmail with OAuth2
Best for personal Gmail or Google Workspace accounts.
- In Google Cloud Console > Credentials create a project and add an OAuth 2.0 Client ID (Web application).
- Enable the Gmail API.
- Use the OAuth Playground (or your own flow) to obtain a refresh token for the scope
https://mail.google.com/. In the Playground, click the gear icon, tick Use your own OAuth credentials, and paste your Client ID and Secret. - In Adomo under Admin > Channels > Email, set:
- SMTP host:
smtp.gmail.com - SMTP port:
465, Secure: on - Auth type: oauth2
- Paste Client ID, Client Secret, Refresh Token, and Username (the Gmail address you're sending from).
- SMTP host:
- Click Test Connection, then Save.
Option C: Microsoft 365 / Outlook with OAuth2
- Register an app at Azure AD > App registrations.
- Add the delegated permission SMTP.Send on Microsoft Graph and grant admin consent.
- Obtain a refresh token via the authorization code flow.
- In Adomo under Admin > Channels > Email, set:
- SMTP host:
smtp.office365.com - SMTP port:
587 - Auth type: oauth2
- Paste the Client ID, Secret, Refresh Token, and your mailbox address.
- SMTP host:
- Click Test Connection, then Save.
How Test Connection works for email. Adomo logs in to your SMTP server to verify authentication. No email is sent, so there's no delivery or charge.
SMS (Twilio)
Adomo uses Twilio for SMS delivery. You'll need a Twilio account and either a provisioned number or a Messaging Service.
- Sign up at twilio.com/try-twilio. The free trial includes a provisioned number.
- In the Twilio Console home panel, copy the Account SID and Auth Token.
- Under Phone Numbers > Active numbers, copy a number in E.164 format (for example
+14155551234). - In Adomo under Admin > Channels > SMS, paste the Account SID, Auth Token, and the From Number.
- Click Test Connection, then Save.
SMS compliance: opt-in consent (required)
Adomo blocks SMS dispatch to any number until a recorded consent exists for that number. To make that work, you also need to fill in two compliance fields on the SMS admin page. Both are required before SMS will dispatch at all.
- SMS Opt-In Proof URL (
smsOptInProofUrl) - a public URL that describes how your end users opt in to SMS. This is the URL you submit to Twilio / the downstream carriers during brand and campaign registration. Adomo ships with a ready-to-use public article, SMS Messaging and Opt-In, in this help center; paste its public URL here (for example,https://<your-help-center-host>/helpdesk/.../sms-opt-inonce the knowledge base is deployed). Users also see this link next to the consent checkbox in their Notifications settings. - SMS Opt-In Disclosure (
smsOptInDisclosure) - the short consent text shown to users when they add an SMS contact method. A sensible default ships with the product; override it only if your legal or compliance team requires different wording. Example: > I consent to receive transactional SMS from this platform at > the number above. Reply STOP to opt out. Msg & data rates > may apply.
After you save these, users see the disclosure text + the proof URL + a consent checkbox when they add their phone number under Settings > Notifications. They must tick the checkbox for SMS to dispatch; otherwise outbound notifications fall through to the next channel in their preference order.
For external authorities (outside approvers who don't sign in to Adomo directly), admins attest consent on behalf of the external authority under Admin > DOAG > External Authorities.
SMS compliance: STOP / HELP handling
Adomo handles inbound carrier keywords automatically through the Twilio inbound webhook:
- STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT - the number is added to the workspace's suppression list and no further SMS is sent to it, regardless of consent status.
- START, UNSTOP, YES - the number is removed from suppression.
- HELP, INFO - a TwiML help reply is returned automatically.
No admin action is required for these - wire up the Twilio inbound webhook URL shown on the SMS admin page during your Twilio number configuration and the behavior is automatic.
US registration (10DLC, toll-free, short code)
For US traffic you must register a brand and campaign in Twilio before messages deliver reliably. See Twilio's 10DLC guide for long codes, or the equivalent toll-free verification / short-code flow for those number types. For EU traffic, follow Twilio's regional equivalent.
During registration, paste the SMS Opt-In Proof URL you configured above into the "proof of consent" field that Twilio and the carriers require.
Reference
Contact methods for SMS are E.164 phone numbers (+14155551234).
How Test Connection works for SMS. Adomo verifies your credentials by calling a read-only Twilio endpoint. No SMS is sent, so you aren't charged.
Before you enable SMS for your workspace. Read the SMS Messaging and Opt-In article in this help center and confirm your workspace's usage is consistent with it (operational messages only, never marketing, recipients opt in via the app). If you need to send message types or volumes outside that scope, contact your account team first.
Slack
Adomo posts approval requests to Slack via a Slack app installed in your workspace. Users can reply right from the message.
- Go to api.slack.com/apps > Create New App > From scratch. Give it a name (for example "Adomo") and pick the target workspace.
- Open OAuth & Permissions > Scopes and add these Bot Token Scopes:
chat:write- post messageschat:write.public- post to channels the bot isn't a member ofusers:readandusers:read.email- resolve users by emailim:write- open DMs for per-user approval routing
- Click Install to Workspace and approve.
- Copy the Bot User OAuth Token (starts with
xoxb-). - In Adomo under Admin > Channels > Slack, paste the token.
- Click Test Connection, then Save.
- (Optional) Invite the bot to any channel it should post to (
/invite @adomo). Withchat:write.publicyou can skip this.
Contact methods for Slack accept any of:
- user email
@username- a Slack user ID like
U01ABCDEFG - a channel like
#channelor a channel IDC01ABCDEFG
How Test Connection works for Slack. Adomo calls Slack's auth.test endpoint to verify the token. No message is posted.
Microsoft Teams - Incoming Webhook (simple, one channel)
Use this option if you just want approval cards posted to a single Teams channel. Everyone in that channel can see the card. This is quick to set up but not suitable for sensitive approvals - there's no per-user identity, so anyone in the channel could click the button. For DMs, group chats, or per-user routing, use the Teams (Graph) option below instead.
- In Microsoft Teams, open the target channel and pick ... > Connectors (or Manage channel > Connectors in newer UI).
- Search for Incoming Webhook, click Configure, give it a name (for example "Adomo Approvals"), and optionally upload an icon.
- Click Create and copy the generated webhook URL.
- In Adomo under Admin > Channels > Teams, paste the URL into Teams Webhook URL.
- Click Test Connection, then Save.
Limitations. Webhooks post to exactly one channel, only support "Open URL" buttons (no in-chat Approve/Reject), and have no user identity. Don't use webhooks for sensitive approvals.
How Test Connection works for Teams webhook. Adomo posts a small "Connection test" card to the channel so you can confirm it lands.
Microsoft Teams - Graph (per-user DMs, group chats, channels)
This is the full Teams integration. It supports 1:1 direct messages, group chats, and channel posts, and it preserves per-user identity so only the right person can approve.
1. Register an app in Azure AD
- Open Azure Portal > App registrations and click New registration.
- Name it (for example "Adomo Teams Approvals") and choose Accounts in this organizational directory only.
- From the app's Overview page, copy the Application (client) ID and the Directory (tenant) ID.
2. Add API permissions
Under API permissions > Add a permission > Microsoft Graph > Application permissions, add:
Chat.ReadWrite.All- create and post 1:1 / group chatsUser.Read.All- resolve users by email / UPNOrganization.Read.All- used by Test ConnectionChannelMessage.Send- only needed if you'll post to team channels
Click Grant admin consent for <your tenant>. Every row must show the green checkmark.
3. Create a client secret
Under Certificates & secrets > Client secrets > New client secret, create one and copy the Value (not the Secret ID). This is shown only once.
4. Save the credentials in Adomo
In Admin > Channels > Teams (Graph), paste the Client ID, Tenant ID, and Client Secret. Click Test Connection, then Save.
5. (Optional) Enable in-chat Approve / Reject buttons
By default, Teams messages include an Open Adomo button that takes the approver to the Adomo approvals page in a browser. If you want the Approve and Reject buttons to work directly inside the Teams chat:
- Create an Azure Bot resource. Choose Multi-tenant and reuse the App ID from step 1 (or create a new one).
- Set the bot's messaging endpoint to the URL shown in Adomo under Admin > Channels > Teams (Graph) > Bot mode (copy the URL displayed there; it's specific to your workspace).
- In the bot's Channels blade, add the Microsoft Teams channel.
- Author a Teams app manifest for the bot. The easiest path is Teams Developer Portal, which lets you edit the manifest visually; otherwise see the manifest schema docs. Export the
.zippackage. - Upload the manifest to Teams Admin Center > Manage apps > Upload new app. Users in your tenant then install the app (or an admin pre-installs it). Proactive 1:1 DMs only deliver after install.
- In Adomo, enable Bot mode and paste the Bot App ID.
Contact methods for Teams (Graph)
Any of:
[email protected]- resolved by email or UPN (delivers a 1:1 DM)user:<aad-object-id>- direct Azure AD user ID (1:1 DM)group:<chat-id>- existing Teams group chatteam:<teamId>/channel:<channelId>- post in a team channel
WhatsApp (Meta WhatsApp Business Cloud API)
Adomo uses Meta's WhatsApp Business Cloud API. You'll need a Meta developer account, a WhatsApp Business Account (WABA), and a verified phone number. WhatsApp requires pre-approved message templates for any message sent outside a 24-hour active conversation - this is Meta's rule, not Adomo's.
- Create a Meta app at developers.facebook.com/apps. Choose Business as the app type.
- Add the WhatsApp product. Meta gives you a test phone number you can use immediately. For production, add and verify your own number.
- Copy the Phone number ID (numeric).
- In Meta Business Manager, create a System User and generate a permanent access token with the
whatsapp_business_messagingandwhatsapp_business_managementpermissions. - Create a message template (category Utility or Authentication) named, for example,
approval_request, with placeholders for the request details. Adomo uses your template for proactive messages. - In Adomo under Admin > Channels > WhatsApp, paste the Phone number ID and the access token.
- Click Test Connection, then Save.
Contact methods for WhatsApp are E.164 phone numbers (+14155551234).
How Test Connection works for WhatsApp. Adomo fetches phone-number metadata from Meta's Graph API. No WhatsApp message is sent.
Admin FAQ
Can I enable more than one channel at once?
Yes. Enable any combination. Each user then picks their own preference order under Settings > Notifications.
Can I test channels without bothering real users?
Yes. Test Connection on each channel verifies credentials with the provider without sending a real message. The one exception is Teams Webhook, which has no silent test option on Microsoft's side, so Adomo posts a small "connection test" card to the channel only.
Where do I see delivery history?
Each approval's timeline in the Adomo app shows which channels were attempted, in what order, and what the response was. Admins can also view cross-workspace delivery activity under Admin > Channels > Activity.
What happens if a user hasn't set any contact methods?
The approval still records, and the user sees it in-app when they next sign in. No outbound message is sent. Remind users to set their contact methods under Settings > Notifications after you enable channels.
What happens if a channel fails for a given user?
Adomo tries the next channel in that user's preference order. If no channel responds within the workflow's configured time window, the approval escalates to the fallback approver defined on the workflow (if any), and the timeout is logged.
How do I rotate a credential?
Open the channel's tab in Admin > Channels, paste the new credential, click Test Connection, then Save. Previous credentials are overwritten.
Where do approvers actually change their own preferences?
They do it themselves under Settings > Notifications (see the Notifications article). Admins don't manage per-user contact methods.