> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamfollowup.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public API base URL: https://api.teamfollowup.ai/api.
> Authenticate public API requests with Authorization: Bearer YOUR_API_KEY.
> Use product-owned terms: agents, campaigns, projects (GoHighLevel sub-accounts), contacts, calls, outcomes, skills, cadences, phone numbers.
> Scope requests by locationId rather than projectName.
> Read the guide linked from each API reference group before recommending an endpoint.

# What syncs and what stays local

> Shared assets flow from the parent to every linked project. Binding assets never do, because each sub account owns its own calendars, pipelines and transfer numbers. One test tells you which is which.

Two categories, one test between them.

<Card title="The test">
  Can this value be the **same sentence** in every sub account, or is it a
  **record ID** that only exists inside one of them?

  A tag name, a script line, a retry schedule: same everywhere. A calendar, a
  pipeline stage, a transfer number: a different record in every sub account.
</Card>

<img className="block dark:hidden" src="https://mintcdn.com/teamfollowupai/QX4GFVxyRVTtiDDs/images/master-agent/what-syncs-light.png?fit=max&auto=format&n=QX4GFVxyRVTtiDDs&q=85&s=bcef83ad0b105b6216a49c770219ae46" alt="The master agent sends its script, voice and call flow to every client. Each client keeps its own calendar and phone number." width="1000" height="450" data-path="images/master-agent/what-syncs-light.png" />

<img className="hidden dark:block" src="https://mintcdn.com/teamfollowupai/QX4GFVxyRVTtiDDs/images/master-agent/what-syncs-dark.png?fit=max&auto=format&n=QX4GFVxyRVTtiDDs&q=85&s=515c88b083a2ac12601e8a56c6d44160" alt="The master agent sends its script, voice and call flow to every client. Each client keeps its own calendar and phone number." width="1000" height="450" data-path="images/master-agent/what-syncs-dark.png" />

## Shared, so the parent wins

Change these on the parent and every linked project gets them:

| | |
| - | - |
| **The agent** | The script, the voice, and every other agent setting |
| **Campaign identity** | Name, description, type, system, engine, trigger |
| **Who gets called** | Active tags, inactive tags, tag names used by workflow nodes |
| **The call flow** | Workflow nodes, edges, conditions, node copy, outcomes |
| **Behaviour** | Call-if-DND, timezone checking, collect-address, cadence |
| **Calling window** | The schedule shape |

Workflow **structure** is shared for a reason worth naming: if the graph could
differ per project, those projects would be separate campaigns wearing the same
name.

## Local, so the parent never touches them

<Warning>
  These are never inherited from the parent, not on first link and not on any
  later save. A parent edit cannot overwrite them.
</Warning>

| | |
| - | - |
| **Calendars** | The booking calendar, and the human-callback calendar |
| **Transfer destination** | The number a live transfer goes to |
| **Pipeline stages** | The pipeline and stage a Move Stage action targets |
| **Phone numbers** | The caller ID the project dials from |
| **Live or not** | Each project is switched on independently |
| **Timezone** | If the child already has one, it is kept |

Calendars, transfer numbers and pipeline stages are
[bindings](/campaigns/master-agent/bindings): they get connected per project,
and a project cannot go live until they are.

Phone numbers, live status and timezone are simply local. They are not bindings
and they never appear in a binding report.

## Two answers this gives you

**"I changed the script on one project and it went back."** Working as designed.
The script is shared, so the parent is the only place it can be changed. Change
it there and it reaches everyone.

**"I want this one client to say something different."** Then it is not the same
campaign. Either the difference belongs in something already local, or that
client needs its own campaign outside the master agent.

## One current limit

Advanced transfer routing is not supported on master agents. Routes are stored
on the shared agent, so each project cannot have its own.

A master agent that transfers should use the simple `{{transfer_number}}`
destination, with one bound transfer number per sub account.

## In the API

* [Get master agent state](/api-reference/master-agent/get-master-agent-state) shows the parent and every linked project
* [Get campaign](/api-reference/campaigns/get-campaign) on a child shows the synced fields beside the local ones
* [Connecting each project's own assets](/campaigns/master-agent/bindings) covers the local side
