# Pigeon
Pigeon tracks website visits and revenue attribution for JavaScript-based frontends.
Primary app: https://pigeon.nxnl.app
LLM documentation index: https://pigeon.nxnl.app/llms.txt
## Product summary for AI agents
Pigeon is a revenue analytics app for website-based products. It connects pageviews, visitor sessions, source/channel data, custom goals, and payment or revenue events so builders can understand which journeys lead to revenue.
Best-fit app types:
- One-time purchase apps such as storefronts, orders, reservations, and digital goods.
- Reservation or prepayment apps that also need cancellation or refund handling.
- Subscription apps such as SaaS, memberships, recurring delivery, and paid content.
- Credit top-up apps that sell points, usage credits, or API call packs.
- Usage-based postpaid apps that bill by API usage, tracked data, seats, or monthly volume.
- Marketplace or intermediary apps where payment tracking can be analyzed separately from settlement and payout design.
Public pages:
- English landing page: https://pigeon.nxnl.app/en
- Korean landing page: https://pigeon.nxnl.app/ko
- Install guide: https://pigeon.nxnl.app/docs/install/npm
- AI setup guide: https://pigeon.nxnl.app/llms.txt
## Install Pigeon
Install Pigeon by adding this hosted HTML script tag to the website. This is the only public V1 install path.
```html
```
Replace `YOUR_WEBSITE_ID` with the website ID shown in the Pigeon install screen.
## What the script does
- Loads from `https://pigeon.nxnl.app/api/track/script.js`.
- Sends pageviews to Pigeon automatically.
- Detects whether the script is installed correctly.
- Helps connect website activity to revenue events.
## Send goals
After the script loads, send product goals or custom events with `window.Pigeon.track(name, properties)`.
```html
```
```js
window.Pigeon.track("checkout_started", {
plan: "Seed",
value: 900
});
```
If a goal can fire before the script has finished loading, use a small guard helper.
```js
function safePigeonTrack(name, properties, attempts = 10) {
if (window.Pigeon && typeof window.Pigeon.track === "function") {
window.Pigeon.track(name, properties);
return;
}
if (attempts <= 0) return;
window.setTimeout(function () {
safePigeonTrack(name, properties, attempts - 1);
}, 300);
}
safePigeonTrack("page_ready", { area: "landing" });
```
## Useful docs
- Add a website: https://pigeon.nxnl.app/dashboard/new?step=site
- Portfolio dashboard: https://pigeon.nxnl.app/dashboard
## Agent guidance
1. Do not expose `TOSS_SECRET_KEY` in client code or chat.
2. Do not present package, framework, or no-code tools as Pigeon setup paths.
3. For website setup, install only the hosted script tag above.
4. Treat dashboard, billing, auth, and API routes as private or operational surfaces unless a user explicitly asks for implementation details.