Skip to main content
opini

Follow-ups

Feedback often arrives one sentence short of useful. A follow-up is a one-shot email reply — you ask a question from triage, the submitter answers without creating an account, and the reply lands back on the same row.

When to use one

Three real asks:

  • "Can you share the URL where you saw this?" — when the submitter didn't use the widget and page_url is empty.
  • "Which browser / OS?" — when the bug report leaves you guessing.
  • "Would a smaller version of this solve it?" — when the feature ask is bigger than it needs to be.

Follow-ups don't replace email threads — they just keep the first round-trip inside Opini, so the answer is filed next to the original submission instead of drifting into a shared inbox.

How it works

From the triage detail panel, click Ask a follow-up. Write the question (one textarea — keep it short). On send, Opini emails the submitter a reply link at whatever address they submitted with.

The link lands them on a single focused reply page: the original feedback excerpt, your question, a textarea, a submit button. No account, no login, no dashboard chrome.

The reply page

Opini hosts the reply page at /followup/{token}. It's one-shot: once the submitter answers, the token stops working. Hitting the URL a second time shows a "this follow-up has been answered" page.

The reply text flows back onto the feedback row in triage, next to the original body. Admins see both sides side by side without leaving the panel.

Lifecycle & limits

  • Expires in 30 days. After that the link stops working and the follow-up is marked expired — good enough for quick back-and-forth, narrow enough to discourage shared-inbox replies a month later.
  • One answer. The link can only be used once. For a second round, ask another follow-up.
  • No authentication needed. The token in the URL is the auth. Don't forward the link — it's equivalent to the submitter's reply mailbox for this one question.

Events

Follow-ups emit two webhook events you can subscribe to:

  • follow_up.asked — fired when you send the question.
  • follow_up.answered — fired when the submitter replies.

Route these into your CS channel or pipeline via /docs/webhooks.