Loading tutorials…
Loading tutorials…
Crazy Egg Recordings are powerful — and most-wasted. The difference is filter discipline. This is the setup that turns 1,000 recordings/month into 5 useful insights, not 1,000 hours of 'someday I'll watch these.'
Who this is forTeams with Crazy Egg installed who have Recordings stacking up but no recurring review process. Or teams about to enable Recordings and want to avoid the standard pattern of capturing everything and watching nothing.
What you'll need
Step 1
Recordings → Settings. Switch from 'Record all sessions' to URL-filtered capture. The default eats your monthly cap in days on busier sites.
Open Recordings in the left sidebar. If this is your first time, click Enable Recordings — it requires a one-time activation on Standard tier and above.
Open Recordings → Settings (gear icon).
Switch capture from 'All pages' to 'Specific pages.' Add URL patterns to include: top 3 landing pages, top 3 product pages, the checkout flow, and any page where you have an unresolved conversion question.
Add exclusions: /account/*, /admin/*, /dashboard/*, /login, /signup-success, /password-reset, /unsubscribe. None of these answer acquisition questions.
For ecommerce: include /cart, /checkout, /checkout/* — but lock down PII suppression in the next step before letting checkout sessions record.
Save. Visit an excluded URL in incognito to verify it doesn't appear in Recordings — wait 5-10 minutes, then check the Recordings list.
Step 2
Account & Settings → Privacy → enable input masking. Add data attributes or CSS selectors to mask PII-rendering DOM elements outside of form inputs.
Open Account & Settings → Privacy. Toggle 'Mask all input fields' to ON. This replaces typed input with asterisks in all Recordings — required for GDPR compliance on any site with EU traffic and for PCI DSS on any site touching payment data.
For DOM elements rendering PII outside of input fields (e.g., a logged-in user's name in a header, an order summary showing shipping address), add the data-ce-mask attribute to those elements in your HTML.
Example: <div class="user-name" data-ce-mask>Jane Doe</div> — Jane Doe will render as asterisks in the recording, but the page still works for the real user.
For entire blocks (e.g., the whole order summary section), apply data-ce-mask on the parent — it cascades to children.
If your tier supports CSS-selector masking: add selectors like .credit-card-input, .order-summary, [data-pii] to the masking list. Useful when you can't easily add data attributes to existing markup.
Review the first 10 Recordings after going live. Click any recording, scrub to a form-fill moment, confirm asterisks appear where you expect. If real PII shows, fix it before letting more sessions record.
Step 3
Visit your site in incognito, click around, complete a flow. Within 30 minutes a session should appear in Recordings. If not, the install or capture rules are wrong.
Open a clean incognito browser. Visit one of the URLs in your capture rules. Navigate 3-5 pages. Spend at least 30 seconds on each.
In Crazy Egg, go to Recordings → All. Sort by Most Recent. Within 5-30 minutes, your session should appear.
Click the session. Verify: (a) the recording plays smoothly with mouse/click/scroll events, (b) input fields are masked with asterisks if you typed anywhere, (c) the URL path matches what you visited.
If no session appears after 1 hour: re-check the install (CE2 should return an object in DevTools Console), re-check the URL is in your capture rules, re-check that your IP isn't in the block list, re-check that the page-view cap for the month hasn't been hit.
Common gotcha: Crazy Egg respects Do Not Track headers by default. If your test browser has DNT enabled, no recording will be created. Disable DNT for verification testing.
Step 4
Crazy Egg supports filtering Recordings by 15+ dimensions. Build 3-5 standing filters that answer your top CRO questions.
Open Recordings → click Filter at the top.
Filter 1 — Checkout sessions: Page contains /checkout. This is your highest-stakes funnel; watch these weekly regardless of other priorities.
Filter 2 — Bouncers on top landing page: Page = /landing/main + Session duration < 30s. Save as 'Landing page bouncers.' Useful for diagnosing why paid traffic doesn't convert.
Filter 3 — Mobile checkout drop-off: Device = Mobile + Page contains /checkout + did_not_complete. Save as 'Mobile checkout drop-offs.' Reveals mobile-specific friction.
Filter 4 — Paid traffic on key page: Referrer = google + medium = cpc + Page = /pricing. Save as 'Google Ads → pricing.' Watch what paid users actually do vs organic.
Filter 5 — High-intent abandoners: Pages visited > 3 + Session duration > 2 min + did_not_convert. Save as 'High-intent abandoners.' These users had intent and dropped off — usually the most actionable cohort.
Saved filters appear at the top of Recordings. Pull them up in 1 click. This is the entire workflow.
Step 5
Calendar a recurring 30-min slot. Run through your 5 saved filters. Watch 1 recording per filter. Write down 1 finding per filter. Ship 1 fix per week.
Recordings are useless without a recurring practice. Put a 30-min weekly slot on your calendar — Friday afternoon is the standard time most CRO operators use.
Open Recordings → click your first saved filter ('Checkout sessions'). Pick the most recent. Watch it at 2x speed. Write down what you saw.
Repeat for the other 4 filters. 5 minutes per filter = 25 minutes. 5 minutes to summarize.
Outcome of each 30-min session: 1-5 findings written down, 1 shipped fix queued for the next dev cycle.
After 4 weeks, you'll have shipped 4 fixes and have a backlog of 10-15 hypotheses to test. This compounds — most teams' conversion rate moves 5-15% within 90 days of running this cadence.
Pro tip: record yourself watching the session (Loom, Tella) so the rest of the team can scrub your reasoning. Better than slide-deck handoffs.
Step 6
When you find a useful recording, tag it so future filters surface it. Share with team via the share-link feature.
Inside a recording, click the tag icon (top right of the player). Add tags like 'checkout-bug', 'cta-confusion', 'mobile-tap-issue'. Use a consistent taxonomy or tags become noise.
Add a note at the specific timestamp where the insight happens ("at 1:23, user tries to click the disabled coupon field 3 times — rage click cluster").
Click Share to generate a shareable link. Crazy Egg lets you grant view-only access to the recording without giving the recipient account access — useful for sending bug reports to engineering.
Engineering tip: paste the recording link in your Jira / Linear / GitHub bug ticket. "User can't use the coupon code" with no recording is a ticket that bounces; with a Crazy Egg link, it gets prioritized.
Build a tag library that maps to your CRO backlog: each tag = one type of friction to track over time. "rage-click-checkout" tagged 5x in a week = top-priority fix.
Step 7
Recordings retention varies by plan (typically 90 days on Basic, 365 days on Pro). Export what matters before then. Monitor monthly Recordings usage.
Basic: Recordings retained ~90 days. Standard/Plus: ~6 months. Pro: ~12 months. Confirm yours under Account & Settings → Plan.
For any recording you reference in a CRO writeup, export it (Plus and above): open the recording → top-right menu → Export. Saves as a video file you can attach to docs.
Monitor monthly Recordings count: Account & Settings → Usage. If you're hitting 80% of cap by mid-month, tighten capture rules — don't just upgrade.
Quarterly: archive saved filters you're no longer using. Stale filters tempt you to read data from layouts that have since changed.
When you redesign a page, freeze existing capture rules for that URL, ship the change, and re-evaluate filters after 2 weeks of new recordings. Old recordings stay for reference but won't pollute new analysis.
Common mistakes
Recording everything with no exclusion list
What goes wrong: Quota burns fast on Basic; on Standard, the monthly Recordings cap hits in week one. Worse, 80% of captured recordings are /dashboard and /account where no acquisition decision happens. The recordings that matter (landing pages, checkout) get under-sampled. On a $29-99/mo subscription, that's 80% wasted spend ($23-79/mo) plus the bigger cost: zero leverage on the pages where leverage matters.
How to avoid: Set capture rules to specific high-value URLs only. Exclude logged-in app pages. Reserve quota for acquisition + conversion paths.
Going live without PII suppression
What goes wrong: Recordings capture credit card fields, addresses, emails, phone numbers. Under GDPR Article 4, this is processing personal data without consent or basis — fines start at €10K and scale to €20M / 4% of global revenue. PCI DSS violation for any merchant accepting credit cards: fines $5K-$100K per month plus loss of processing privileges. Even US-only operators get burned when EU traffic shows up via paid social.
How to avoid: Before going live, enable input masking. Add data-ce-mask to PII-rendering elements. Audit the first 10 recordings to confirm masking.
Watching recordings with no filter (random scrolling)
What goes wrong: Spending an hour scrubbing through random recordings finds 0-1 insights and feels like work but produces nothing. Most teams do this once, conclude 'recordings don't work,' and stop using the tool. The $29-249/mo subscription continues.
How to avoid: Build 5 saved filters answering specific CRO questions. Watch 1 recording per filter per week. 30 minutes total. Ship 1 fix.
No tagging or note-taking on watched recordings
What goes wrong: You find an insight, fix the bug, then 6 weeks later see the same pattern again — and can't find the original recording or remember which fix you tried. Same lessons re-learned every quarter. Typical cost: 4-6 hours/quarter of re-watching old recordings + 2-3 duplicated fix attempts = $2,000-5,000/year in repeated CRO work.
How to avoid: Tag every useful recording with a consistent taxonomy. Add timestamped notes inside the recording. Reference recording links in your bug tickets and CRO writeups.
Treating recordings as decisions, not evidence
What goes wrong: Watching 1 recording of one user clicking the wrong button and shipping a redesign based on it. The change moves conversion 0% because n=1 was an outlier. Wasted ~$3,000-10,000 in design + dev cycles.
How to avoid: For any finding worth shipping, validate with 5-10 recordings showing the same pattern. Recordings are evidence for hypotheses, not the hypothesis itself.
Letting recordings auto-delete before exporting
What goes wrong: A recording that proved a critical insight ('users abandon when shipping cost reveals at step 3') expires after 90-365 days. The original evidence is gone. Future debates can't reference it. Teams typically re-investigate the same friction pattern 6 months later, costing $1,500-4,000 in duplicated CRO discovery work.
How to avoid: Export any recording you reference in a CRO writeup, PRD, or post-mortem. Save the MP4 in the project folder. Treat important recordings like screenshots — they're documentation.
Recap
Done — what's next
How to set up a Crazy Egg Snapshot the right way
Read the next tutorial
Hand it off
Recordings are the single most underused feature in most Crazy Egg accounts. A specialist running a weekly filter-driven review typically pulls 3-5 actionable insights per week and ships 1-2. On a $50K/mo ad-spend account, that's usually $5K-15K/mo in recovered conversion lift. The specialist runs $400-1,000/mo at $14-16/hr — most accounts see net positive in the first 60 days.
See specialist rates
Retention depends on plan: ~90 days on Basic, ~6 months on Standard/Plus, ~12 months on Pro. Check Account & Settings → Plan for exact retention. Export any recording you want to reference long-term.
Yes. Crazy Egg respects the Do Not Track browser header by default. You can also expose a JavaScript-triggered opt-out via the CE2.tracker("optOut") call — useful for cookie banners that disable analytics on user request. Required under GDPR if you're recording EU users.
Yes, by default. Which is why PII suppression is mandatory before going live. With input masking enabled, all input field text (including credit cards, emails, addresses) is replaced with asterisks. Never enable Recordings without this configured.
Hotjar has stronger filter UX and tagging, plus integrated surveys. Microsoft Clarity is free with unlimited recordings. Crazy Egg sits between them — Recordings are bundled with Snapshots, A/B Tests, and CTA cards in one tool, which simplifies the workflow but limits per-feature depth. See the decision guide.
Crazy Egg uses sampling-based capture by default, not event-triggered. If you need event-based recording (e.g., 'only record sessions where the rage_click event fires'), filter the saved Recordings list by that event after capture rather than gating capture itself. For finer event-triggered recording, Hotjar's Plus+ tiers offer this more directly.
Negligibly. The recording layer adds ~5-10KB on top of the base Crazy Egg snippet and serializes DOM events asynchronously. LCP impact is sub-50ms on a modern mobile connection.
Crazy Egg
Crazy Egg's Snapshot is a five-report bundle (Heatmap, Scrollmap, Confetti, Overlay, List). Most operators read one and skip the other four — and the four they skipped were the ones that answered the question. This is the setup that reads the whole bundle.
Crazy Egg
Crazy Egg's A/B Test editor is the easiest in the market — and that's the problem. Easy makes operators ship tests on 100-visitor samples and call a 12% lift 'a win.' This is the setup that prevents that and ships only tests that actually moved the needle.
Crazy Egg
GA4 says 30,000 page views. Crazy Egg says 24,000. Your A/B test counts don't match your Shopify order count. Numbers diverging across tools is normal — numbers diverging in the WRONG direction is a bug. This is how to tell the difference and fix the real bugs.