Skip to main content

External Approval Channels

This guide walks through setting up approval notifications so your team can approve or reject payments from wherever they already work. This is the setup walkthrough. For the concepts (when to use approval workflows, trigger conditions, patterns), see Approval workflows. For the channel API reference (endpoints, request shapes), see Notification channels.

Prerequisites

An active organization with at least one agent
An approval trigger: a configured workflow or a policy rule that requires approval (Securing Agents)
Admin or Owner role in your organization

What You’ll Build

By the end of this guide, your approval flow will look like this:

Step 1: Set Up an Approval Workflow

If you haven’t already, create an approval workflow that triggers on the conditions you care about. For multi-review, sequential, or specifically assigned approvals, configure a custom workflow. A policy rule that requires approval without a matching custom workflow still creates a one-review request for an organization Owner, Admin, or Manager in Alerts & Approvals.
1

Create the workflow

Go to Policies in the dashboard. Create a new Approval Workflow with:
2

Verify it triggers

Request a payment above your threshold and confirm that Conto marks it as waiting for review. Keep the returned payment request ID and check its customer-facing status before taking another payment action.

Step 2: Add a Notification Channel

1

Go to Settings > Channels

Click Add Channel and choose your platform.
2

Configure the channel

Fill in the platform-specific fields.For Slack:
  • Bot Token: xoxb-... (from your Slack app)
  • Channel ID: C0123456789
For Email:
  • Recipients: cfo@company.com, finance@company.com
For Telegram:
  • Bot Token: from @BotFather
  • Chat ID: your group chat ID
3

Select events

At minimum, enable approval.requested. Consider also enabling:
  • approval.escalated for time-sensitive visibility
  • approval.expired so nothing falls through the cracks
  • payment.executed on WEBHOOK channels if your verifier needs to mark invoices as paid
4

Test it

Click the test button. You should receive a sample notification on your platform.

Step 3: Test the Full Flow

1

Trigger a payment that needs approval

Use the SDK or dashboard to request a payment above your approval threshold.
2

Check your channel

Within a few seconds, you should receive a notification on your configured channel with payment details and Approve/Reject buttons.
3

Approve or reject

Complete the approval from the email confirmation page or the Conto dashboard. When the final required approval is recorded, a Conto-managed wallet submits the payment automatically. The approval review then links directly to the chain explorer receipt. If custody execution cannot be completed, the approval remains recorded and the review shows that automatic execution needs attention instead of presenting a receipt. External and smart-contract wallets continue through their manual execution and confirmation flow.
4

Verify the audit log

Go to Audit Logs in the dashboard. You should see the approval decision with the channel recorded (e.g., SLACK, EMAIL).

Multiple Channels

You can configure multiple channels simultaneously. When an approval request is created, notifications are sent to all active channels that subscribe to the approval.requested event. The first approver to act from any channel resolves the request.
Notification channels deliver independently. If one channel is unavailable, other configured channels can still deliver. Temporary delivery failures are retried.

Webhook Integration for Custom Systems

If you already have your own approval system, use the Webhook channel type to receive approval requests and hand the final decision off to an authenticated Conto approver.
/api/approvals/action only processes payment-approval decision tokens. GET ?token=... never records a decision directly; it redirects to a hosted confirmation page first so mail scanners and link previews cannot approve or reject a request by accident. POST accepts only APPROVE and REJECT tokens from approval notifications. Store-order approval emails and auto-pay disable links use their own hosted action flows.

Troubleshooting

  1. Check that the channel is active (toggle is on) in Settings > Channels
  2. Review the delivery notice shown for the channel
  3. Verify your bot token or credentials are correct
  4. For Slack, confirm the bot is invited to the target channel
  5. For Telegram, confirm the webhook URL is set correctly
Action tokens are one-time use and expire with the approval request. If the approval request has already been resolved (by another approver or from the dashboard), the token is no longer valid.
Confirm your Slack app’s interactivity request URL is set to https://conto.finance/api/webhooks/slack, then reconnect the channel in Conto if the issue continues.

Next Steps

Channel Reference

Full configuration reference for all channel types

Policy Testing

Test your approval workflows before going to production