Hydra logoHydra · Hydra Support

Configuration

CSAT post-resolution survey

Send a one-question 1-to-5 satisfaction survey when a conversation is resolved. Customers can submit via email link or inline in the widget; ratings flow into reports per channel and per bot.

CSAT post-resolution survey

When a conversation is marked resolved, Hydra can automatically send the customer a quick rating prompt. The survey is one question — "How was your experience?" — answered with a 1-to-5 star rating and an optional free-text comment.

How it shows up

There are two surfaces, and both work off the same survey row, so you only ever get rated once per conversation:

  • In the widget. If the customer's chat is still open at the moment a teammate or bot resolves the conversation, the widget shows an inline rating card right under the last message. They click a star, optionally type a comment, and submit — without leaving the conversation.
  • By email. If the customer has an email on file, Hydra sends a survey email via Resend with a single-use link to a clean rating page. The link works for 30 days. If they already submitted via the widget, the link still loads and shows "Already submitted."

If the customer has no email and isn't actively in the widget when resolution happens, the survey is dispatched but goes ungathered. That's an explicit tradeoff — Hydra doesn't queue surveys for next-time-they-return.

Enabling CSAT

CSAT is off by default for every tenant. Turn it on at Settings → CSAT Survey:

  • Send CSAT survey when a conversation resolves — master toggle. When off, no survey fires from any resolve path.
  • Send delay — Immediate, 1 hour, 4 hours, 24 hours, or a custom number of minutes (max 7 days). A short delay reduces "survey-on-typo" cases when an admin re-opens within a few minutes of a misclick.

A note on delay precision: Hydra runs the delay sweep once a day on the daily summarize cron. So if you pick "1 hour", the survey will go out somewhere between 1 hour and ~25 hours after the resolve. Sub-daily delivery is on the roadmap as Hydra moves off shared hosting.

If you want to send right at the moment of resolution, set delay to Immediate (0). There's no delay floor at zero — the dispatch fires inline with the resolve action.

How resolution counts

The survey fires on the first open→resolved transition for a conversation. Any of these resolve paths trigger it (subject to the toggle being on):

  • An admin clicks Resolve in the inbox detail view (/inbox).
  • An admin sends a status PATCH via the conversation API.
  • The MCP close_conversation tool transitions the conversation to resolved.

If the conversation is re-opened and resolved again, no second survey fires — the row is created once per conversation_id and a duplicate dispatch is a silent no-op (idempotent).

Where the data shows up

Submitted ratings are aggregated on the Reports page in a "Customer satisfaction" section:

  • Headline tiles: average rating (1-5), response rate (% of dispatched surveys that got a reply), surveys sent in range, surveys submitted.
  • Per-bot breakdown: average rating + response rate per bot that resolved conversations in range.
  • Per-channel breakdown: same shape but grouped by the channel the conversation came in on.

Use the date-range toggle at the top of /reports to switch between 7d / 30d / 90d / all-time.

Surveys dispatched against a deleted bot or channel still aggregate under "— Unattributed —" rather than disappearing — historical CSAT survives parent deletion via ON DELETE SET NULL.

Audit trail

Every change to the CSAT settings (toggle flip or delay change) is logged to /team/audit-log as "Changed CSAT settings", with the before/after values in the diff column.

Privacy

  • Tokens are opaque random hex bound to a single survey row. No customer identity is encoded in the token.
  • The submission endpoint (POST /api/csat/submit) is rate-bound only by the token's single-use + 30-day expiry — there's no enumeration vector because guessing a 32-char hex token is computationally infeasible.
  • Comments are stored verbatim and surface in reports alongside the score. Don't ask customers to paste sensitive data into the comment box.