NewAI Insights for every top issue

See what’s happening OnProd

Web analytics that tells you what broke, and why.

OnProd reads your session replays, finds what went wrong for visitors, and uses AI to explain why, with the replay moments that show it. Session replay, error tracking and analytics in one script.

Start free trial See a live demo
<script src="https://app.onprod.app/sdk.js"></script>
  • We never sell your data
  • Privacy rules by location built in
  • Inputs masked in the browser
app.onprod.app/overview
OverviewLast 28 daysHuman sessionsvs previous 28 days
Human sessions1,284+12%
Engaged sessions512+9%
Active time2m 14s+6%
Key flow conversion4.2%−0.6 pts
AI InsightMedium confidenceFrom 5 replays, 2 for contrast

Why signed-out visitors turn back from Listings

Signed-out visitors who click Browse Marketplace come straight back 24% of the time, against 3% after other clicks on this page. In every replay Listings shows an empty state.

Suggested fix

Show public listings to signed-out visitors, or tell them Listings needs them to sign in.

One script for any site that can add a tag to its head, from WordPress to single-page apps

  • React
  • Next.js
  • Vue
  • Nuxt
  • SvelteKit
  • Astro
  • Angular
  • WordPress
  • Plain HTML
●Why it’s different

Answers first. Charts when you want them.

Most analytics tools hand you charts and leave the digging to you. OnProd opens on a short list of what went wrong, how many visitors it reached and the likely cause, so you can go straight to the fix.

FeatureStandard analyticsTraffic and page-view toolsOnProdReplay, issues and AI Insights
Traffic, top pages, sources and funnelsYesYesPlus retention and an event log
Tells you why visitors are strugglingNoYesAI explains the cause
Session replaysNoYesOpens at the moment it went wrong
Errors visitors saw on screenNoYesRead from the replay
JavaScript errors and failed requestsNoYes
Problems ranked by how many visitors they hitNoYes
Bots and your own team kept out of your numbersKnown bots onlyYesEvery session scored, with reasons
01AI Insights

The cause, explained before you go looking

No searching, filtering or report building. As soon as a new error, failed request or on-screen message reaches a visitor with a replay, the AI reads the evidence and writes what happened, up to 3 likely causes and one fix, then looks again once 3 visitors have met it. It shows up at the top of your Overview and Issues pages.

Powered by Claude Opus 5.5 from Anthropic
AI InsightHigh confidenceFrom 5 replays, 2 for contrast

Photo uploads over 10 MB fail without a message

Visitors who add a photo larger than 10 MB see the upload spinner stop with nothing on screen. The upload request fails with 413, and the listing is saved without its photos.

Likely cause

The upload server rejects files over 10 MB, and the page doesn’t handle the error.

Fix to try

Resize photos in the browser before upload, and show an error when an upload fails.

How you’ll know

The number of sessions with this issue should fall.

What the AI sawHelpfulWrong

Citations are checked

Each cause cites the replay moments it rests on, and every citation is checked before the Insight is shown.

Numbers come from the evidence

The AI can’t add numbers of its own, and confidence is never above medium under 10 sessions.

“Cause not found yet”

When the replays don’t show a cause, the issue stays visible, with a next step to find it.

What the AI saw

Every Insight shows its exact evidence. It never contains session or user IDs, IP addresses or locations.

On for every site, off with one switch

AI Insights start working as soon as your site has issues, and each site can turn them off. They use Claude Opus 5.5, through the Anthropic API or Amazon Bedrock.

02Issues

The problems visitors hit, including the ones your code never reports

When a session ends, its replay is read for error messages and not-found pages. Everything is grouped into issues by message, request or element, and ranked by sessions affected, severity and how recent it is.

/sell/new
Something went wrong. Please try again.
On screen for 4.2 s

On-screen errors and not-found pages

Error banners, alerts, field errors and not-found pages, read from the replay once they’ve been on screen for half a second. Your code doesn’t need to log anything. Messages that read as normal validation, like “Invalid email or password”, go to Low signal.

TypeErrorCannot read properties of undefined (reading 'price')
POST /api/photos4131.2 s
GET /api/meNo response

Errors and failed requests

JavaScript errors and unhandled rejections with their stack, and failed fetch and XMLHttpRequest calls (axios too) with method, status and timing.

Post listing 3 clicks in 0.8 sRage click

Rage and dead clicks

