Skip to main content
By default, self-hosted SuprSend uses a passwordless email+code flow for dashboard authentication. WorkOS integration replaces this with AuthKit, giving you enterprise SSO, social logins (Google, GitHub, etc.), SAML, email verification, and magic-link login - all managed through your WorkOS dashboard.
Optional feature - WorkOS integration is optional. If you do not set it up, the default email+code login continues to work unchanged.

Prerequisites

  • A WorkOS account with User Management enabled
  • A running SuprSend self-hosted deployment
  • Your dashboard URL (for example https://app.yourdomain.com) and API URL (for example https://api.yourdomain.com)

Step 1 - Configure WorkOS dashboard

1.1 Create an application

In the WorkOS dashboard, create a new application (or use an existing one) and note down:

1.2 Add the redirect URI

Under Redirects, add your frontend sign-in callback page as an allowed redirect URI:
Replace app.yourdomain.com with your actual dashboard domain.

1.3 Register the webhook endpoint

Under Webhooks, add a new endpoint pointing at your SuprSend API:
Enable the following event:
  • magic_auth.created - on self-hosted deployments WorkOS sends the magic-link login email itself; SuprSend only verifies and acknowledges this event
Copy the Webhook Secret that WorkOS generates - you will need it in the next step.

Step 2 - Add WorkOS secrets

Add the following keys to your existing suprsend-secrets.yaml (inside stringData):
suprsend-secrets.yaml (additions)
Apply the updated secret:

Step 3 - Update suprsend-values.yaml

3.1 Backend (suprsend API)

Add the following under the suprsendapi section:
suprsend-values.yaml (suprsendapi section)

3.2 Frontend (suprsend dashboard app)

The dashboard frontend uses viteEnableWorkosLoginFlow to toggle the login mode. Set it to "true" to enable WorkOS:
suprsend-values.yaml (suprsendApp section)
To switch back to the default email+code login at any time, set viteEnableWorkosLoginFlow to "false" and re-run helm upgrade.
Some older guides use viteDisableWorkosLoginFlow. The dashboard does not read that key: use viteEnableWorkosLoginFlow and set it to "true" to enable WorkOS. If it is unset, self-hosted dashboards use email+code login.

Step 4 - Apply changes

Wait for the suprsendapi and suprsendApp pods to restart:

How the auth flow works

Login response types

Webhook integration

SuprSend registers a webhook endpoint at /v1/workos_webhook/ to receive events from WorkOS. For self-hosted deployments, the relevant event is: How it works
  1. User requests a magic-link login via WorkOS AuthKit.
  2. WorkOS fires magic_auth.created to https://api.yourdomain.com/v1/workos_webhook/.
  3. SuprSend verifies the webhook signature using WORKOS_WEBHOOK_SECRET.
  4. On self-hosted deployments SuprSend does not send the login email - WorkOS delivers the magic-link email itself.
  5. Duplicate events are deduplicated using Redis (event IDs are cached for 3 days).
WorkOS AuthKit handles email verification natively - users must verify their email before they can authenticate. The email_verification.created event is not required for self-hosted deployments.

FAQ

Ensure viteEnableWorkosLoginFlow is "true" in suprsendApp.config (if it is unset, self-hosted dashboards default to email+code login). Run helm upgrade with your values file so the dashboard pod restarts with the updated setting; the frontend reads this flag at runtime from the pod’s environment.