Developer Dashboard

Sign in with your registered email to access analytics and settings.

Dashboard

Your WebBLE integration at a glance

Total Events
Unique Origins
Install Prompts
Active Extensions
Events Over Time
Conversion Funnel
Loading...
Top Origins
Origin Events First Seen Last Seen
Loading...
API Key
Quick Integration
Allowed Domains
  • Loading...
`; navigator.clipboard.writeText(text).then(() => { const btn = document.querySelector('.snippet-copy'); btn.textContent = 'Copied!'; setTimeout(() => btn.textContent = 'Copy', 1500); }); } // ============================================================ // Utilities // ============================================================ function formatNum(n) { if (n >= 1000000) return (n / 1000000).toFixed(1) + 'M'; if (n >= 1000) return (n / 1000).toFixed(1) + 'K'; return String(n); } function formatDate(iso) { if (!iso) return '—'; const d = new Date(iso); return `${d.getMonth() + 1}/${d.getDate()} ${d.getHours()}:${String(d.getMinutes()).padStart(2, '0')}`; } function escapeHtml(s) { const el = document.createElement('span'); el.textContent = s; return el.innerHTML; } // ============================================================ // Init — auto-login from stored credentials // ============================================================ (function init() { const savedKey = localStorage.getItem('webble_dash_key'); const savedEmail = localStorage.getItem('webble_dash_email'); if (savedKey && savedEmail) { state.apiKey = savedKey; state.email = savedEmail; showDashboard(); } // Handle chart resize window.addEventListener('resize', () => { if (chartInstance) return; loadTimeseries(); }); })();