# Hooky
> Hooky adds a chat bubble to websites built with AI tools (Lovable, Bolt, v0, Cursor, Claude, ChatGPT, Codex…). Visitors write in the bubble; the site owner answers from a web dashboard or phone, across all their sites, and counts events (signups, purchases, clicks) with one line of JavaScript or a server API call. Install = one `
```
- Optional attribute `data-lang` = `fr`, `en`, `es`, `pt`, `it` or `de` (default: the page's ``, then the browser, then English).
- Open/close from a button once loaded: `window.Hooky && Hooky.open && Hooky.open()`, `Hooky.close()`.
- Count an event right after the action succeeds: `Hooky.track("signup")`; with an amount that is summed: `Hooky.track("purchase", { value: 49 })`; extra keys become properties (flat, max 20, strings ≤ 500 chars, numbers, booleans). Never send personal data (email, name, phone) in properties.
- If `Hooky.track` may run before widget.js has loaded, first add in `
`:
```html
```
- Server-side events: `POST https://api.heyhooky.com/v1/events` with header `Authorization: Bearer ` and JSON `{"name": "purchase", "value": 49, "properties": {...}, "occurred_at": "ISO 8601, up to 7 days back"}` → `201`. Keep the secret key server-side (environment variable `HOOKY_SECRET_KEY`), never in front-end code.
- Channel (receive-only notifications, like a Slack channel): every site has a channel URL `https://api.heyhooky.com/hooks/hkc_…` (Dashboard → Sites → the site → "Site channel", or `channel_url` in `GET /v1/sites`). POST Slack-webhook JSON to it from a server, never from the page: `{"text": "*New order*: €49 :tada:", "username": "Shop", "attachments": [{"color": "good", "title": "Order #123", "fields": [{"title": "Amount", "value": "€49"}]}]}`. `text` is Slack mrkdwn (`*bold*`, `_italic_`, `` `code` ``, ``, `> quote`, `:emoji:`). The owner reads it in Dashboard → Channels and gets a push notification. Keep the URL secret; no personal data in messages.
- Account API with an API key (`Authorization: Bearer hka_…`): `GET /v1/account`, `GET /v1/sites`, `GET /v1/sites/:id`, `POST /v1/sites`, `PATCH /v1/sites/:id`, `GET /v1/stats?site_id=&days=7|30|90&time_zone=`, `POST /v1/events` with `site_id`. An API key opens the whole account: keep it server-side (`HOOKY_API_KEY`), never in front-end code or a commit.
- If the site lists allowed addresses in the dashboard, the bubble and `Hooky.track` only work on those hosts (`www.` ignored). Add the AI tool's preview address too (e.g. `my-site.lovable.app`), and `localhost` to test locally. With a site key that no longer exists or an address that is not allowed, the bubble simply stays hidden.
## Docs
- [Full documentation for LLMs](https://heyhooky.com/llms-full.txt): everything in one Markdown file (account creation by an AI, install, options, events, server API, API keys, errors, limits, team, privacy).
- [Human documentation (English)](https://heyhooky.com/en/docs/): same content as a web page.
- [Documentation (français)](https://heyhooky.com/docs/): la même doc, en français.
## Product
- [Home page](https://heyhooky.com/en/): what Hooky is, pricing (free for 1 site; Creator 10 sites €9/month or €90/year; Studio 50 sites and 5 people €29/month or €290/year; subscribe on the web with Stripe or in the app through the App Store or Google Play, same prices).
- [Dashboard](https://heyhooky.com/espace/connexion.html): sign in with Google or an email link; inbox, stats, sites, team, billing.
- Apps: iPhone, iPad, Mac and Android (inbox and push notifications), coming soon to the App Store and Google Play; until then, the dashboard works in a phone browser.
- [Help](https://heyhooky.com/en/help/), [Privacy policy](https://heyhooky.com/en/privacy/), [Terms](https://heyhooky.com/en/terms/); contact: support@heyhooky.com.
## Optional
- [Widget source](https://heyhooky.com/widget.js): the bubble itself, plain JavaScript, Shadow DOM.