Conversion tracking for Next.js
Next.js gives you something no other framework in this list does: a server you already own, in the same codebase as the front end. That makes the correct answer unusually clean — money events from route handlers or server actions, funnel events from the client, and a first-party endpoint served from your own domain through a rewrite. The complications are App Router navigation not being a page load, and server components not running client-side effects at all.
Free30 minutesNo obligation
Next.js tracking · what breaks
What goes wrong on Next.js
- 01
App Router navigation isn't a page load
So page-view-bound events fire once and stop.
- 02
Server components run no client effects
Code you expected to execute simply doesn't.
- 03
Events split between server and client
Without a deliberate decision about which does what.
- 04
Hydration timing
Same as any React app.
Next.js tracking · the fix
What changes — Next.js tracking
Route changes emitting events
From a persistent client component.
Money events from route handlers
Server-side, in the same codebase.
A first-party endpoint via rewrite
On your own domain, no separate infrastructure.
Next.js tracking · architecture
What Next.js actually lets you do
A framework with a server in the same repository, which changes what's easy.
- 1
Route handlers and server actions
Server-side event emission, in your own codebase.
- 2
Rewrites
Serve a first-party tagging endpoint from your own domain without separate infrastructure.
- 3
Middleware
Set first-party cookies in an HTTP response, which escapes the seven-day script cap.
- 4
Server components
Which don't run client effects — a common surprise.
- 5
App Router navigation
Client-side, so not a page load.
Next.js tracking · diagnose
Where Next.js tracking breaks, in diagnostic order
Each check rules out a class of cause, so by the last one there is usually a single explanation standing.
- 01
Navigate between routes and watch for events
One event then silence is the App Router signature.
- 02
Check whether tracking code sits in a server component
Effects there never run.
- 03
Confirm where the money event is emitted
Client or route handler.
- 04
Check whether cookies are set in middleware
The difference between 7 days and 400 in Safari.
- 05
Reconcile against backend records
For a closed month.
Next.js tracking · prove
The QA evidence — Next.js tracking
Run on Next.js specifically, on a live conversion rather than in preview mode.
Source of truth
your backend order or CRM records
- Route changes confirmed emitting events across App Router navigation.
- Money events confirmed arriving from a route handler.
- First-party cookies confirmed persisting past seven days in Safari on a real device.
- Endpoint confirmed served from your own domain via rewrite.
- Counts reconciled against backend records for a closed month.
- Reconciled over a fully closed window, matched per record rather than on totals.
- Re-checked 30 days later, and after any platform update.
Next.js tracking · free audit
What we check in the free audit
- Navigate between routes and watch for events
- Check whether tracking code sits in a server component
- Confirm where the money event is emitted
- Check whether cookies are set in middleware
- Reconcile against backend records
Checked against
your backend order or CRM records
Free30 minutesNo obligation
Next.js tracking · when not to buy
When you don't need this on Next.js
Worth reading before you buy anything, from us or anyone.
- If your Next.js app already emits route-change events and sources money events server-side, you've done the work.
- Your engineers can do all of this in their own codebase, and on Next.js it's less work than on any other framework here.
- The rewrite trick is publicly documented and takes an afternoon. You may not need help with it.
- Reconcile against your backend before assuming anything is broken.
Next.js tracking · what we deliver
The event map on Next.js
Route change
A client component bound to the router, persisting across navigation.
Interaction events
Client-side, after hydration.
Money event
A route handler or server action, at the moment the transaction is recorded.
Refund or cancellation
Server-side, as a reversal.
Click identifiers
Captured on first load, stored, available server-side.
Written guarantee
95%+ tracking accuracy
Measured against your backend order or CRM records. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
Repairs and verifies the browser-side setup you already have, on a live conversion. Honest about its ceiling on this platform.
- Root cause fixed, not worked around
- Verified on a live conversion
- Reconciled against your own records
- Written handover
1st-party server-side
Recommended$800One-time fee · most popular
Money events sent from your own records through a first-party container on your subdomain, so the browser can no longer lose them.
- First-party server container on your own subdomain
- Money events from your records, not the browser
- Deduplicated on a shared event ID at every destination
- First-party cookies beyond Safari's 7-day cap
- 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days.
- Everything in 1st-party server-side
- Pinterest, Snapchat, Reddit and LinkedIn CAPI
- CRM and offline conversion loop
- Refunds and cancellations corrected wherever each platform allows it
- Monitoring on every destination
FAQ
Next.js tracking questions, answered
App Router navigation is client-side, so it isn't a page load. Bind events to the router in a client component that persists across navigation.
It may be in a server component, which doesn't run client effects. That's a common and confusing surprise.
A route handler or server action, where the transaction is recorded — not the client.
Yes, through a rewrite on your own domain. It's one of the genuine advantages of this framework.
Free · 30 min
Get Next.js tracking done properly
Free30 minutesNo obligation
