posthog.init('phc_xxx', capture_performance: true, capture_console_logs: true, // Crucial for debugging portability session_recording: maskAllInputs: false, // Toggle based on PII needs recordCrossOriginIframes: false ); Here is a script to pull a session replay and dump it locally for analysis.
Once you record a session in Hotjar, FullStory, or LogRocket, that session stays there. You cannot easily take that JSON payload of clicks, hovers, and scrolls and run your own custom Python script on it. You cannot merge that Replay data with your internal CRM without using brittle third-party APIs. posthog session replay portable
With PostHog, Session Replay is no longer a magical black box. It is a structured, lifecycled, and portable asset. posthog
Enter , the open-source product analytics platform. And at the heart of its flexibility lies a game-changing concept: Portability. You cannot merge that Replay data with your
from posthog import Posthog import json ph = Posthog('YOUR_PROJECT_API_KEY', host='https://app.posthog.com') Fetch a specific session recording ID recording = ph.session_recording.get('SESSION_ID') The 'snapshot_data' is portable JSON snapshots = recording['snapshot_data'] Write to a local file for custom processing with open('user_session.json', 'w') as f: json.dump(snapshots, f) Now you can run any analysis: - Count rage clicks (3+ clicks in 2 seconds) - Detect dead clicks (clicks with no DOM mutation) - Export to Pandas DataFrame Step 4: Destroying for Portability (The Reverse) To prove true portability, you must be able to leave. PostHog allows you to run a delete command via API:
Founders and engineers are tired of paying $500/month to store 30-day-old replays of login pages. They want to own their user interaction data just like they own their production logs.
Select how you want to host your service!