WXI
Worst Experience Indicator

Find out what your customers hated.
Then fix it.

WXI™ measures the gap between what customers expected and what they actually got, at the exact moments that matter. Then it asks one question NPS never will: what was the single worst part?

Try it free, then choose a plan. Cancel any time.
The gap, made visible
1
Got: 4
Expected: 8
10

Gap = what they got minus what they expected.

Gap of −4.0 at “delivery arrival”. Worst part, in their words: “the slot said 6pm, it came at 8”

Your NPS score is a number. It has never fixed anything.

You survey customers after every transaction. The scores roll into a dashboard. The dashboard goes into a quarterly review. And nothing changes, because an average of seven across ten thousand responses tells you the temperature of the room and nothing about where the fire is.

You don’t know which moment drove the sixes. You don’t know what the sixes experienced that the eights didn’t. You don’t know what one thing you could fix tomorrow that would actually move the number.

Averages hide the moments that drive churn, complaints, and lost trust. A customer who scores you six and a customer who scores you eight may have hit the same catastrophic moment. Aggregate scores miss it. WXI finds it.

How it works

Two readings. One question.

WXI measures each Point of Experience in your customer journey with a before reading and an after reading.

Pre-experience sentiment
Quantitative
Point of
Experience
PoE
Post-experience sentiment
Quantitative
Single worst experience
Qualitative

WXI: the gap between before and after sentiment.

Single worst experience → straight to your UX and product teams.

01
Before "checkout"
8/10
Before
The customer tells you what they expect. A single slider, answered in seconds, before the experience starts.
02
After "checkout"
4/10
After
The same customer tells you how it actually went. The gap between the two readings is the WXI score. Negative means you fell short of the expectation you set.
03
Worst part, in their words
“Checkout said free returns, then charged me for the label.”
The worst part
One open question: what was the single worst part of this experience? In their own words. No rating grids, no ten-minute surveys.

Expectation versus reality, measured in the moment, while the customer remembers it clearly. The theory behind it, expectancy-disconfirmation (Oliver, 1980), has anchored satisfaction research since 1980; WXI is what it looks like when the measurement finally costs one tap.

Live Interactive Demo

See the gap for yourself.

See what a customer experiences in your app, and how WXI joins the two readings into one gap score.

Customer view · Before experienceStep 1 of 2

Question asked at basket:

How smooth do you expect this checkout to be?

Poor (1)8 / 10Effortless (10)

Takes under two seconds to tap. WXI pairs this reading to the user session in first-party storage without cookies.

Embed size: under 10 KB · Shadow DOM isolated · No personal identifiers collected by default
Dashboard Feed · Live Pair ResultPoint of Experience: “Checkout”
Expected
8.0
Before reading
Got
4.0
After reading
Gap
-4.0
Fell short
AI Diagnosis & ClassificationPriority Fix
Customer feedback: “Checkout stated free returns, then charged $4.50 for the label at collection.”
Worst moment:Return policy transparency· Severity 4.2 / 5
1 of 1 customers answered both questions (100%)1 response
Ready to see real customer gaps in your app?Start free trial →
The flagship report

A brief your team can act on, written from thousands of answers.

Open text is where the truth lives, and it’s also where most tools give up. WXI reads every worst-experience answer as it arrives, flags anything urgent immediately, and groups the rest into stable, named worst moments.

You see the five things hurting your experience most, how each is trending, quotes from your customers’ own answers, and a suggested action for each. Worst moments stay consistent over time, so “checkout confusion” is a trend line you can watch fall after you fix it.

Serious responses, like safety issues or discrimination claims, trigger an alert within seconds.