Rage clicks: 3 clicks within a second in the same spot. Dead clicks: a click on a link or button after which nothing on the page changes for 3 seconds.

/Browse Marketplace/listings
Back in 2 s

Turn-backs

A visitor clicks a link, reaches the next page, and comes back or leaves the site within 10 seconds. Counted per link over 28 days of human traffic, split by signed-in and signed-out visitors.

/checkout Pay nowSubmitted 3 times No other page reached

Form struggle

A visitor submits a form 3 or more times without reaching another page, or submits and never leaves. A form becomes an issue once 5 or more sessions, and at least a quarter of the people submitting it, struggle.

Page not found/blog/spring-saleDead inbound link
Sessions that started here12 of 14
Top sourceutm_source=newsletter

Dead inbound links

When people land on a missing page from outside your site, the not-found issue shows where they came from: the top UTM source or referring site.

ResolvedRegressed in 2.14.0
POST /api/photos · 4133 together

Regressions and groups

Mark an issue resolved and it comes back as Regressed, with the release it returned in. Issues of the same kind that mostly hit the same sessions are grouped into one row, so one bug isn’t three.

03Replay

Watch the visit, with the activity beside it

Replays skip the idle stretches and mark errors, failed requests, rage clicks and dead clicks on the timeline. The activity list beside the player shows every page view, click, form submit, error and on-screen message. Open a replay from an issue and it starts at the problem.

  • Input values masked in the browser by default. Add data-at-mask or data-at-block for anything else
  • Route changes in single-page apps are recorded as page views, with no extra code
  • Add release to init() and every issue shows the release it started in
Something went wrong. Please try again.
Inputs masked
1:12 / 2:04 2× Skip idle
04Honest numbers

Only people in your numbers

Every session is scored on signals such as a webdriver flag, a headless screen size, a crawler user agent and whether a pointer ever moved. Likely bots and bots are Filtered out of reports, and so is your own team once you list your hosts or mark staff. Each session shows its tier and the reasons, and you can change it.

Last 28 days3,500 sessions recorded
Engaged512 Quick exit772 Bots, Filtered out2,120 Your team, Filtered out96
Why this session is a botScore 7
Webdriver flagHeadless screen sizeNo pointer movement
05Privacy

Private by design. We never sell your data.

Privacy rules for each region are built in, and you choose how strict they are. Turn on rules by location and visitors in the EU, UK, Switzerland and Quebec are only counted, with no replay, until they consent.

Visitor privacySettings › General
Your site’s consent setup decidesYour own banner and SDK settings decide what is captured.
Count without consent in opt-in regionsVisitors in the EU, EEA, UK, Switzerland, Quebec or an unknown location are only counted until your site grants consent.
Count without consent everywhereEvery visitor is only counted until your site grants consent.
What each visitor getswith Count without consent in opt-in regions
EU, EEA, UK, Gibraltar and SwitzerlandCounted only until consent
Canada (Quebec rules; the province isn’t known, so all of Canada)Counted only until consent
US privacy-law statesFull counted only with Global Privacy Control
Unknown locationCounted only until consent
Everywhere elseFull

Counted only means page views and scroll depth: no replay, clicks, errors or visitor IDs, and nothing stored in the browser. Your consent banner calls grantConsent() to record in full.

We never sell your data

Your data, and your visitors’ data, are used to run your dashboard and are never sold. Read the privacy policy.

Masked in the browser

Input values are masked before anything leaves the page. Add data-at-mask to hide an element’s text or data-at-block to leave it out. Tokens, emails and passwords in URLs are redacted in the browser too.

No IP addresses in your data

Visitor IP addresses are used to look up country and network. They aren’t saved with events or sessions.

AI Insights can be turned off

The AI gets page outlines and short timelines, never session or user IDs, IP addresses or locations. Page text you haven’t masked can be included. [Cited statement: Anthropic’s and AWS Bedrock’s terms on training, with links.]

Delete on request

Export or delete everything tied to a signed-in user, and set how long data is kept for each site.

Rules kept current

Location rules come from c15t’s open-source privacy rule set, checked for updates at least every six months.

06Everything included

One script, one dashboard

Replay, issues and analytics share one set of sessions, so every chart opens the replays behind it.

Capture

  • Page views, clicks, form submits, scroll depth and time on page, captured automatically
  • Custom events and signed-in users
  • Release tagging
  • Retries and an offline queue, so data survives flaky connections

