Windback.

Multi-Project Setup

Manage multiple products from a single Windback account.

Multi-Project Setup

Windback supports managing churn recovery for multiple products from a single account. Each project gets its own API keys, payment provider connections, churn events, and allowed origins.

How It Works

Projects are the top-level organizational unit in Windback. When you create an account and complete onboarding, a Default project is created automatically. You can then create additional projects for each of your SaaS products.

Each project is completely isolated:

  • Separate API keys (public + secret)
  • Independent Stripe / Razorpay connections
  • Scoped churn events and recovery stats
  • Per-project allowed origins for the widget
  • Unique slug used in URLs and API paths

Creating a Project

Via Dashboard

  1. Go to Projects in the sidebar
  2. Click Create Project
  3. Fill in the project details:
    • Name — Your product name (e.g. "Acme Pro")
    • Product Type — The type of SaaS product
    • Support Email — Email shown in recovery emails
  4. A URL-friendly slug is generated automatically from the name

Via API

curl -X POST https://api.windback.dev/api/v1/projects \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Pro",
    "product_type": "SaaS",
    "support_email": "support@acme.com"
  }'

Response:

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Acme Pro",
    "slug": "acme-pro",
    "product_type": "SaaS",
    "support_email": "support@acme.com",
    "allowed_origins": [],
    "created_at": "2026-02-17T10:00:00Z",
    "updated_at": "2026-02-17T10:00:00Z"
  }
}

A unique public and secret API key pair is auto-generated for each new project.

Project-Scoped API

All core endpoints are scoped under a project slug:

https://api.windback.dev/api/v1/projects/{slug}/...
MethodPathDescription
GET/projectsList all your projects
POST/projectsCreate a new project
GET/projects/:slugGet project details
PUT/projects/:slugUpdate project settings
DELETE/projects/:slugDelete a project
PUT/projects/:slug/allowed-originsUpdate CORS origins
GET/projects/:slug/churn-eventsList churn events
POST/projects/:slug/churn-eventsCreate a churn event
GET/projects/:slug/churn-events/:idGet a churn event
POST/projects/:slug/churn-events/:id/generateGenerate recovery variants
POST/projects/:slug/churn-events/:id/variants/:vid/sendSend a recovery email
POST/projects/:slug/churn-events/:id/recoveredMark as recovered
GET/projects/:slug/statsGet project statistics

Switching Between Projects

In the dashboard, use the project switcher in the sidebar to navigate between your projects. Each project has its own overview, events list, and settings pages.

Dashboard URLs follow the pattern:

/dashboard/p/{slug}/          → Project overview
/dashboard/p/{slug}/events    → Churn events
/dashboard/p/{slug}/settings  → Project settings

Connecting Payment Providers

Each project connects to its own payment provider accounts. Go to Settings > Integrations within a project to configure:

  • Stripe — Enter your Stripe account ID
  • Razorpay — Enter your Razorpay key ID

Webhook URLs are project-scoped via the project's public API key:

https://api.windback.dev/api/v1/webhooks/stripe/{project_public_key}
https://api.windback.dev/api/v1/webhooks/razorpay/{project_public_key}

Managing API Keys

Each project has its own key pair:

TypePrefixUse
Publiccg_pub_Widget, webhook URLs
Secretcg_sk_SDK calls, server-side API access

View your project's API keys at Settings > API Keys within the project.

API keys are shown only once when a project is created. Store them securely.

Allowed Origins

Configure per-project CORS origins to control which domains can use the cancellation widget:

curl -X PUT \
  https://api.windback.dev/api/v1/projects/acme-pro/allowed-origins \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"allowed_origins": ["https://acme.com", "https://staging.acme.com"]}'

Updating a Project

curl -X PUT https://api.windback.dev/api/v1/projects/acme-pro \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Pro",
    "product_type": "SaaS",
    "support_email": "help@acme.com"
  }'

Deleting a Project

curl -X DELETE https://api.windback.dev/api/v1/projects/acme-pro \
  -H "Authorization: Bearer <token>"

Deleting a project permanently removes all its churn events, recovery variants, and API keys. This action cannot be undone.

Slug Uniqueness

Project slugs are unique per user, not globally. If a slug collision is detected within your account, a short UUID suffix is appended automatically (e.g. acme-pro-a1b2c3).

Next Steps