Spike in negative customer signals (refund reasons, low ratings, support escalations). Brand-health canary.
At a glance
A 24-hour rolling count of negative customer signals: refund reasons containing complaint keywords, low-rated review submissions (when product-review apps are connected), and support-ticket escalations tagged urgent. Brand-health canary; an early-warning of viral-grade complaints.
| What it counts | COUNT(distinct refunds with note matching complaint regex) + COUNT(reviews where rating <= 2) + COUNT(support tickets tagged 'urgent' or 'complaint') over the trailing 24h. Each unique negative signal is one count. |
| VAT / tax treatment | Not applicable, count metric. |
| Shipping | Not applicable directly; shipping-related complaints contribute to the signal as one of the complaint keyword categories (“late”, “lost”, “damaged”). |
| Discounts | Not applicable. |
| Refunds | Refund records with complaint notes contribute. Refunds without notes (silent refunds) do not. |
| Cancelled / voided orders | Not directly counted; cancellations with complaint reasons can contribute via the cancelReason field if it indicates dissatisfaction (CUSTOMER, OTHER with note). |
| Currency | Multi-currency safe (count metric). |
| Channels / sources | All channels. POS-originated complaints rarely surface here unless captured in a CRM connector; the metric is online-skewed. |
| Time window | RT (real-time, 24h rolling) |
| Alert trigger | >5 negative signals in 24h, configurable. The threshold scales with brand size; large brands need higher thresholds to avoid noise. |
| Roles | owner, marketing, operations |
Calculation
Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US food-and-beverage DTC brand on Shopify, ~800 orders/day. Wednesday 22 Apr 26, 14:00 PT. The alert fires: 11 negative signals in trailing 24h (vs 24h baseline of 1-2). Drill-down by signal type:| Signal source | Count | Sample notes |
|---|---|---|
| Refund reasons matching “broken” / “damaged” / “leaked” | 7 | ”Bottle leaked in transit”, “broken cap”, “wet box” |
| Low-rated reviews (Yotpo, ratings 1-2) | 3 | ”Arrived smashed, won’t reorder” |
| Urgent support tickets | 1 | ”Whole shipment damaged, need refund” |
| Total in 24h | 11 |
- The cause is concentrated. 7 of 11 signals mention damage/leaks; this is a packaging issue, not a quality issue. The brand received a new shipment of bottles 3 days ago; the new bottles may have a sealing defect.
- The signal is leading. At 14:00 PT, 11 signals have appeared. By tomorrow morning, social-media (Trustpilot, Reddit, Twitter) reviews will likely surface; today is the action window.
- Refund spike will follow. A 5-7× normal complaint volume on damage → expect Refund Rate to spike 2-3× over the next 7-10 days as customers process the experience and request refunds.
- The geographic clue. If the brand checks ZIP-code spread, complaints are concentrated in West Coast deliveries (which used a different carrier this week). Carrier or transit-route issue, not a product defect.
- Action: pause shipping ASAP. Hold all in-flight orders matching the same SKU + carrier combo. Re-package or re-ship via known-good carrier. The cost of holding orders is far less than the customer-trust cost of more damage complaints landing.
Sibling cards merchants should reference together
The negative-burst alert is the canary. The investigative cards:| Card | Why pair it with this alert |
|---|---|
| Refund Rate | The lagging £-impact metric. A burst here predicts a refund-rate spike in 5-10 days. |
| Top Refunding Customers | Drill-down to the customers raising signals. Often pattern-clusters by SKU or batch. |
| Top Products by Revenue | Cross-reference: are complaints concentrated on a top-revenue SKU (real damage)? |
| Refund-Rate Spike Alert | Companion alert, focused on rate not signal count. Often fires within days of this. |
| Customer Feedback (Trustpilot) (when connected) | External-review companion. Internal signal precedes external by 2-7 days. |
| Klaviyo unsubscribe rate | Unsub spikes after large-scale negative experiences; signal here may forecast it. |
| Refunds Over Time | Trend chart that confirms whether the burst is a one-off or sustained. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Shopify itself doesn’t expose a “negative signal burst” widget; reconstruct from:- Orders → Filter by recent refunds: shows refund records; manual scan of the Reason column reveals complaint-flagged refunds.
- Inbox → Conversations: customer-service messages, not categorised by sentiment.
- Reviews app dashboard (Yotpo, Loox, Judge.me, Stamped): rating-bucket breakdown and recent-review feeds; manually count <=2-star reviews in 24h.
| Reason | Direction | Why |
|---|---|---|
| Keyword-matching precision | Either | Our complaint regex catches “broken”, “damaged”, “leaked”, “wrong”, “missing”, “late”, “lost”, “wrong size”, “doesn’t work”. Custom complaint vocabulary may not be caught. Tune the regex per workspace if you operate in a non-English language or industry with specific failure modes. |
| Review app coverage | Ours lower if not connected | Without a connected reviews app, we miss the public-review signal entirely. |
| Support ticket integration | Ours lower if not connected | If you use Gorgias, Zendesk, or Re:amaze and they’re not connected, we don’t see urgent-tagged tickets. |
| Time zone | Boundary 24h window | Vortex IQ uses UTC; the 24h window can shift by a few hours vs store time zone. |
| Refund silent vs flagged | Ours lower than gross refund count | We count only refunds with note text. Silent refunds (no reason) aren’t counted as complaint signals. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
gorgias.gr_urgent_ticket_count (when connected) | Direct signal source | Gorgias auto-tags urgent based on customer language. We pull these tickets into our count. |
zendesk.zd_csat_score (when connected) | Inverse correlation | A burst on this card typically corresponds with a CSAT score dip in the next 7-14 days. |
trustpilot.tp_review_score (when connected) | Lagging | External 1-star reviews appear 2-7 days after internal signal bursts. |
Known limitations / merchant FAQs
Why is my threshold 5? Should I tune it? Yes, especially if your daily order volume is meaningfully different from a 1,000-order/day baseline:- <200 orders/day: 5 may be too high; even 2-3 in 24h is unusual. Set to 3.
- 200-1,000 orders/day: 5 works.
- >1,000 orders/day: 5 is too noisy; raise to 10-15.
- >10,000 orders/day: 5 fires constantly; raise to 30+.
- Discount-coupon redemption with the word “wrong” in custom note (e.g. “Customer entered wrong code”). Refine your refund-reason taxonomy.
- Test orders / staff training orders with playful complaint notes. Mark these as
Order.testor filter by tag. - Bulk customer migration / refund correction where you’re processing legitimate retroactive refunds. The note text triggers the regex even though the customer isn’t currently complaining.
- Damage cluster spike: ops issue, packaging or carrier problem.
- Late cluster spike: ops issue, fulfilment delay (cross-reference with Fulfilment Delay Alert).
- Quality cluster spike: product issue, batch or QC problem.
- Wrong-item cluster: pick error or PIM-mismatch.
- Read the actual signals in the drill-down. The text reveals the cause.
- Cluster by keyword theme: damage, late, quality, fit, billing.
- Find the common variable: SKU, batch, carrier, region, date. There’s almost always a common cause.
- Pause the cause if possible: hold shipments of suspect SKU, switch carriers, contact warehouse for QC review.
- Email affected customers proactively with apology and remedy. Don’t wait for them to ask.
- Add product/batch/carrier QA before incidents repeat. Document the cause and prevention in your ops playbook.