Catch ThriveCart refund spikes before they hurt your product

Every ThriveCart refund posts to Slack, and when refunds cluster on the same product the agent files a Linear issue with a diagnostic brief.

Agentic Task
ThriveCartSlackLinearProductOperationsNotifications & AlertsFeedback TriageResearch & Monitoring

Build an agent workflow that treats every ThriveCart refund as a possible product-quality signal, not just an accounting event. The value of the agent is in the diagnostic write-up and the conditional escalation, so use the agent workflow type.

Trigger: a ThriveCart webhook on order.refund events. On install, use ThriveCart Create Event Subscription to subscribe the workflow's webhook URL to order.refund so the workflow fires whenever a refund happens.

Configurable inputs the user should set when they install the workflow:

- Slack channel for the per-refund ops summary (default: an ops or revenue channel).

- Linear team that owns product quality, plus an optional default assignee, priority, and project.

- Refund spike threshold: a count threshold (default 3 refunds in 14 days on the same product) and a rate threshold (default refund rate above 5 percent of recent transactions for that product). Either crossing fires an escalation.

- Lookback window in days (default 14).

- Linear label to apply (default refund-spike).

Steps the agent should take when an order.refund webhook arrives:

1. Read the refund payload. Capture the product id and name, order id, refund amount, customer email, and any customer-supplied refund note or reason.

2. Call ThriveCart Get Customer using the customer email to pull their purchase and refund history with us, so the brief can say whether this is a first-time buyer or a repeat customer.

3. Call ThriveCart List Transactions filtered to the configured lookback window (default last 14 days). Scan the results for other refunded transactions on the same product. Count them, and compute the refund rate as refunds divided by total transactions for that product in the window.

4. Always post a Slack Send a Message to the configured ops channel summarizing the single refund: product, customer (masked email if appropriate), amount, and one line on whether the threshold was crossed ("1 of 3 in 14 days" or "spike: 4 refunds, 7 percent refund rate").

5. If the threshold is crossed, write a short diagnostic brief in plain English: what's happening (refund count, refund rate, window), what the product is, the customer notes or refund reasons collected from the payload and recent transactions, and one or two suggested next steps for the product owner. Then call Linear Create Issue in the configured product team with the brief as the description, a clear title like "Refund spike: <product name> (<count> refunds in <window>)", and the refund-spike label so the product team can filter on it.

6. If the threshold is not crossed, do not file a Linear issue. The Slack message is enough.

Guardrails: do not file duplicate Linear issues for the same product within the lookback window. If an open refund-spike issue for that product already exists in the team, add a comment with the new refund instead of opening a new one. Mask or trim PII in Slack as needed. Use ThriveCart amounts in dollars even though the API returns cents.

Additional information

What does this prompt do?
  • Posts a short Slack summary in your ops channel every time a ThriveCart order is refunded, with the product, the customer, and the amount.
  • Looks back at the last two weeks of refunds for the same product and decides whether this refund is part of a pattern or a one-off.
  • When refunds cluster on one product (you choose the threshold), the agent writes a plain-English diagnostic brief and opens a Linear issue for the product owner.
  • Tags every escalation with a refund-spike label so your product team can filter, triage, and close the loop.
What do I need to use this?
  • A ThriveCart account where you can create an API key.
  • A Slack workspace and the channel you want refund alerts posted in.
  • A Linear workspace and the team you want refund-spike issues filed in.
How can I customize it?
  • Set your own spike threshold, for example 3 refunds in 14 days or a refund rate above 5 percent.
  • Change the Slack channel that gets the per-refund summary, or split ops alerts and escalations into two channels.
  • Pick which Linear team receives refund-spike issues, and pre-fill priority, assignee, or project.

Frequently asked questions

Will my product team get pinged on every single refund?
No. Every refund goes to Slack as a quick FYI, but a Linear issue is only filed when refunds cluster on the same product and cross the threshold you set. One-off refunds stay out of your product backlog.
What does a spike actually mean here?
By default the agent flags a product as a spike when it sees 3 or more refunds in the last 14 days, or a refund rate above 5 percent of recent sales for that product. You can change either number to match your business.
What goes into the Linear issue?
A short brief with the product name, how many refunds happened in the window, the refund rate, and any customer notes that came through in the refund payload, so the product owner has context before they dig in.
Do I need a paid Linear plan?
No. The agent files standard issues using your normal Linear workspace, so it works on every Linear plan that lets you create issues by API.
Can I send the Slack summary somewhere else, like a DM or a private channel?
Yes. You can point the Slack message at any channel, group DM, or direct message the connected Slack user can post to.

Stop letting refund patterns hide in your inbox.

Connect ThriveCart, Slack, and Linear once, and Geni watches every refund and escalates only when there is a real product problem.