Skip to main content

White Label

Branded portal, zero UI dev. Best for platforms that want a premium phone-system experience without building or maintaining a voice UI.

Your customers log into a DialStack-hosted portal at <yourplatform>.netvoice.io — our dedicated white-label domain. The admin console, call history, voicemail inbox, and device management are all provided — you own the branding. A custom domain like phones.yourplatform.com is also possible (see Custom domain below).

What you ship

  • A fully branded phone-system portal at <yourplatform>.netvoice.io.
  • Administrative interfaces (e.g., for managing users, numbers, dial plans).
  • User features (e.g., call history, voicemail inbox, and device provisioning).

Provisioning flow

Two API calls. That's it.

Provision a new customer

When your signup flow runs, create a DialStack account for the customer:

TypeScript
import { DialStack } from '@dialstack/sdk-server';

const ds = new DialStack(process.env.DIALSTACK_KEY);

const account = await ds.accounts.create({
email: 'contact@joneschiro.com',
});
// → { id: 'acct_01h2xcejqtf2nbrexx3vqjhp41', ... }

Persist account.id against your customer record. All subsequent user / billing / config calls scope to this ID via the DialStack-Account header.

Sync users

Whenever your product creates or deletes a user on that customer's account, mirror it to DialStack:

TypeScript
const user = await ds.users.create(
{ name: 'Dr. Alice Smith', email: 'alice@joneschiro.com' },
{ dialstackAccount: account.id }
);

// later, on offboard:
await ds.users.del(user.id, { dialstackAccount: account.id });

The user now shows up in the portal's admin console and can be assigned a phone number.

Voice users are not portal administrators

POST /v1/users creates a voice user — someone who gets phone service: an extension, devices, a number, a voicemail box. It does not grant access to the portal.

Portal administrators are a separate population. GET /v1/admin/users lists the people who can administer an account in the portal; an administrator need not have phone service, and a voice user is not an administrator by default. That collection is read-only — roles are granted in the admin portal, so there is no API call that creates a portal login.

Portal access

Your customers' portal administrators sign in at https://<yourplatform>.netvoice.io with their own credentials. Administrators are invited, and roles granted, from the portal itself — see the Users guide. A voice-only user has no portal login.

Single sign-on from your own identity provider is supported, so administrators don't face a second login. Like a custom domain, it involves more than a config toggle — we set it up with you per platform. Reach out and we'll walk through it.

Tell us what you need

There is no API today that hands a signed-in user of your app straight into the portal. If a programmatic handoff would fit your integration — and what it would need to carry — we'd love to hear about it at api@dialstack.ai.

Theming

Your logo and brand colors are configured once in the Platform Admin and applied across the portal and transactional email. No code, no CSS.

Custom domain

By default the portal lives at <yourplatform>.netvoice.io. That's production-ready and branded — no DNS required.

If you want the portal to live under your own domain (e.g., phones.yourplatform.com), that's supported too. It involves more than a simple CNAME — we coordinate DNS, TLS provisioning, and per-tenant routing together. Reach out and we'll walk through it.

What you don't build

  • Call-logs list, voicemail inbox, device provisioning
  • Admin tools (users, dial plans, number ordering)
  • Authentication UX — sign-in, invitations, and password recovery

What you do build

  • Account creation on customer signup (ds.accounts.create)
  • User sync on user onboard/offboard (ds.users.create / ds.users.del)
  • "Open phones" link in your app pointing at https://<yourplatform>.netvoice.io

When to pick this

  • You want voice live in weeks, not months.
  • You don't have front-end capacity for a voice surface.
  • Your customers are used to logging into vendor portals (payroll, scheduling, DMS tools).

When to pick something else

  • If voice has to live inside your app's main workspace with no context switch → Embedded.
  • If you're building a bespoke voice workflow (dispatcher console, agent cockpit) → Direct API.

See also

  • Quickstart — the ds.accounts.create / ds.users.create pair, then assigning a number.
  • Authentication — API keys, scoping requests with DialStack-Account.
  • Admin guide — what your customers see and do once they're in the portal.