Customers
Run WhatsApp for every business you serve
For software platforms and agencies. Each business gets a customer record, a pairing link that needs no account, its own monthly cap and a token for its numbers only.
- Customer webhook events
- 15
- Polymorfa accounts your customer needs
- 0
- Numbers one customer token covers
- 64
- Wrong phones before a locked link is revoked
- 3
Onboarding
From signup to a connected number.
Create the customer in your own signup flow, send the link, and let a webhook tell you when the number is live.
Create the customer. Store your own account ID with it, through the Platform API or the Console. Send the pairing link. The business scans a QR code or enters a code on its own phone. It needs no Polymorfa account. Get the connected event. Then send and receive on the number through the Messaging API, like any other number.
Control
Each customer in its own lane.
Limit what each customer spends, decide who is funded first, move numbers and hand out tokens that reach one customer only.
Pairing links
Links you can lock and revoke.
Each link opens your hosted QuickLink page, with a lifetime, an optional expected phone and webhooks as it moves.
- Generated, opened, connecting, connected
- A failed attempt can retry on the same link
- Lifetimes from 15 minutes to 7 days
- Set the phone you expect on each link
- A phone confirmed not on WhatsApp is rejected up front
- Three mismatches revoke the link
- Your name, logo and accent
- Your own domain and no Polymorfa footer with Branded QuickLink
- Onboard Cloud API numbers with your own Meta app
In your code
Customers in your own product.
Create customers and pairing links from your onboarding, keep your records in step through webhooks and give each customer's app its own token.
import { Client } from "@polymorfa/sdk";
const platform = new Client({
credential: { type: "organizationApiKey", value: process.env.POLYMORFA_KEY! },
});
const customer = await platform.customers.create(
{ projectId, name: "Northside Gym", externalCustomerId: "crm_456" },
{ idempotencyKey: "create-customer-crm_456" },
);API surface
The Customers API.
Customer routes need customers:read or customers:manage, and caps need billing:manage. Sending stays on the Messaging API. Turning Customers on for a project cannot be undone.
Routes
- POST
/Create a customer with your own IDplatform/ customers - POST
/Create a link; the URL is returned onceplatform/ customers/ {id}/ pairing-links - DELETE
/Revoke a linkplatform/ customers/ {id}/ pairing-links/ {linkId} - POST
/Move a number to this customerplatform/ customers/ {id}/ numbers/ {sessionId}/ transfer - GET
/Read recent lifecycle eventsplatform/ customers/ {id}/ events - PUT
/Set the monthly cap and priorityplatform/ billing/ controls/ customer/ {id} - POST
/Mint a token for one customer's numbersplatform/ client-tokens - POST
/Send on a customer's numbermessaging/ {session}/ messages/ send
Webhook events
- Event
customer.createdA customer was added - Event
customer.archivedA customer was archived - Event
customer.pairing_link.openedThe recipient opened a link - Event
customer.pairing_link.connectedA verified number connected - Event
customer.pairing_link.failedAn attempt failed - Event
customer.number.attachedA number joined the customer - Event
customer.number.transferredA number moved between customers - Event
customer.number.disconnectedA customer's number disconnected
Start with a free number
Your first real number is free. Add more numbers on Pay-As-You-Go.