---
title: Agencies, white label and subaccounts
slug: agency
description: How Personizely works for agencies: client subaccounts, plan slots and billing, white-label branding on your own domain, and your own OAuth integration apps.
docTags: 
createdAt: 2026-10-17T10:01:35.399Z
---

The agency area lets an agency manage Personizely for its clients from one login. Each client gets a **subaccount**: a separate Personizely account with its own websites, team and visitor quota, on a plan the agency assigns from its **slots** and pays for. With white label, clients use the app on the agency's own domain, under the agency's name and logo.

**Availability:** agency accounts and white label are set up by Personizely. Contact us to become an agency partner.

## How it works

1. **Personizely creates your agency.** You get an invitation by email and sign in to the agency area.
2. **You add slots.** A slot is a plan (with its visitor limit and billing period) that you can give to one client.
3. **You create a subaccount per client** and assign it a free slot. The client gets an invitation and becomes the subaccount's owner; you're added as an admin.
4. **You and the client work in the subaccount** like in any Personizely account: install, campaigns, widgets, reports.
5. **Personizely bills the agency** for the slots in use.

## The agency area

Open it from the profile menu → **Agency**. The sidebar has:

| Item                 | What it does                                                                        |
| -------------------- | ----------------------------------------------------------------------------------- |
| **Accounts**         | Your client subaccounts                                                             |
| **Settings**         | Agency name, white label, DNS, slots and integrations                               |
| **Billing**          | Opens the billing portal for the agency's subscription: payment method and invoices |
| **Your slots quota** | How many of your slots are used                                                     |

To work inside a client's subaccount, open the profile menu → **App** and pick the account. From a subaccount, the profile menu → **Agency** takes you back.

Agency roles are **Owner** and **Admin**. Both can manage subaccounts, slots and agency settings.

## Slots

**Settings → Slots** lists your slots: each one's plan, visitor limit and billing period, and whether it's **Used by** a client or **Not used**. The top shows the agency's monthly total and how many slots are used.

| Action               | How                                                                                                            |
| -------------------- | -------------------------------------------------------------------------------------------------------------- |
| Add a slot           | **Add a slot**, choose a plan and visitor limit, **Create slot**. Your agency discount is applied to the price |
| Change a slot's plan | Edit button → choose the new plan → **Change slot plan**. The client's quota and features change with it       |
| Delete a slot        | Delete button. Only possible when no subaccount uses it                                                        |

You're billed for slots that are assigned to a subaccount; unused slots aren't charged. Some agencies have **included** slots as part of their agreement with Personizely. Those aren't charged and can't be edited or deleted.

## Subaccounts

### Create a subaccount

**Create subaccount** appears in **Accounts** when you have at least one free slot.

| Field            | What it does                                                                                                                                                                           |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Company name** | The client's account name                                                                                                                                                              |
| **Domain**       | The client's first website, such as `client-store.com`                                                                                                                                 |
| **Email**        | The client's login. An invitation is sent to this address, and this person becomes the subaccount's owner. If the email already has a Personizely login, the subaccount is added to it |
| **Slot**         | The plan the subaccount gets                                                                                                                                                           |

You're added to the subaccount as an **Admin**. The client can invite their own team from **Account → Team**. See [Account, team and roles](docId\:H2B5mIcnjYpbOOCXOgUwm).

### Manage subaccounts

- **Deactivate or activate:** click the status badge next to the account. A deactivated subaccount's widgets and campaigns stop on all its websites; activating restarts them.
- **Delete:** click the delete button. The subaccount and all its websites and data are deleted, and its slot becomes free.

### What the client sees

- **Plan and billing come from the agency.** The client's **Subscription** page shows their visitor quota; upgrading shows "Ask  to upgrade your plan".

  :::Iframe{code="<your agency>"}

  :::
- **The visitor quota is the slot's limit.** Quota warning and quota exceeded emails go to the subaccount owner. When the quota is exceeded, widgets and campaigns stop until the period resets or you move the client to a bigger slot. See [Plans, visitor quota and pausing](docId\:PcWtmn677CfNmjPJ58llM).
- **No Powered by Personizely badge.** Subaccounts don't have the badge option.

## White label

White label replaces Personizely's brand with yours for your clients. It's available when Personizely has enabled it for your agency.

### Set up

1. **Settings → Settings:** enter your brand **Name** (it replaces the Personizely name everywhere), turn on **Enable whitelabel**, and upload your **Brand assets**: **Logo**, **Logo on dark**, and favicons of 32×32 and 16×16 pixels.
2. **Settings → DNS:** enter the base **Domain** for the app, such as `myagency.com`, and click **Save**. Personizely lists the DNS records to add: CNAME records for the app's subdomains, and records that let emails be sent from your domain.
3. Add the records at your DNS provider, then click **Check**. When all records are found, you see "DNS Record Check - Valid". SSL certificates are generated within 24 hours after validation; after that, the app is available on your domain.
4. **Settings → Integrations:** connect your own OAuth apps for integrations that use OAuth (see below).

### What changes for your clients

| Area              | With white label                                                                                                                                                                                                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| App               | Served on your domain, with your name, logo and favicon                                                                                                                                                                                                                                     |
| Emails            | Invitations and account emails use your brand name and are sent from your domain                                                                                                                                                                                                            |
| Install code      | The snippet and uploaded images are served from a separate white-label host instead of `personizely.net`. Copy the code from **Settings → Website**; if the client's site has a Content Security Policy, allow that host. See [Content Security Policy (CSP)](docId\:kHb2SYuGO9A2ulTVoNa_J) |
| JavaScript events | Event names start with your brand name in lowercase instead of `personizely`, such as `myagency:widget:view`. See [JavaScript API (window.ply)](docId\:d64TegyOiwNA2GFG1eXPm)                                                                                                               |
| Integrations      | OAuth integrations show your app to the client during connection                                                                                                                                                                                                                            |

### Your own OAuth apps for integrations

Integrations that connect with OAuth (for example Klaviyo, Mailchimp or HubSpot) authorize through an app registered with that provider. With white label, the client should see your brand there, so you create your own app in each provider's developer settings and enter it in **Settings → Integrations**: click **Enable** on the integration, then enter its **Client ID** and **Client secret**. Use **Disable** to remove it.

Integrations that connect with an API key don't need this step. See [Integrations](docId\:YweYsNdyWfChY1Z9KMneN).

## Behavior details and limitations

- **Subaccounts are full accounts.** Each has its own websites, settings, team, API keys and DPA. Nothing is shared between clients.
- **One slot per subaccount.** To give a client more visitors, change their slot's plan.
- **A used slot can't be deleted.** Delete the subaccount first; its slot then becomes free.
- **White label applies once DNS is valid.** Until then, clients use the standard Personizely app and hosts.
- **Changing the white-label domain** requires the DNS records and check again for the new domain.
- **Existing install code.** If you turn on white label for clients that are already installed, the snippet host changes. Copy the new code from **Settings → Website** to their sites. On Shopify, the app embed keeps loading the snippet without changes.

## Related

- [Account, team and roles](docId\:H2B5mIcnjYpbOOCXOgUwm)
- [Multiple websites](docId\:xTmxPcoGPGtWkYgcZd69E)
- [Plans, visitor quota and pausing](docId\:PcWtmn677CfNmjPJ58llM)
- [Content Security Policy (CSP)](docId\:kHb2SYuGO9A2ulTVoNa_J)
- [Integrations](docId\:YweYsNdyWfChY1Z9KMneN)
- [JavaScript API (window.ply)](docId\:d64TegyOiwNA2GFG1eXPm)
