Webhooks
Find the setup guide for incoming channel and billing events.
A webhook is a message one service sends to another when something happens. answerLoops receives webhook events from the platforms you connect, such as a new question in a Telegram group or a new GitHub issue, and turns each one into a ticket. This page shows how an event travels through answerLoops and points you to the right setup guide for each source.
Each integration has its own registration, permissions, and event format; there is no single payload format for all channels.
How an event becomes a reply
Every channel below feeds the same pipeline, so a question gets the same treatment wherever it was asked.
A reply that continues an existing conversation is added to that ticket instead of opening a new one, and a message that is delivered twice creates only one ticket.
Which webhook goes where
| Source | Endpoint on your deployment | Setup guide |
|---|---|---|
| GitHub | /api/github/webhook | GitHub integration: Issues, Discussions, comments, and repository synchronization. |
| Slack | /api/slack/events | Slack integration: channel messages (polling is available when you have no public endpoint). |
| Google Chat | /api/google-chat/events | Google Chat integration: messages to the Chat app. |
| Discourse | /api/discourse/webhook | Discourse integration: activity in watched categories. |
| Circle | /api/circle/webhook | Circle integration: posts and comments in connected spaces. |
| Telegram | /api/telegram/webhook | Telegram integration: messages delivered to the configured bot. |
/api/email/ingest | Email integration: inbound messages and reply configuration. | |
| Discord | /api/ingest (called by the bot service) | Discord integration: the bot forwards channel messages; Discord itself does not call a webhook. |
| Billing | /api/billing/webhook | Stripe integration: subscription events for operators of the hosted service. |
Request handling
Every inbound endpoint reads the request body with a byte limit (1 MB for most providers, 2 MB for email, 5 MB for GitHub) and answers 413 when it is exceeded. Messages are truncated to 8,000 characters before they are processed, and each workspace has a per-minute budget for inbound events; events over the budget are answered 429 so the provider retries later.
Stripe events are claimed by event id before they are handled, so a retried or simultaneous delivery of the same event is applied once, and an event older than the last one applied for a workspace is skipped.
Verify delivery
Complete the integration's setup guide.
Send a test message or create the supported event in the connected platform.
Check that the expected ticket or status change appears in answerLoops.
If nothing appears, check the platform's delivery history and the answerLoops application logs for that event.
For self-hosted deployments, confirm that the configured callback URL is reachable over HTTPS and points to the intended deployment. Use the exact route and event types in the integration guide.
Where to go next
Generate a grounded answer using the organization's knowledge base, without opening a ticket
Counts against the org's monthly deflection limit — if the limit is reached, returns 429 instead of generating for free. Only high-confidence generations count toward that limit.
Environment Variables
Complete reference for every environment variable recognised by answerLoops.