Member Provisioning (sales webhooks)
Sell on any platform — members manage themselves. Connect your sales platform's webhook (Hotmart today; more platforms on the roadmap) and every sale automatically creates a member in your Tenant Auth community: buyers log in with their purchase email (OTP), no password setup, no manual work. Refunds, chargebacks and cancellations revoke access instantly — sessions are killed and gated file downloads stop working on the next click. Map each product/offer to a tenant group, keep a full audit trail of every event, and test the entire chain with the built-in simulator before going live. Webhook endpoint: POST https://api.websitepublisher.ai/sapi/project/{id}/webhook/{provider}.
Endpoints (6)
Enable a sales platform for this project. Returns the exact webhook_url to paste into the platform's webhook settings. The shared token (e.g. the Hotmart hottok) must be stored in the vault first (vault_store_secret) — pass its key name as secret_ref. Providers: hotmart (more via the roadmap).
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | ✓ Yes | Provider slug, e.g. "hotmart". |
secret_ref |
string | No | Vault key name holding the platform's shared token (e.g. "hotmart_hottok"). |
status |
string | No | active (default) | disabled. |
Link a product or offer at the sales platform to a tenant group. A sale of this external_id then grants membership in tenant_code; refund/cancel revokes it. For Hotmart use the offer code (data.purchase.offer.code) or the numeric product id — both work. Upserts on (provider, external_id).
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | ✓ Yes | Provider slug, e.g. "hotmart". |
external_id |
string | ✓ Yes | Offer code or product id at the platform. |
tenant_code |
string | ✓ Yes | Tenant group that this sale grants access to. |
role |
string | No | Optional tenant_auth role for created members (default member). |
Remove a product/offer mapping. Sales of that external_id are then audited as "unmapped" and never touch membership.
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | ✓ Yes | Provider slug. |
external_id |
string | ✓ Yes | The mapped offer/product id to remove. |
List all product/offer → tenant_code mappings for this project, optionally filtered by provider.
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | No | Filter by provider slug. |
Audit trail of every received event: processed, duplicate, ignored, unmapped, signature_failed or error — with buyer email, action and detail. Your first stop when a member says "I paid but can't log in".
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | No | Filter by provider. |
status |
string | No | Filter: processed|duplicate|ignored|unmapped|signature_failed|error. |
action |
string | No | Filter: grant|revoke. |
buyer_email |
string | No | Filter by buyer email. |
limit |
integer | No | Page size (default 50, max 200). |
offset |
integer | No | Pagination offset. |
Test the entire chain without the real platform: injects a synthetic grant or revoke event through the same engine (idempotency, mapping, tenant lifecycle, audit). Verify the member appears/disappears and gated downloads open/close — then go live with confidence.
| Field | Type | Required | Description |
|---|---|---|---|
provider |
string | ✓ Yes | Provider slug the simulation runs under, e.g. "hotmart". |
action |
string | ✓ Yes | grant | revoke. |
buyer_email |
string | ✓ Yes | The (test) buyer's email. |
external_id |
string | No | Offer/product id — must be mapped via map-offer, else the event audits as "unmapped". |
MCP Tool Names
When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:
| Endpoint | MCP Tool Name |
|---|---|
| configure | member-provisioning_configure |
| map-offer | member-provisioning_map_offer |
| unmap-offer | member-provisioning_unmap_offer |
| list-mappings | member-provisioning_list_mappings |
| list-events | member-provisioning_list_events |
| simulate | member-provisioning_simulate |
Website