CLI

CLI Quickstart

Set up your affiliate program in 3 commands with npx affitor.

View as Markdown

Get your affiliate program running in under 5 minutes -- program creation and live tracking from your terminal. Stripe is connected in the dashboard, not the CLI.

Info

Prefer a UI? Use the dashboard quickstart instead.

Why CLI?

DashboardCLI
Setup time~15 minutes~5 minutes
StripeConnect Stripe under Program settings › PaymentsSame: affitor setup stripe only points you there
AI agent compatibleNoYes (--json mode)
Config files generatedNoYes (.affitor/)

Step 1 -- Create Your Program

Sign in first, then create your program:

npx affitor login
npx affitor init

login opens your browser to sign in to Affitor. Once it confirms you are signed in, return to your terminal and follow the init prompts.

You'll be asked for:

  • Program name -- your product or company name
  • Domain -- your root domain (e.g., example.com)
  • Commission type -- percentage, fixed, or recurring
  • Commission rate -- default is 40% for recurring
  • Duration -- how long recurring commissions last (default: 12 months)
  • Cookie window -- attribution window in days (default: 90)

After confirming, the CLI creates your program and generates:

.affitor/
  AGENTS.md       -- AI agent instructions (primary, universal standard)
  config.json     -- program ID, settings
  .env            -- API key and secrets (gitignored)
  .env.example    -- env template for teammates and CI
  skills.md       -- tracking code snippets (backward-compat)
Works with any AI coding tool

AGENTS.md follows the open standard supported by Claude Code, Cursor, GitHub Copilot, Windsurf, Aider, and 16+ AI tools. Your AI assistant reads it and integrates Affitor tracking into your codebase automatically.

Using an AI coding agent? Run init first (it needs your login), then give your agent this line in the same project. affitor onboard wires in the tracking it can, prints the rest for your agent, fires a test click, lead and sale, and exits with an error until the integration is verified.

Read .affitor/AGENTS.md and add Affitor tracking to this app as it describes. Then run npx affitor onboard --yes and fix what it reports until it says Integration verified.

For project-scoped MCP configuration in Claude Code, Cursor, or Codex, follow Set up a coding agent. CLI 0.4.5 includes a no-write preview and doctor for static local checks; neither proves a live connection.

Step 2 -- Add Click Tracking

Paste the script tag from the CLI output into your site's <head>:

<script src="https://api.affitor.com/js/affitor-tracker.js"
  data-affitor-program-id="YOUR_PROGRAM_ID">
</script>

Replace YOUR_PROGRAM_ID with the program ID from step 1.

The script auto-detects ?aff=PARTNER_CODE in URLs and stores a first-party cookie for attribution (90-day window by default, set in your program).


Step 3 -- Track Signups

Call signup() when a user registers:

window.affitor.signup("user_123", "user@example.com");

By default the browser call alone is provisional; the server call settles the lead.


Step 4 -- Track Payments

Choose your payment tracking method: Server-side tracking vs Stripe integration.

Option A: Stripe integration (automatic)

Connect Stripe in the Affitor dashboard: open the program menu, choose Program settings, open Payments, and use Connect Stripe. Affitor's own webhook then records sales, renewals and refunds. Add Affitor metadata to your Checkout Session so each sale is attributed; see the Stripe integration guide. The CLI does not connect Stripe (affitor setup stripe only points you to the dashboard).

Option B: Server-side tracking — your backend calls POST /api/v1/track/sale (any payment provider)

curl -X POST https://api.affitor.com/api/v1/track/sale \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"customer_key": "user_123", "amount_cents": 4900, "currency": "USD"}'

Step 5 -- Test Your Integration

Send test events to verify your integration:

npx affitor test click
npx affitor test lead
npx affitor test sale

Then check your program health:

npx affitor status

Non-Interactive Mode

For CI/CD and AI agents, pass --no-interactive --json to skip prompts and get machine-readable output:

npx affitor init \
  --name "My SaaS" \
  --domain example.com \
  --commission-type recurring_percent \
  --commission-rate 30 \
  --duration-months 12 \
  --cookie-duration 90 \
  --no-interactive \
  --json

The commission flags are saved on the program, but partners are paid by the program's Default group commission: set it in the dashboard after init (see CLI commands).

Output is valid JSON, ready for AI agents to parse:

{
  "program_id": 430,
  "api_key": "aff_...",
  "domain": "example.com",
  "status": "created",
  "tracking": {
    "script_tag": "<script src=\"...\"></script>",
    "signup_call": "window.affitor.signup(\"customer_id\", \"email\")",
    "sale_api": "POST https://api.affitor.com/api/v1/track/sale",
    "lead_api": "POST https://api.affitor.com/api/v1/track/lead"
  }
}
Common mistakes
  • Running npx affitor init in a directory that already has .affitor/config.json -- delete it first or use a different directory.
  • Skipping the tracking script -- the CLI creates the program but does not modify your code.
  • Using an expired API key -- re-run npx affitor init to get a new one.