> ## Documentation Index
> Fetch the complete documentation index at: https://heedeo-e1965c.manicule.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For every page in one file, fetch https://heedeo-e1965c.manicule.dev/llms-full.txt (large).
> To search and read these docs as tools, connect the MCP server at https://heedeo-e1965c.manicule.dev/api/mcp.
> Every agent surface: https://heedeo-e1965c.manicule.dev/.well-known/llms-manifest.json

# Integrating Heedeo (/)

<!-- agent-signals: reading_time_min: 2 · est_tokens: 1110 · updated: 2026-11-11 -->
Related: [Connect your app](/connect-your-app.md), [1. Quick start](/quick-start.md), [2. Serve Heedeo from your own domain (do this before you go live)](/serve-heedeo-from-your-own-domain.md), [3. One server call: evaluate or log](/one-server-call.md), [4. The fields to act on](/the-fields-to-act-on.md), [5. Decide: score, rules or watch](/decide.md)

Heedeo tells you who is behind an action:

* **Who the person is** across their browsers: the visitor, one id however many browsers they use.
* **What that person already did with you**, kept 13 months, so a second trial is a repeat with no table on your side.
* **How suspicious this action is**: how many emails and accounts the person has shown you, and what the email and network look like.

It returns signals; your code decides. You need three things:

1. The JavaScript agent on your pages: one script tag from `https://heedeo.dev`, or `createHeedeo({ publishableKey })` from the package. No route and no DNS.
2. One `identify()` call in the browser at the action.
3. One server call at the action: `POST /v1/evaluations`, by `heedeo.evaluate()` where you want the answer or `heedeo.logEvent()` where you only record it.

Then serve Heedeo from your own domain before you go live, from the Domains page: the Cloudflare proxy integration, your own server, or a custom subdomain (section 2).

Heedeo's address is `https://app.heedeo.com` (called `HEEDEO` below). [Sign up](https://app.heedeo.com/review/sign-up) for a workspace. The workspace is named from your email's domain; rename it under Settings. You get two keys:

* A public API key `pk_...` (the publishable key): it goes in the script tag.
* A secret API key `sk_...`: server only, never in the browser.

The examples read them from `NEXT_PUBLIC_HEEDEO_KEY` and `HEEDEO_SECRET_KEY` (in Next, `.env.local`).

This guide is long, and you will not need all of it. Each section is also its own page: section 5 is `https://app.heedeo.com/docs/integration/5.md`, and Connect your app is `connect.md`. [/llms.txt](https://app.heedeo.com/llms.txt) lists every page with its size and what it holds. Find your place:

| You want to                                                 | Read                                                                                                                                                        |
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| add Heedeo to a Node.js or Next.js app with the package     | The [package quickstart](https://app.heedeo.com/docs/sdk): five steps, then come back here for the detail.                                                  |
| add it with a script tag and one HTTP call, in any language | [Quick start](/quick-start), then [One server call](/one-server-call).                                                                                      |
| stop ad blockers and Safari from hiding visitors            | [Serve Heedeo from your own domain](/serve-heedeo-from-your-own-domain).                                                                                    |
| cover a single-page app, a hosted sign-in or social sign-in | [Call Heedeo on every signup path](/one-server-call#call-heedeo-on-every-signup-path) and the section after it.                                             |
| know what each field and reason means                       | [The fields to act on](/the-fields-to-act-on) and [Reasons and default weights](/the-fields-to-act-on#reasons-and-default-weights).                         |
| choose between refusing, verifying and holding for review   | [Decide](/decide) and [What a caught signup meets](/decide#what-a-caught-signup-meets).                                                                     |
| check your rule before real people meet it                  | [Test your rule](/decide#test-your-rule).                                                                                                                   |
| go live                                                     | The quickstart's [Before you go live](https://app.heedeo.com/docs/sdk#before-you-go-live), and [For your privacy policy](/privacy#for-your-privacy-policy). |
| hear when a flag or a person changes                        | [Webhooks](/webhooks).                                                                                                                                      |
| delete a person's data                                      | [Deleting a person](/privacy#deleting-a-person).                                                                                                            |
