How Do I Trigger My Agent from External Apps (Webhooks)?
In this article
In this article group
- How Do I Create a Project Page?
- Using Bankr from Claude Code
- How Do I Create a Paid API Endpoint with x402 Cloud?
- How Do I Execute Direct Transactions via the Wallet API?
- How Do I Provision Wallets for My Users?
- Why Isn't My x402 Endpoint Listed in the Marketplace?
- How Do I Use Private (Confidential) AI Models?
A Bankr webhook gives you a URL that other apps can call to make your agent do something. When Slack, GitHub, Stripe, Zapier or your own app sends a request to that URL, a small handler you write turns it into a prompt, and your agent runs it. It's a developer feature: you write the handler in TypeScript and deploy it with the Bankr CLI.
How It Works
You write a handler that checks the incoming request is genuine and returns a prompt.
You deploy it with
bankr webhooks deployand get a public URL likehttps://webhooks.bankr.bot/u/<wallet>/<name>.You give that URL to the other service.
Each time the service calls it, your agent runs the prompt with the permissions you set for that webhook.
Webhooks are included with your Bankr account. You only pay for what the agent does on-chain, the same as any other Bankr session.
Managing Your Webhooks
Manage webhooks, see every call with its status and errors, and rotate secrets at bankr.bot/webhooks. Store signing secrets and API keys there as encrypted environment variables rather than in your code.
Safe by Default
Read-only to start: a new webhook can check prices or read data, but can't move funds or swap tokens until you turn on write permissions.
Transfer allowlist: before you turn on writes, add the addresses the agent may send to. A write-enabled webhook with an empty allowlist is rejected.
Rate limit: new webhooks are limited per minute so a noisy app can't flood your agent. Only the per-minute limit is enforced.
IP restrictions: you can limit a webhook to exact IP addresses. Ranges aren't supported, so rely on signature checks for services like GitHub or Stripe that send from many addresses.
What People Use Them For
Slack: someone mentions your agent, and it replies in the thread with a portfolio summary.
Stripe: a customer pays you, and the agent buys $50 of ETH with USDC from your wallet.
GitHub: a new release is published, and the agent posts a summary to your community.
Gotchas
Webhook not firing? Check the call logs and error messages on the Webhooks Dashboard.
Always verify signatures from the calling service (Slack, Stripe, GitHub) in your handler, so only genuine requests reach your agent.
Agent can't send funds? The webhook is probably still read-only, or the recipient isn't on its allowlist.
For writing handlers, provider templates, and the full permission model, see Webhooks on docs.bankr.bot.