00:00 — REC

See why users get stuck — without reproducing the bug.

logcohort records real sessions on your site and plays them back like video — with the console errors and failed requests on the same timeline as the clicks. Filter to the sessions where someone actually struggled, deep-link the exact second, send it to an engineer.

<script> — 8 lines, installs without an engineering ticket · inputs masked by default · free plan, no credit card

acme-store.com/checkoutAnna K. · sess_8f2k
The session, the console, the network. One timeline.

00:03 — REPLAY · LIVE

Iframes

Watched in logcohort itself: a page that embeds iframes every way there is — same-origin, srcdoc, sandboxed all record and replay, inputs masked even inside the frame. Third-party frames can't be read by any tool; we show a labeled placeholder, never a broken blank.

not a video — an actual recording, replayed by the same engine the app uses

loading recording…
0:00

00:07 — FRUSTRATION

Find the sessions worth watching

Nobody has time to watch recordings all day. logcohort flags rage clicks, dead clicks, error clicks, and abandoned forms — filter to the sessions where someone actually struggled, on the page you're redesigning this sprint.

00:11 — JOURNEY

Follow one person across every product

The visitor on your marketing site and the user in your app are the same person. logcohort joins their sessions across your subdomains with a first-party cookie — and across separate domains whenever both sides identify the same login. Their journey reads as a story — arrived from where, which pages, where they struggled, where they left — and every step opens the replay at that exact second.

00:15 — HANDOFF

Your engineers won't ask you to reproduce it

Every replay carries the console and the network log on the same timeline. When friction turns out to be a bug, deep-link the exact second and send it — the stack trace and the failed request are already in the link.

00:23 — INSTALL

This is the whole install

Paste it before </head> — or drop it in Google Tag Manager yourself, no deploy needed. Recording starts with the next visit. Masking is on by default for every input field.

<script>
window.logcohort||(function(d){
  var o=window.logcohort=function(){o.api.push(arguments)};o.api=[];
  var c=d.createElement('script');c.async=true;
  c.src='https://app.logcohort.com/recorder.js';
  d.getElementsByTagName('head')[0].appendChild(c);
})(document);
logcohort('init','lc_YOUR_PROJECT_KEY');
</script>

00:28 — PRIVACY

Masked before it leaves their browser

Every input is masked by default — values are replaced with **** inside the visitor's browser, before anything is sent. Network capture is metadata only: method, URL, status, duration. Never request or response bodies, never what someone typed — you can't even search recordings by typed text, only by errors, pages, and clicked elements. Anything else — displayed emails, whole page regions — can be masked with a class or a dashboard selector: Privacy & masking.

00:32 — END OF PREVIEW

Your sessions start here