Webhooks for AI customer support workflows
ReplyRabbit doesn't offer a generic outbound webhook that fires on every AI event. What it does offer is two things that cover most of the same ground: a Slack incoming webhook that receives issue-created and follow-up-ready notifications, and Workflow Tags that expose every AI decision (priority, sentiment, intent, no-reply, draft-ready, issue state) as FreeScout tags. If you want to trigger something external, you build from the tags with the FreeScout Workflows module or your own automation against FreeScout. This page explains the mechanism and how to use it well.

The one webhook ReplyRabbit calls
The Slack integration takes an incoming webhook URL per mailbox and posts to it when ReplyRabbit creates a Linear, GitHub or Jira issue and when a completed issue has a customer follow-up draft ready. It's a Slack-format payload, so it's not a general-purpose hook, and it doesn't fire for drafts, tags or new emails. Setup is in Slack integration.
Tags as the event interface
Every other AI decision is written to the conversation as a tag with the rr_ prefix, when Workflow Tags are enabled on the mailbox.
| Decision | Example tags |
|---|---|
| Priority | rr_priority_critical, rr_priority_high |
| Sentiment and intent | rr_sentiment_negative, rr_intent_billing |
| Confidence and review | rr_confidence_low, rr_needs_human |
| Sales | rr_sales_opportunity, rr_opportunity_offered |
| Draft state | rr_ai_draft_ready, rr_no_reply_needed |
| Tracker | rr_linear_issue_created |
A tag is a durable, inspectable event. It's on the conversation for any agent to see, it's queryable, and it's the trigger surface for FreeScout Workflows. The labels come from a JSON map you can edit, and ReplyRabbit only ever removes tags it applied itself.
Building an external trigger from a tag
- Enable the tags. In the mailbox's ReplyRabbit settings, turn on AI Signals (for the signal tags) and, under Workflow Tags, Enable workflow sync and Apply FreeScout tags.
- Choose the action. If your FreeScout Workflows install reacts to programmatic tag changes and can call a URL or send a notification, a recipe on the tag is the whole integration.
- Or poll. If Workflows can't do the last hop, a small scheduled job that queries FreeScout for conversations carrying a tag it hasn't seen yet, and calls your endpoint, does the same thing with a minute or two of delay.
- Send the minimum. Whatever you call, send the conversation ID, the tag, and a link. Fetch details from FreeScout on the receiving side if needed, rather than pushing customer text into a third tool.

Why tags rather than a firehose
A generic webhook per event sounds flexible and tends to produce two problems: a receiving service that has to reimplement FreeScout's state, and alerts nobody reads. Tags keep the state in FreeScout, where agents already work, and let each team decide which handful of decisions deserve an external action. The two Slack events are the ones that almost every team wants pushed; the rest are opt-in by recipe.
What stays inside ReplyRabbit
Nothing in this model sends a customer reply. Drafts wait for an agent regardless of which tags fire or which recipe runs. Issue creation on the Team plan is the only automatic outward action, and it goes to your own tracker.
Tracker setup is in Linear integration, the tag map and recipe examples in FreeScout Workflows integration, and the mailbox basics in How to set up ReplyRabbit. If tags don't appear, see Troubleshooting ReplyRabbit.