Skip to main content

Partner Subdomain Cloning: A Step-by-Step Guide

How can I make a copy of my subdomain?

Yes, this endpoint lets an approved partner create a new WorkBright subdomain by copying an existing template subdomain. The new account inherits the template's configuration (workflows, document packets, and settings), so you can stand up ready-to-use accounts without setting each one up by hand.

Access note: This endpoint is available only to approved partners.

When to use it

Use this when you want to provision a new customer account programmatically instead of building it manually. A common pattern: your WorkBright representative sets up a single template with the exact configuration you want, and you clone it each time you onboard a new client.

Before you start

You need two things, and both belong to your main partner subdomain (not a template subdomain):

  1. Your main partner subdomain — this is the host you send the request to.

  2. The API key for that main subdomain — this authenticates the request.

You also need to know the name of the template subdomain you want to clone. Your WorkBright representative provisions templates for you, so ask them which template name to use if you're unsure.

The most common setup mistake is sending the request to a template subdomain. Always send it to your main partner subdomain. The template is named in the request body, not in the URL.

How it works, start to finish

  1. Your WorkBright representative sets up the template(s). Each template subdomain is pre-configured with the settings you want new accounts to inherit.

  2. You call the endpoint from your main subdomain. You authenticate with your main subdomain's API key and name the template you want to copy.

  3. You get an immediate response with status: pending. Provisioning runs in the background. This same response includes the API key for the brand-new account, so capture and store it securely right away.

  4. A webhook confirms the result. When provisioning finishes, an account.provisioned webhook event fires with a status of either succeeded or failed.

Because provisioning is asynchronous, a 202 response means "accepted and in progress," not "finished." The webhook is how you learn the final outcome.

The request

Item

Value

Method

POST

Endpoint

/api/partner/accounts/clone

Base URL

Auth

API key in the API-Key header

Content-Type

application/json

Body parameters

Field

Type

Required

Description

template

String

Yes

The subdomain of the template account to clone from. Use the template name your WorkBright representative provisioned for you.

subdomain

String

Yes

The subdomain you want for the new account. Must be globally unique and URL-safe: lowercase letters, numbers, and hyphens only.

name

String

Yes

A human-readable display name for the new account.

account_type

String

No

Set to test to create a sandbox account. Test accounts do not count toward usage and enable a sandbox version of Document Verification. Do not use this for production accounts.

Example request

--header 'API-Key: YOUR_API_KEY' \

--header 'Content-Type: application/json' \

--data '{

"template": "templatesubdomain",

"subdomain": "desiredsubdomain",

"name": "Subdomain Name"

}'

What you get back

Success: 202 Accepted

The account has been accepted and is being provisioned in the background.

{

"subdomain": "accountprovisioningtest9",

"api_key": "your_api_key",

"status": "pending"

}

Two things to note:

  • status is pending. The account is not finished yet. Wait for the account.provisioned webhook to confirm.

  • api_key is the key for the new account. Store it securely now, since this is your handle for making future API calls against that account.

Confirming the result: the account.provisioned webhook

The 202 response tells you provisioning started, not that it finished. To learn the final outcome, listen for the account.provisioned webhook. It fires once the clone request completes.

A few setup requirements:

  • This webhook is available only to approved partners with API subdomain provisioning access.

  • You must configure the webhook on your main partner bundle subdomain.

What the payload looks like

{

"event_key": "account.provisioned",

"occurred_at": "2026-06-22T10:30:35.764-06:00",

"data": {

"subdomain": "subdomainABC",

"status": "succeeded"

}

}

Reading the payload

  • event_key identifies the event as account.provisioned.

  • occurred_at is when provisioning is completed.

  • data.subdomain tells you which account this result belongs to. Match it against the subdomain you requested.

  • data.status is either succeeded or failed. If it failed, the status attribute includes additional notes explaining why.

In short: send the request, store the returned API key, then wait for this webhook to tell you whether the account is ready or needs attention.

Handling errors

401 Unauthorized — Invalid API key

Your API-Key header is missing or wrong. Confirm you're using the API key for your main partner subdomain.

{}

422 Unprocessable Entity — Subdomain already taken

The subdomain you requested is in use. Pick a different one.

{

"errors": {

"subdomain": [

"This subdomain is already taken."

]

}

}

422 Unprocessable Entity — Invalid subdomain

The subdomain value isn't formatted correctly. Use lowercase letters, numbers, and hyphens only.

{

"errors": {

"subdomain": [

"This does not look like a valid subdomain"

]

}

}

Quick checklist

  • Send the request to your main partner subdomain, not a template

  • Using the API key tied to that main subdomain

  • template matches a template name your WorkBright rep set up

  • Subdomain is globally unique and uses only lowercase letters, numbers, and hyphens

  • name is set

  • Captured and stored the returned api_key for the new account

  • Listening for the account.provisioned webhook to confirm success or failure

What Gets Copied from a Template

When you clone a new subdomain from a template, the following configuration is copied for you:

  • Forms and documents — including their settings, fields, ordering, and group assignments

  • Fields — custom fields and standard fields

  • Groups — employee groups

  • Reports – saved reports

  • Feature configuration — which features are enabled

  • Admin permission settings

  • Webhook configuration

  • Embedded redirect URL settings — when the embedded feature is enabled

  • Conditional logic — when enabled

Outside of Scope

  • Cloning company address

  • Cloning E-Verify credentials

  • Cloning submission deadlines settings

  • Relative date (regular deadline/extended deadline) or Exact date

  • Cloning SSO Configuration

  • Cloning CSS Configuration

  • Sharing custom forms across subdomains - (ex: changes on one form apply to others, or form ID is the same across all subdomains)

  • Cloning Admin Users

  • One dashboard to view updates across all child subdomains

  • Bulk employee onboarding progress endpoint across all subdomains

  • De-provisioning of subdomains

Did this answer your question?