AI-powered behavioral analysis of Copart's post-auction member experience — built live in a single session using the Fullstory Model Context Protocol.
Each question is answered first — with data — then we walk through exactly how we got there, tool by tool.
Why don't lot winners request their title after winning the bid?
How many days does it take for a new active member to place their first bid?
When a Copart member wins a lot, the next logical step is requesting title delivery. But the data suggests most never do — and we set out to find exactly why.
Of 68,085 users who saw the You Won badge, only 2,556 clicked Mail Title via the badge pathway — a 3.75% conversion rate.
A Fullstory Journey mapped the next action for 316,597 badge events across 69,906 unique users. Most users aren't lost — they're just doing something more pressing.
| Next destination after You Won Badge | Share | What it signals |
|---|---|---|
| Lot Detail Page (another lot) | 12.5% | Still in buying mode — won one, browsing for more |
| Lots Won page | 11.2% | Managing multiple wins — one title gets lost in a list |
| Member Payments hub | 7.5% | Heading toward payment management, not title paperwork |
| Payment History page (Mail Title lives here) | 6.7% | Right page — but most who arrive still miss the button |
| Dashboard (portal home) | 3.7% | Navigating away from post-auction context entirely |
| Pay Now on Lot Detail Page | 3.5% | Haven't paid yet when badge fires — payment is more urgent |
| Session end / no further action | ~55% | Task complete in their mind — badge = "I won" |
Three compounding issues — not a single cause. All three need to be addressed to meaningfully move the conversion rate.
Sessions confirm the issue is not a technical crash — it's a valid business constraint (zip code restriction) presented with zero recovery path. No transporter finder. No help link. Members are stranded, and a JavaScript exception fires on exit.
Uncaught Script error. JavaScript exception fires before the redirect.
Uncaught Script error. fires before redirect. Accessibility audit: zero recovery elements in page content area. ▶ Session replay
Of 4,913 total title requestors, nearly half bypass the badge entirely. This reveals two user segments with fundamentally different mental models.
Of the 68,085 badge-seers, 32,819 users (48%) visit Payment History in a subsequent session. The Mail Title button is there. But 92.4% leave without clicking it.
A PREMIER-tier Dealer (Business member, Philadelphia) visited Payment History three separate sessions before locating and clicking Mail Title. This is not edge-case behavior — it explains the 92.4% miss rate.
Every data point was retrieved by Claude calling Fullstory APIs directly — no dashboards, no exports. Every tool call, every parameter, every result is live and auditable.
Getting to the Mail Title button requires expanding the payment row. For 4,093 mobile members per month — 4.8% of all Payment History visitors — that expand click triggers a JavaScript error. The button is not just hard to find; the path to it is actively broken on mobile.
a.expanded-icon[title="Expand/Collapse"] fires TypeError: Cannot read properties of undefined (reading '0') within 14ms. Row content loads partially — status labels appear — but invoice line items fail to load. Member averaged 2.4 taps on the expand arrow before abandoning. 97.6% of affected users are on mobile; desktop shows only 89 cases.
TypeError: Cannot read properties of undefined (reading '0') fired 14ms later. Row status labels appeared; invoice line items did not load. Member navigated away, tried Unpaid Invoices, then opened a transporter scheduling dialog — never reaching the Mail Title button. ▶ Session replay
For 1,547 desktop members per month, the Mail Title component renders on Payment History but does not respond to clicks. These users found the component. The component failed them. At ~70 dead clicks per day, this is a persistent friction pattern — chronic, not a one-off regression.
copart-mail-title Angular component renders inside the expanded row — visible, appearing interactive. Member clicks the component area. No response. Dead click registered by Fullstory. The component's click binding had not resolved (or was blocked by a state dependency). 97.5% of affected users are on desktop; mobile shows only 40 cases.
When a session cookie expires mid-journey, Payment History fires four simultaneous unauthenticated API calls, all returning 401. The page renders as empty — "No records found" — even for members with active payment history. A forced login redirect begins the loop. Members who submit a Mail Title request in this state receive no confirmation it was processed.
/member/title-delivery/ · /data/esign-eligible/poa-non-notarized · /data/licenseInfo/ · /member/payments/invoice. Console: Error loading title delivery details: status 401. Page displays "No records found." Redirect to login at 59,356ms — 530ms after the member landed on the page.
Error loading title delivery details: {"status":401}. Payment History displayed "No records found" despite active lots on the account. Forced redirect to login at 59,356ms. Member re-authenticated, returned to Payment History, and continued the session. ▶ Session replay
Mobile represents only 10% of badge viewers but 36% of title clickers — a 3.5× overrepresentation. Yet all sampled funnel converters completed on Desktop. The cross-device journey reveals why, and exposes three broken surfaces along the mobile path.
| Surface | Desktop | Mobile | Mobile share | Signal |
|---|---|---|---|---|
| You Won badge views | 61,602 | 6,886 | 10% | Bidding is desktop-primary |
| Mail Title clicks | 1,098 | 609 | 36% 3.5× overrepresented | Mobile users find Payment History directly |
| Payment sessions (est.) | ~30% | ~70% | — | Payments are mobile-primary |
This question had no existing funnel, no pre-built metric. We derived the methodology from the data — watching a real first-bid session before building any aggregate measurement.
Of 298,666 new registrants in 90 days, 71 placed a bid in that window. The majority of eventual bidders do so within the first 7 days.
No existing funnel. No pre-defined metric. We used agentic session viewing to identify the right behavioral proxies first, then built the aggregate on what we found.
The bracket analysis reveals that first bids are not evenly distributed. They cluster heavily in the first 7 days, then fall off sharply.
Before building any funnels, we found and watched a canonical first-bid session. This shaped the entire methodology.
Registration → first bid funnel re-run against each buyer type segment. 90-day window, cross-session. Segments sourced from existing org instrumentation.
co_account_type user property — a user-scoped custom variable confirmed in the org. Segmenting on this property directly would classify all 298,666 registrants by type rather than the 5% captured by the current behavioral segments. Consumers are the only buyer type with enough first-bid volume for directional conclusions. Dealers and Exporters show zero conversions — either they don't use the web-based bidding flow, or their registration entry points differ from page 1310.
Addressing the title request gap requires fixing the broken surfaces in the mobile journey and creating a direct path from winning to requesting — without requiring members to find the button themselves.
TypeError: Cannot read properties of undefined (reading '0') fires within 14ms of expand tap, blocking 4,093 mobile members per month from reaching the Mail Title button. 97.6% mobile. Engineering fix: guard the expand handler against undefined invoice line items before array access. Check Payment History deploy history — error rate +678% vs. prior period suggests a specific commit introduced this.
/member-payments/success monthly. It is currently a dead end on mobile — "Arrange transportation" is the only CTA. Adding "Request your title" at this moment converts the natural end of the mobile payment flow into a title request entry point. No new navigation required; member is already in payment context at peak intent.
ChunkLoadError: Loading chunk 2368 failed. Fix the lazy-load chunk for this route. This is the highest-leverage existing UX touchpoint — it surfaces the right information proactively, it just can't navigate there.
MCP stands for Model Context Protocol — an open standard that lets AI models call external tools in real time. The Fullstory MCP lets Claude build segments, run funnels, compute metrics, map journeys, and watch sessions live during a conversation.
| Tool | What it does | Used here |
|---|---|---|
| discover_org_context | Searches all named pages, elements, events, and variables in your org simultaneously. | Found element IDs for You Won Badge + Mail Title (Q1). Found Page 1310 + Bid Now Click event (Q2). |
| build_segment | Creates a reusable audience from natural-language description. Saved as a persistent ID. | Built badge-seer universe (69,906 users). Built new-member segment. |
| build_funnel + compute_funnel | Creates a sequential conversion funnel and computes it live. Supports cross-session steps and time windows. | Q1 badge→title (3.75%). Q2 registration→bid (4.74d). Two Q2 bracket variants. |
| update_funnel | Modifies a saved funnel — time window, steps, within_seconds — without rebuilding from scratch. | Created the Q2 time-bracket variants from the base 90-day funnel. |
| build_metric + compute_metric | Creates a specific measurement and computes it live. | Total Mail Title clickers via all paths (4,913). Delivery error page visitors (1,087). |
| build_journey + compute_journey | Maps what users do before or after a pivot event. Reveals distribution of alternative paths. | Post-badge journey — top next-step destinations for the 96.3% who didn't request title. |
| get_funnel_sessions + get_session_events | Retrieves actual sessions matching a funnel step and returns the full event transcript. | Q1 dropout sessions (LA Premier member, delivery error). Q2 first-bid sessions (Gilroy iOS). |
This analysis was built by Fullstory SpecOps — but it doesn't have to stay that way. The Copart Agent Harness is a self-contained Claude agent pre-configured for your org. Open it, ask a question, and it runs the same kind of live MCP analysis you just saw.
claudeDescribe what you want to analyze — the agent handles the restThe harness ships with a semantic layer — a compact map of every named element, funnel, segment, and page in your Fullstory org. The agent reads it at session start so it can reference your actual instrumentation by name, not just by ID.
| Segment | What it captures |
|---|---|
| Consumers | General public buyers |
| Dealers | Licensed dealer buyers |
| Dismantlers | Salvage / dismantler buyers |
| Exporters | Licensed exporter buyers |
| Logged In Users | Authenticated sessions only |
| Mobile | Sessions on mobile devices |
| LDP 6.0 Visitors | Lot Details Page v6.0 visitors |
| Lot Page Visitors | Any lot page visitor |
| Everyone | No filter — global baseline |