“Fixing the worst moment in a journey beats marginal improvements everywhere else.”
Fernway Home & Garden
Worst Experience Report
1 to 30 September 2026 · 6,204 responses · 4,911 customers answered both questions (79%)
Company-wide WXI score
−14
Score down 5
−1000+100
Top worst moments by volume
Severity: Mild Moderate Severe
01
Delivery window roulette
312mentionsMentions up 18%
“The slot said 8am to 6pm. It arrived at 7.40pm and the driver had already left when I called.”
Suggested action
Send a two-hour delivery window by text, thirty minutes before arrival.
02
Missing parts on assembly
201mentionsMentions down 9%
“Two brackets short. Spent forty minutes searching the box before I gave up and called support.”
Suggested action
Add a parts checklist to the packing slip and photograph contents before dispatch.
03
Return label maze
168mentionsMentions up 6%
“I had three different links and none of them printed a label that worked at the drop-off point.”
Suggested action
Generate the return label at checkout, not after a support request.
04
Support goes quiet after ticket
144mentionsMentions unchanged
“Got a ticket number, then nothing for six days. I only heard back after I posted on their page.”
Suggested action
Set an automatic 48-hour check-in on every open ticket.
05
Price changed at checkout
97mentionsMentions up 22%
“The price on the product page was not the price I was charged. Small difference, but it felt dishonest.”
Suggested action
Lock the displayed price for the length of the checkout session.

Sample report with illustrative data

Installation

Live in fifteen minutes.

One lightweight script for your website. A REST API for apps and anything custom. QR codes for physical experiences, from hotel stays to service counters.

Define your Points of Experience in the dashboard, copy the snippet, and responses start arriving. No tagging plans and no six-week implementation. Or hand the prompt below to your AI coding agent and let it wire everything up.

Under 10 KB, no third-party calls, no cross-site cookies. Your customers’ answers stay anonymous by default.

order-confirmation.html
<!-- Before the experience (e.g. on the cart page) -->
<script src="https://getwxi.com/embed/v1/wxi.js"
data-wxi-key="<WXI_PUBLISHABLE_KEY>"
data-wxi-poe="<POE_ID>"
data-wxi-auto="pre" defer></script>
<!-- After it (e.g. order confirmation), worst-part question included -->
<script src="https://getwxi.com/embed/v1/wxi.js"
data-wxi-key="<WXI_PUBLISHABLE_KEY>"
data-wxi-poe="<POE_ID>"
data-wxi-auto="post" defer></script>
Prompt for your AI coding agent
Set up WXI (Worst Experience Indicator) in this codebase. WXI measures the gap between what a customer expected and what they actually got at a specific Point of Experience (PoE), then asks one open question: what was the single worst part.

I will give you:
- Publishable capture key: <WXI_PUBLISHABLE_KEY>   (looks like wxi_pk_...)
- Point of Experience id:  <POE_ID>                (a UUID from the WXI dashboard)

Where each reading goes:
- Before the experience (pre): not specified. Find the natural moment in this codebase (where the experience starts) and tell me what you chose.
- After the experience (post): not specified. Find the natural moment in this codebase (where it ends) and tell me what you chose.
Put each call exactly there and nowhere else. If a place above does not exist in this codebase, stop and ask me rather than guessing.

Choose the integration that fits this project:

1) Plain website / HTML
   Load the script on the page that asks, with the trigger as attributes on the same tag.
   Before the experience (a page placement, opens on page load):
     <script src="https://getwxi.com/embed/v1/wxi.js" data-wxi-key="<WXI_PUBLISHABLE_KEY>" data-wxi-poe="<POE_ID>" data-wxi-auto="pre" defer></script>
   After the experience (opens on page load, and includes the worst-part question):
     <script src="https://getwxi.com/embed/v1/wxi.js" data-wxi-key="<WXI_PUBLISHABLE_KEY>" data-wxi-poe="<POE_ID>" data-wxi-auto="post" defer></script>
   Or open it when an element is clicked (an element placement). Load the script once without data-wxi-auto, then add the attributes to that element:
     <script src="https://getwxi.com/embed/v1/wxi.js" data-wxi-key="<WXI_PUBLISHABLE_KEY>" defer></script>
     <button data-wxi-ask="pre" data-wxi-poe="<POE_ID>">...</button>
   Do not call wxi.ask(...) from an inline script that runs while the page is still loading: the script is deferred, so wxi does not exist yet. If you must call it, do so inside a DOMContentLoaded or load handler.

