Push logs from anywhere with a single HTTP request. Free tier stores 1 hour of logs per IP. No signup required.
Just POST to our endpoint. No SDK installation, no signup flow, no YAML configs. Ship logs in 10 seconds.
curl, fetch, axios, Python, Go, Node.js โ if it speaks HTTP, it works. Even IoT and edge devices.
Free tier stores 1 hour of logs per source IP. Perfect for quick debugging sessions without accounts.
Watch logs stream live. Filter by level, search content, export JSON. No refresh needed.
Like the bug, your logs survive anything. Distributed storage with zero data loss guarantee.
Your logs are persisted before your HTTP request even returns. Async writes, instant confirmation.
Three steps. No signup. Start logging in seconds.
POST JSON to our endpoint with your company_id, team_id, module, level, and message. That's it โ no API keys needed for the free tier.
Open the dashboard URL returned in the response. Filter by company_id, team_id, or use your API key to see all your logs in real time.
Free tier auto-deletes logs after 1 hour โ perfect for debugging. Pro tier keeps logs for 30 days with full search and export.
Send normal logs or track cohorts & A/B experiments. All optional.
# Send a basic log entry curl -X POST https://slab.twc.sh/logroach/log/ \ -H "Content-Type: application/json" \ -d '{ "company_id": "acme-inc", "team_id": "backend", "module_id": "auth-service", "level": "info", "message": "User login succeeded" }' # JavaScript await fetch("https://slab.twc.sh/logroach/log/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ company_id: "acme-inc", team_id: "backend", module_id: "auth", level: "info", message: "User login succeeded" }) });
# Track user cohorts for behavioral analysis curl -X POST https://slab.twc.sh/logroach/log/ \ -H "Content-Type: application/json" \ -d '{ "company_id": "acme-inc", "team_id": "product", "module_id": "analytics", "level": "info", "message": "User completed signup", "event": { "type": "signup" }, "actor": { "id": "user_12345", "type": "user", "cohort": "feb-2026" } }' # JavaScript - Track cohort events async function trackCohortEvent(eventType, userId, cohort, message) { await fetch("https://slab.twc.sh/logroach/log/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ company_id: "acme-inc", team_id: "product", module_id: "analytics", level: "info", message, event: { type: eventType }, actor: { id: userId, type: "user", cohort } }) }); } // Usage trackCohortEvent("signup", "user_123", "feb-2026", "New signup");
# Track A/B experiment variants curl -X POST https://slab.twc.sh/logroach/log/ \ -H "Content-Type: application/json" \ -d '{ "company_id": "acme-inc", "team_id": "marketing", "module_id": "landing-page", "level": "info", "message": "CTA button clicked", "event": { "type": "cta_click" }, "experiment": { "name": "landing-cta-test", "variant": "B" } }' # JavaScript - Track A/B tests async function trackExperiment(experimentName, variant, eventType, message) { await fetch("https://slab.twc.sh/logroach/log/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ company_id: "acme-inc", team_id: "marketing", module_id: "experiments", level: "info", message, event: { type: eventType }, experiment: { name: experimentName, variant } }) }); } // Track conversions by variant trackExperiment("pricing-test", "A", "purchase", "User purchased");
# Track cohorts AND A/B experiments together curl -X POST https://slab.twc.sh/logroach/log/ \ -H "Content-Type: application/json" \ -d '{ "company_id": "acme-inc", "team_id": "product", "module_id": "onboarding", "level": "info", "message": "Onboarding completed", "event": { "type": "onboarding_complete" }, "actor": { "id": "user_67890", "type": "user", "cohort": "jan-2026" }, "experiment": { "name": "onboarding-flow", "variant": "B" } }' # JavaScript - Full tracking with cohort + experiment async function trackEvent({ eventType, userId, cohort, experimentName, variant, message }) { await fetch("https://slab.twc.sh/logroach/log/", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ company_id: "acme-inc", team_id: "product", module_id: "app", level: "info", message, event: { type: eventType }, actor: { id: userId, type: "user", cohort }, experiment: { name: experimentName, variant } }) }); } // Track signup in cohort with A/B test variant trackEvent({ eventType: "signup", userId: "user_123", cohort: "feb-2026", experimentName: "signup-flow-test", variant: "B", message: "User completed signup via variant B" }); // All fields are OPTIONAL - add what you need // Basic log: just message // Cohort: add actor.cohort // A/B test: add experiment.name + variant // Combined: add both
# Paste before </body> on your website. # Works on any site โ no server setup needed. โโ Step 1: Add the script (captures everything) โ <script>var LR_KEY = 'YOUR_API_KEY';</script> <script src="https://slab.twc.sh/logroach/js/lr.js" defer></script> # That's it! Page views, clicks & form submits # are tracked automatically. Anonymous users get # a persistent ID via localStorage. โโ Step 2: Identify your users (optional) โโโโโโโโ <script> var LR_KEY = 'YOUR_API_KEY'; var LR_USER = '[email protected]'; // logged-in user </script> <script src="https://slab.twc.sh/logroach/js/lr.js" defer></script> # Or identify later via JS (e.g. after login): LogRoach.identify('[email protected]'); โโ Step 3: Track custom events โโโโโโโโโโโโโโโโโโโโ # HTML โ add data-lr-click to any element: <button data-lr-click="add_to_cart">Add to Cart</button> <a href="/pricing" data-lr-click="view_pricing">Pricing</a> <div data-lr-click="banner_tap">Promo Banner</div> # JS โ send events from your code: LogRoach.track('purchase', 'Order #1234'); โโ Disable specific tracking (optional) โโโโโโโโโโ var LR_PAGE_VIEW = 0; // skip page views var LR_CLICK = 0; // skip auto click tracking var LR_FORM_SUBMIT = 0; // skip form submit tracking # All ON by default. data-lr-click always works.
Start free. Upgrade when you need more.
Questions about Pro or Enterprise? We're here to help.