Quick starts by stack
Each page takes a signed-in user on your site to a verified Gauge chat in about 15 minutes, and wires the webhook back to your server. Pick your stack:
| Stack | Page | Server helper |
|---|---|---|
| Next.js (App Router) | nextjs.md | @gauge/support (npm) |
| Express | express.md | @gauge/support (npm) |
| Django | django.md | gauge-support (PyPI) |
| Laravel | laravel.md | gauge/support (Composer) |
| Rails | rails.md | gauge_support (gem) |
Go (net/http) | go.md | github.com/gauge-chat/pulse/packages/sdk-go |
Mobile app instead? Flutter package and React Native, iOS and Android recipes. API only? quickstart-api.md.
Every page follows the same four steps
- Token endpoint.
GET /gauge-tokenon your server, behind your own login, returns{ "token": "…" }: a signed integration token for the signed-in user (HS256, ≤ 10 minutes). The identity secret stays on your server. - Widget. One script tag and
PulseWebchat.init({ …, getToken }). The widget fetches a fresh token on every open. - Webhook.
POST /gauge/webhooksverifiesx-pulse-signatureover the raw body, refuses anything more than 5 minutes old, and dedupes on the eventid. - Check it. Send a chat message as a signed-in user: the conversation shows Verified in the console. Then Developers → Webhooks → your endpoint → Send test event: it lands signed, with a valid example payload for the event you picked, and your handler answers 200.
What you need from the console
| Value | Where | Kept |
|---|---|---|
| App id | Apps → your App → Install | anywhere |
| Identity secret | Apps → your App → Install → Identity secret | server env only |
| Integration key | Apps → your App → Integrations (customer, salon, …) | anywhere |
| Chat connection id | Apps → your App → Install (it is in the widget snippet) | anywhere |
| Webhook signing secret | Developers → Webhooks → Add endpoint (shown once) | server env only |
Start in the sandbox: Developers → Support → pick Sandbox, then Seed test customers for users you can sign in as on each Integration. Nothing there is billed or leaves Gauge.
These snippets are tested
Every block marked snippet=… on these pages is extracted and run in CI against its SDK
(packages/sdk-* test suites): the token it mints must verify, and its webhook handler must accept
the signed test deliveries in packages/sdk-testvectors/webhook-test-event.json (generated from the
Gauge server's own test sender) and refuse a tampered one. A page that drifts from its SDK turns a
suite red.
Quick start: API only (your backend talks to Gauge)
No widget and no WebView: your backend provisions users, grants them Integrations and mints sign-in links. Every call uses a server API key (Authorization: Bearer pulse_k_…) with support scope.
Quick start: Next.js (App Router)
Next.js 14+ with route handlers. About 15 minutes to a verified chat message.