2) React / Next.js (and other single-page apps)
   There is no npm package. Use the same hosted script.
   a. Load it once in the root layout, never per page:
        import Script from 'next/script';
        <Script src="https://getwxi.com/embed/v1/wxi.js" data-wxi-key="<WXI_PUBLISHABLE_KEY>" strategy="afterInteractive" />
      (In a non-Next React app, add the plain script tag from option 1 to index.html, with defer.)
   b. To open on a click, put data-wxi-ask and data-wxi-poe on the element, as in option 1. This needs no component and has no timing issues.
   c. To open when a page or screen shows, add a small client component to that page. wxi.js may not have loaded yet, so queue the call instead of calling wxi.ask directly:
        'use client';
        import { useEffect } from 'react';
        type Wxi = { ask?: (poe: string, kind: 'pre' | 'post') => void; q?: [string, 'pre' | 'post'][] };
        export function WxiAsk({ kind }: { kind: 'pre' | 'post' }) {
          useEffect(() => {
            const w = window as unknown as { wxi?: Wxi };
            if (w.wxi?.ask) { w.wxi.ask('<POE_ID>', kind); return; }
            const wxi = (w.wxi ??= {});
            (wxi.q ??= []).push(['<POE_ID>', kind]);
          }, [kind]);
          return null;
        }
      Render <WxiAsk kind="pre" /> and <WxiAsk kind="post" /> only on the pages placed above. Do not use data-wxi-auto here: client-side navigation does not re-run a script that is already loaded.

3) Backend / any language (REST), for mobile apps, kiosks or server-side
   POST https://getwxi.com/api/v1/responses
   Header:  X-WXI-Key: <WXI_PUBLISHABLE_KEY>
   Pre:     { "poe": "<POE_ID>", "kind": "pre", "value": 0-100 }
   Post:    { "poe": "<POE_ID>", "kind": "post", "value": 0-100, "session": "<from pre>", "worst_text": "..." }
   Pairing depends on how this Point of Experience is set up in the WXI dashboard:
   session mode: pre responds with "session" (a UUID); send it back as "session" on the post.
   token mode: pre responds with "token" and "short_code"; send either back as "token" on the post.
   Without that reference the post is still stored, but it cannot be paired with its pre.
   value is the 0-100 stored scale. worst_text is accepted on "post" only.

Rules:
- Fire 'pre' before the experience starts and 'post' after it ends. In the browser integrations the pre and post must run on the same site origin (the same scheme and host, so www and non-www count as different), because WXI keeps the pairing reference in that origin's localStorage.
- Never collect names, emails, or any PII. WXI is anonymous by design.
- Treat every WXI call as fire-and-forget: never block or delay the user's own flow on it.

When done, tell me which integration you used and where you placed each call, quoting the file and line.
53 more lines hidden
Reach

Journeys don’t stop at the screen. Neither does WXI.

The same measurement works across a checkout flow, an onboarding sequence, a restaurant visit, or a hospital appointment. Digital journeys pair the before and after automatically. Physical experiences use paired QR codes, one at the start, one at the end. Same score, same report.

Digital
  • –Embedded widget on your own site, styled to match yours
  • –Post-purchase and post-support email link
  • –In-app modal at any point of experience
Physical
  • –QR code on receipts and delivery slips
  • –In-store kiosk slider, no app required
  • –Printed insert with one question: what was the worst part?
Managed tier

Run it yourself, or have it run for you.

WXI is self-serve from day one. For teams that want measurement designed, run, and interpreted for them, Acoustic offers WXI as a managed service: journey mapping, Point of Experience design, setup, and a standing brief of what to fix next. When you’re ready to take over, the workspace transfers to you, history intact.

Talk to us
Included with managed
Journey mapping and Point of Experience designIncluded
Setup and rolloutIncluded
Standing brief of what to fix nextOngoing
Pricing

Simple pricing. No per-seat games.

Start your 30-day free trial on the moment that worries you most. Open the pricing page.

FAQ

Questions worth asking

Dare to ask.

WXI is for teams that want to know what’s actually broken. If you’d rather have a reassuring number, keep your NPS dashboard.

WXI · Worst Experience Indicator