---
title: "Agents"
description: "A private user list for marketing and CRM."
canonical: https://docs.notifiable.sh/agents
source: https://docs.notifiable.sh/agents.md
---

# Agents

Agents is a private API for marketing and CRM. It describes the people who have a Notifiable account: who they are, where they heard about Notifiable, and the workspaces they belong to.

## How it works

The routes live at `/api/agents`, beside `/api/v1`. They are not part of the SDK. A caller sends `Authorization: Bearer` with the `AGENTS_API_TOKEN` value. A missing, wrong, or unset token is rejected. A dashboard session does not grant access. Scalar lists these routes under Agents at `/docs/api` in a local environment. The OpenAPI document is `/docs/api.json`.

`GET /api/agents/users` lists accounts, newest first. Each person includes their first name, last name, email, the role they gave when they registered, where they heard about Notifiable, and a lifecycle stage. That discovery answer is stored as `discovery_source` and is empty until it is collected.

The stage follows workspaces the person owns. A free plan is not a paid subscription. Prospect and Lead are not used, because those people are not on the platform yet.

- **Signup** — registered, with no workspace or no app. A deleted app does not count. A member of someone else's workspace stays here until they own an app.
- **Activated User** — owns at least one app, and has not yet created a notification, recorded an event, or saved a workflow or automation.
- **Engaged User** — owns an app that has a notification, an event, a workflow, or an automation.
- **Customer** — owns a workspace on a paid plan that is still active.
- **Power User** — a customer with at least two completed payments, or whose first completed payment was within two weeks of registration.
- **Churned** — paid before, is not on an active paid plan now, and the last completed payment was at least a month ago. A yearly plan that still covers today stays a customer.
- **Closed** — no sign-in, workspace, app, notification, event, workflow, automation, or payment for at least a month. An active paid plan stays a customer or power user.

`php artisan db:seed --class=LifecycleStageSeeder` replaces seven example accounts, one for each stage: `signup@lifecycle.test`, `activated@lifecycle.test`, `engaged@lifecycle.test`, `customer@lifecycle.test`, `power@lifecycle.test`, `churned@lifecycle.test`, and `closed@lifecycle.test`.

Each workspace membership is included. A workspace shows its name, the person's role there, the current subscription when one exists, and how many apps it has. A deleted app is not counted. A person with no workspace has an empty list. A workspace created in the product starts on the free plan, so a subscription is present for that workspace.