Issues

  • JavaScript errors with stack
  • Failed fetch and XHR calls
  • Rage and dead clicks
  • On-screen errors and not-found pages
  • Form struggle and dead inbound links
  • Related issues grouped into one row
  • Resolve, ignore or mute until a date
  • Low signal for known noise

Replay

  • Full page replay with idle time skipped
  • Timeline markers for errors and frustrated clicks
  • Activity list and journey beside the player
  • Opens at the moment of the issue

AI Insights

  • Powered by Claude Opus 5.5 from Anthropic
  • On for each site, off with one switch, through the Anthropic API or Amazon Bedrock
  • Top 10 issues kept explained
  • Causes cite replay moments
  • Also explains turn-backs and drops in your Key flow
  • Helpful or Wrong on every Insight

Analytics

  • Overview with Engaged visitors, Quick exit rate, Active time and Key flow conversion against the previous period
  • Unusual traffic days marked, with how those visitors fared
  • Pages with scroll depth, journeys, top clicked elements and turn-backs
  • URLs with IDs grouped automatically, like /orders/:id
  • Trends, Funnels, Retention and an Event log
  • Locations, sources, devices and browsers

Data quality and privacy

  • We never sell your data
  • Bot scoring with reasons
  • Internal traffic by host or staff user
  • Masking and URL redaction
  • Privacy rules by location, with three settings
  • Retention per site
  • Export or delete one user’s data

Admin

  • Multiple sites, each with its own keys
  • Ingest-only and read API keys
  • A read API for your own reports [link to API docs]

Not yet

No heatmaps, source-map stack traces, email or Slack alerts, native mobile SDK, or SAML single sign-on yet. [Dates or roadmap link]

07Set up

From script tag to first issue

No build step and no tag manager. Errors show up as issues while you’re still on the page.

  1. 01

    Add the script

    Two tags in your site’s head with your project ID and ingest key, or install the npm package.

  2. 02

    Issues appear

    JavaScript errors and failed requests become issues as they arrive. On-screen messages are found once a session has been idle for 30 minutes. Browser-extension errors, cancelled requests and expected validation messages go to Low signal.

  3. 03

    Fix it, and watch it

    AI Insights explain your top issues as they appear. Mark an issue resolved; if it happens again it comes back as Regressed, with the release it returned in.

index.html
1<script src="https://app.onprod.app/sdk.js"></script> 2<script> 3 OnProd.init({ 4 projectId: "[your project]", 5 endpoint: "https://app.onprod.app", 6 apiKey: "[your ingest key]", 7 release: "[your build id]", // optional 8 }); 9</script>
New issueTypeError: Cannot read properties of undefined (reading 'price') just now
08Pricing

Priced for small teams

Every plan has replay, issues, on-screen errors, analytics, privacy rules and AI Insights. Prices in Australian dollars, with no GST charged. A session is one visit; bot sessions don’t count. Try Growth free for 14 days, no card needed.

Starter

For one site getting started

A$69a month

Start free trial
  • 10,000 sessions a month
  • 100 AI Insights a month
  • 1 site, 3 seats
Recommended

Growth

For busy sites and product teams

A$249a month

Start free trial
  • 50,000 sessions a month
  • 400 AI Insights a month
  • 5 sites, 10 seats, and everything in Starter

Scale

For high-traffic sites

A$690a month

Talk to us
  • 200,000 sessions a month
  • 1,000 AI Insights a month
  • 20 sites, 25 seats
  • Choose the Anthropic API or Amazon Bedrock for AI Insights
  • Planned: single sign-on

Agency · A$990 a month

300,000 sessions a month shared across up to 25 client sites, each with its own keys and settings. 1,500 AI Insights a month and 25 seats. Per-client logins are planned.

Talk to us

Yearly billing, plan limits and billing questions: compare plans.

09FAQ

Questions and answers

Something missing? Ask us.

Claude Opus 5.5 from Anthropic. You choose whether it runs through the Anthropic API or Amazon Bedrock [confirm the Bedrock model]. The AI only sees the evidence for the issue it is explaining.

Find out what your visitors ran into this week

Add the script today. Errors and failed requests show up as issues within seconds, on-screen messages 30 minutes after a session ends, and AI Insights from an issue’s first visitor with a replay.

Start free trialBook a demo