Working with multiple ClickFunnels workspaces (agencies and client work)

Agencies and certified builders managing several client ClickFunnels workspaces can connect multiple ClickFunnels accounts to one Overskill workspace and pick which connection each app uses — or run one Overskill workspace per client for the cleanest handoff.

If you're an agency or certified ClickFunnels builder, you likely manage several client ClickFunnels workspaces. Overskill gives you two patterns for handling this, and which one you pick depends on how much ownership you want to share with clients.

Coming soon: The Connect another ClickFunnels workspace button and per-app connection picker described in Pattern B are rolling out now. If you don't see them in your account yet, contact support and we'll enable them for your workspace.

Pattern A — one Overskill workspace per client

Each client gets their own Overskill workspace. They own it (or you run it under their billing), and it has exactly one ClickFunnels connection: theirs. Their apps only ever talk to their ClickFunnels account.

When to use this: when the client is hands-on, wants to own their Overskill workspace and billing, or when you're handing the finished apps back to them. Cleanest separation and easiest handoff for client work.

Pattern B — one agency workspace, multiple named ClickFunnels connections

Your agency holds a single Overskill workspace. You connect each client's ClickFunnels workspace from your integrations page under a distinct name — their company name works well — then choose which ClickFunnels connection each app uses. One Overskill workspace, multiple ClickFunnels accounts.

When to use this: when your agency owns everything — billing, members, credits — and you're building for clients without giving them direct Overskill access.

💬 Ask your AI to set this up Once you've added a second ClickFunnels connection, paste this into an app's chat:

Switch this app to use my [client name] ClickFunnels connection.

The AI can update the app's ClickFunnels connection for you.

Step 1 — Connect another ClickFunnels workspace

  1. Go to Settings → Integrations (the workspace-level integrations page, not an individual app's settings).
  2. Find the ClickFunnels section. Your existing connection is listed by name.
  3. Click Connect another ClickFunnels workspace.
  4. Give the new connection a name that identifies the client — for example, Acme Corp.
  5. Authorize the client's ClickFunnels account through the OAuth flow.

Repeat for each client ClickFunnels workspace you manage.

Step 2 — Choose which connection each app uses

  1. Open the app in the editor.
  2. Go to Settings → Integrations for that app.
  3. Under the ClickFunnels section, find the ClickFunnels workspace this app uses picker. It lists all the ClickFunnels accounts your workspace has connected.
  4. Choose the client's connection and save.

After you save, the app's data, opt-ins, pages, webhooks, and API calls all go through that specific ClickFunnels account — not your workspace default.

Webhooks and data stay per connection

Webhooks your app registers (for example, listening for new orders) are registered in the specific ClickFunnels workspace the app is connected to. When you pick a different connection for an app, future webhooks land in the new workspace. Existing webhooks stay tied to the workspace where they were registered — they don't migrate automatically. If you switch an app from one client connection to another, re-register its webhooks so they land in the right place.

Disconnecting one client without affecting others

You can disconnect one client's ClickFunnels connection without touching apps that use other connections. The only time a disconnect is blocked is when the connection is the last one on your workspace — Overskill won't remove the final connection while apps depend on it. If the connection you remove was your workspace default, Overskill automatically promotes the next-oldest connection to take its place.

Apps that use environment variables directly

Until the named-connection picker ships, the builder generates a fresh set of ClickFunnels env vars on every app that connects to ClickFunnels. The three canonical names are:

  • CLICKFUNNELS_API_TOKEN — the API token for the ClickFunnels account
  • CLICKFUNNELS_SUBDOMAIN — the workspace subdomain (e.g. your-workspace)
  • CLICKFUNNELS_WORKSPACE_ID — the workspace ID

Older apps may use drifted names (CLICKFUNNELS_API_KEY, CF_API_KEY, CF_DIRECT_*, CF_SUBDOMAIN, CF_WORKSPACE_ID). Those still work if the app code reads them — check the app's environment variables and its code to confirm which name it uses.

One-click conversion: Once the named-connection picker is available on your account, any app that already has ClickFunnels env vars will show a Use a named connection option. Clicking it links the app to the matching named connection; the existing env vars are kept and marked superseded rather than deleted, so nothing breaks if you roll back.

When a named connection is active, Overskill injects CLICKFUNNELS_API_TOKEN, CLICKFUNNELS_SUBDOMAIN, and CLICKFUNNELS_WORKSPACE_ID at deploy time from the chosen connection. Variables you set manually always win — if the app has its own value for any of those names, the injected value is ignored.

Some values always stay per app as env vars — they are not part of a connection and the picker does not touch them:

  • ClickFunnels webhook secrets
  • Tags and failure-notify email addresses
  • VITE_* frontend build values
  • ClickFunnels 2.0 SSO bridge secrets

Keep those in the app's environment variables regardless of which connection pattern you use.

Was this helpful?

Thanks for the signal — it helps us improve the docs.

More in Integrations

Connecting Stripe for payments

Overskill's option to use your own Stripe account instead of the built-in checkout is switched on for only a small number of accounts, and support can't turn it on for yours. Use the built-in checkout.

Send app optins to ClickFunnels

ClickFunnels is built into every Overskill app — connect once from your app's chat and your opt-in forms push contacts, tags, and course enrollments straight into your workspace. No webhook, no API key, no environment variables.

Why was my email sending paused or throttled?

Every email sending limit, throttle, hold, and pause explained in plain language — what triggered it, and exactly how to fix each one.

Still need help?

If this didn't answer your question, our team is one click away.