cloudflare
tcp/443 tcp/80 tcp/8443
Open service 172.67.74.163:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=ULUXAuu2htGwxVHLlqryXVbvjbhdLGdpmuht3IJsU462JMNY%2BqNX7gxZzXXVSUWc2RE3nfNqM4pDtFyxK%2Fot3VYZdeUOEfl3kss4GA57"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0144bc02388-YYZ
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:41e:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=aw9SjxqouLhqSgAGOTIFOuoggizjkqe5AVFWtMArUiFUZJFMmDwXAw0TSvPKMdG4zx8Awp3E2pflLXQPxN%2BxQheabqqWWX0%2BLLkIylJ0SVFc5m12Twn85eGb"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b013de253981-YYZ
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.4.30:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=3t2kRQnfU1%2FbCgOoyJWMiMjjHPWH4%2BjdIpzhczgiMAuoZ6ztcV3FRcq60oWCIXtyGJr82QwAC28q7Yazy6P7IVfyxi7KaBUl7G1ColZI"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b013bd7ea06e-YYZ
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::ac43:4aa3:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=9KxNfKXDzUEuGIHCG6DYywDmvRWHxJgrZ4wZO4Fa%2FmIGAwN55fpWOtMG8GBjSZSmVQrp1lPGa0qBse%2BPR8lhapK9TaPtSEABRW%2FvLrPyY2gIibFSX%2B%2FAN1ES"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b013af36dda9-YYZ
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:51e:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=RGYmbEIatxphhKsrkYLIYgBnZanrB0bGCxlXh9LP9guNAKntEFyu0vB825CBH%2BLnv8NZX9fksTs%2B2rNV3o%2Be30LIDlfpxLK2QhLRuIkPYX7AkWOEwraTWMyJ"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b013abf8c73c-AMS
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.5.30:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=tH2dRn8k7vnB9AVE5digYhHIaaP88XYmSFhdMEFBTXpGeq8Pdcj1KRCNhTrVLdvSJaXG2QNgnxjo2FucJf%2Fc95%2FLpViCf5XFnY34fItn"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b014cd34fdf2-SIN
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.4.30:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=YsOOBsXAYbwpVG5uS3D3AAj42nFajA4NOz5kXrtqlxjAexirzbTwpZhpXwLaP1BNfGm%2FL%2BlbLRNn8BSJPH6BpjXwEhMDXg2DI5%2B2MYwn"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0135df6db0a-FRA
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::ac43:4aa3:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=L9OUnQRU6LiNcKwxT4bq8GAltPJ4eSA7j%2BUAw1aSndKtPWE1QcYL36aZ3l7bg5O781vgdPtz2LUTxumWciJIFCIQWW7sYc8hNpNSEsw%2BHCn59jXA2IoFeWAD"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0136da05265-LHR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:51e:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=edlg7AuSuy47vIv77mCd5wL6C9CrEzmMAeohPAPTRO0j%2F675XOUI7UrJc8B50hpUJtUdZ%2BfDK6UHZZr7UWGlGeRc%2B5M197T4lXV5JLNhCJQQhba%2FVN68cQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0134bf4ef59-LHR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:41e:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=wqlSPdhGj2aR5NMiRbASlYkwtu7ZkqPCrTkrRYuzF8ZKhxJquIK4KgOFdB3JmujdCuGhS8w%2BCiumMr1KqGvRfqCxjeX1YBErg1uP9WINWTI%2Fj6%2Fdh%2FMeKbJY"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b013585c654d-LHR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.5.30:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=2yNuVWYfwLQcfuygG7KnhdJnH8jrlWXS0VGoSJ6WLKvrJRDlHPOcfzdmuefELLEFKlmq8y5p%2FKfB%2BLMFj8XfLhu6gwkFihaoOHKsmJ5g"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0145bffc462-BLR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:41e:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=0q%2FheKOQiHaGUgAN850P43jkMxEsHIieiDS8xtEVH%2FNRcmDAtpOKYcQaRWXy4gYasKA59ZChcWTZW%2FYbjxRDNgw1UR6BCKAlUd71opR2zXW6V7o8xeeJpUhz"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0137adec0f6-YYZ
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 172.67.74.163:80 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=s7zcLeOLpzMGUvEgMQhomvszEBX7xeV1wJb7e%2FkKNzlvyDa%2Bm9reVYIOoTsGZ%2B0VoHggRKOw6a5DEHdqEAZWas%2BRZ7gaPEmerwKxZPiu"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0132bf671db-LHR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::ac43:4aa3:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=S2iOfABIuvuXmXWaAFDbGlR6AzUzr4zCHazMlpxGeu04CNiG4kZyPBXbTOvmVcHBfCXVcca3vqAENnU2tr2iCD0g7hZ5JubGij3PYXqJ8FSa5Tjwj0GfjTCY"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b01418c1dfa6-BLR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 2606:4700:20::681a:51e:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=sjF8fN2VamrwY62w9X5%2FpssfE6%2F24t5G%2BFbED9IbqKwOVT%2BXK861%2Fk%2FvYwX7q4eFGway9TL%2FH%2FHqQXkGTPuj1tOaerw9Yvgkdu8gr1LYMavhQm9fVSNi%2BSfc"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0132c95fa24-FRA
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 172.67.74.163:8443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=fary5VP47tpqHNMPM0aUKUHjsPdi8h3BQxhu%2BwBU44ekdGyXBcan%2BjyEUYBEiO7zwvAort0zddtqFqltU8AjpUWsa6YA17mwOB27bgRG"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b0137bebd7e4-FRA
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.5.30:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Bcia%2FtYVjtFO8cR8wsMYrmF0mHuYxRJ2uaXf2AgE3bN6KeQzSe4yFp2EJClanUTWDCGoU702ZO%2BWg72BhwKU9tjS%2BGuZlPTU1MAE2A%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b012d8b8edf4-LHR
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t
Open service 104.26.4.30:443 · hooks.emcho.com
2026-01-21 17:56
HTTP/1.1 200 OK
Date: Wed, 21 Jan 2026 17:56:21 GMT
Content-Type: text/html
Content-Length: 7608
Connection: close
CF-Cache-Status: HIT
Cache-Control: public, max-age=0, must-revalidate
ETag: "d61e2bb0b8f6ba011e73d56f8564fc24"
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=27U%2BQTEVqf73yH02W20JEgA74eGKEqZKVfq4k6K8IC5z5pNmWlR1HjoSubqvmdcDIMqESCFNZ%2B42iTW5SVSk4udIqPMy7jiv%2BFWZ0saV"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9c18b012e9fcd385-FRA
Page title: Hooks - Webhook Inspector
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hooks - Webhook Inspector</title>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<!-- Login Page -->
<div id="login-page" class="login-container">
<div class="login-box">
<h1>Hooks</h1>
<p>Webhook Inspector</p>
<form id="login-form">
<div class="form-group">
<label for="token">JWT Token</label>
<input type="password" id="token" placeholder="Paste your JWT token" required>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</form>
<p id="login-error" style="color: var(--danger); margin-top: 1rem; display: none;"></p>
</div>
</div>
<!-- Dashboard -->
<div id="dashboard" class="dashboard" style="display: none;">
<!-- Sidebar -->
<div class="sidebar">
<div class="sidebar-header">
<h1>Hooks</h1>
<button id="logout-btn" class="btn btn-secondary btn-sm">Logout</button>
</div>
<div class="hook-selector">
<select id="hook-select">
<option value="">Select a hook...</option>
</select>
<div class="hook-actions">
<button id="new-hook-btn" class="btn btn-primary btn-sm">New Hook</button>
<button id="settings-btn" class="btn btn-secondary btn-sm" disabled>Settings</button>
<button id="delete-hook-btn" class="btn btn-danger btn-sm" disabled>Delete</button>
</div>
<div id="hook-url" class="hook-url" style="display: none;">
<span id="hook-url-text"></span>
<button id="copy-url-btn" title="Copy URL">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>
</button>
</div>
</div>
<div class="search-bar">
<input type="text" id="search-input" placeholder="Search requests...">
</div>
<div id="request-list" class="request-list">
<div class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242"></path><path d="M12 12v9"></path><path d="m8 17 4 4 4-4"></path></svg>
<h3>No requests yet</h3>
<p>Send a webhook to your hook URL</p>
</div>
</div>
<div class="sidebar-footer" style="padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--text-muted);">
<span class="status-dot disconnected" id="status-dot"></span>
<span id="status-text">Disconnected</span>
</div>
</div>
<!-- Main Content -->
<div class="main-content">
<div class="content-header">
<h2 id="request-title">Request Details</h2>
<div class="toolbar">
<button id="format-json-btn" class="btn btn-secondary btn-sm" style="display: none;">Format JSON</button>
<button id="copy-body-btn" class="btn btn-secondary btn-sm" style="display: none;">Copy Body</button>
</div>
</div>
<div class="content-body">
<div id="no-selection" class="empty-state">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
<h3>Select a request</h3>
<p>Click on a request in the sidebar t