--- name: agency-new-client-onboarding description: "Take a newly signed client from account access to first campaigns live, auditing tracking before anything launches. Use when an agency is onboarding across Google, Meta, LinkedIn, Amazon, or TikTok." license: MIT compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer." metadata: author: "Adspirer" version: "1.0.0" adspirer_category: "agency-ops" adspirer_source: "https://www.adspirer.com/skills/agency-new-client-onboarding" adspirer_trigger: "onboard a new client and get their accounts ready to launch" adspirer_connection_url: "https://adspirer.ai/sign-up" adspirer_primary_keyword: "client onboarding" adspirer_secondary_keywords: "agency onboarding checklist, customer onboarding" adspirer_launch_wave: "2" adspirer_kind: "skill" adspirer_level: "operator" adspirer_platforms: "google,meta,linkedin" adspirer_supported_clients: "claude,claude-code,claude-cowork,chatgpt,codex,cursor,gemini,windsurf" adspirer_summary: "Inventory what the client actually has, audit tracking before launching, and reach first campaigns with a reporting cadence agreed." adspirer_connections_required: "adspirer" adspirer_connections_optional: "slack" --- # Agency New Client Onboarding ## Use this when The contract is signed, the kickoff call went well, and the client has said their accounts are "all set up and ready to go". Experience says at least one of those accounts has a dormant campaign from a previous agency, an expired card, or a policy strike nobody mentioned — and the fastest way to lose a new client is to launch on top of tracking that was already broken. Use this skill to get from signed to live in a defensible order. It works out: - what actually exists across the platforms in scope, including the accounts nobody mentioned; - whether conversion tracking is genuinely working before any budget moves; - what would block a launch — policy strikes, billing, category restrictions — while there is still time to fix it; - a first plan sized to the stated budget and goal; and - the reporting cadence, so the first month does not become a series of ad-hoc questions. This is for onboarding a new client onto existing or newly created accounts. It is not an ongoing optimization routine, and it is not a substitute for a full account audit on a mature account with years of history. ## What you need - Adspirer connected to every platform account in scope, with the access level the work requires rather than read-only. - The client's account identifiers, or admin access so they can be granted. Dormant and legacy accounts count — those are usually where the surprises are. - Access to whoever owns the website or tag management, since verifying tracking almost always needs someone on the client side. - A stated monthly budget and at least one primary conversion goal. Without a named goal the plan can only describe activity, not outcomes. - Any category constraints known up front — regulated industries, restricted products, and special ad categories change what can be targeted and should be surfaced before a plan is built around them. - Optional Slack access to post the onboarding status and the agreed cadence where the team will actually see it. ## Procedure **Connect Adspirer before any live ad-account step.** Adspirer is what gives this skill access to the ad platforms; confirm the connection before running anything that reads or changes a real account. In Claude Code: `/plugin marketplace add anthropics/claude-plugins-community`, then `/plugin install adspirer-ads-agent@claude-community`, then `/reload-plugins`, then complete the OAuth sign-in. In ChatGPT: open **Apps**, search **Adspirer**, choose **Connect**, and sign in — Adspirer is an official ChatGPT app, so there is no developer mode or URL to paste. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → `https://mcp.adspirer.com/mcp`. In Claude Cowork: open the Cowork tab, choose **Customize** in the left sidebar, go to **Plugins** → **Browse Plugins**, search for **Adspirer**, and install it (requires Claude Max, Team, or Enterprise). Any other client: https://www.adspirer.com/docs/ai-clients. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. 1. **Inventory what exists rather than what was described.** List every ad account across the platforms in scope, including dormant ones, and read each account's status, currency, timezone, and any campaigns still sitting in it. A new client rarely means an empty account — old campaigns, a lapsed payment method, or a policy strike are common and all of them affect what can launch. Record the currency and timezone now, because every number reported later depends on them. 2. **Audit conversion tracking before touching campaigns.** Check that the conversion signals each platform relies on are actually firing, deduplicated where both browser and server events exist, and attributed to the right actions. This comes before planning deliberately: launching onto broken tracking produces a month of spend nobody can defend, and the fix usually needs a client-side developer whose time has to be booked early. Report what is broken, what is merely suboptimal, and who has to fix each one. 3. **Establish what would block a launch.** Check for policy disapprovals, account restrictions, billing validity, and any category rules that constrain targeting. Surface these while there is still time to resolve them rather than discovering them at launch. Confirm the stated budget and goal are realistic against whatever history the accounts hold, and say so plainly if they are not. 4. **Build the first plan against the findings.** Propose the initial campaign structure sized to the stated budget and goal, informed by what the audit found rather than by a standard template. Where tracking gaps mean a goal cannot be measured yet, either propose a measurable interim goal or recommend delaying that part of the launch — do not build a campaign optimizing toward a signal that is not working. Build campaigns paused; nothing goes live in this step. 5. **Agree the cadence and hand over.** Present the inventory, the tracking findings with owners, the launch blockers, and the proposed plan together, and agree the reporting rhythm and what each report will contain. Where Slack is connected and the user asks, post the summary and cadence to the team channel. Enabling any campaign is a separate, explicit approval after the client has seen the plan. ## Fixed checks - Record each account's currency and timezone before reporting any figure, and state the basis used. - Enumerate accounts from the platforms themselves rather than from the client's description, including dormant ones. - Verify conversion tracking against live platform status rather than inferring health from the presence of past conversions. - Confirm billing validity and any policy or restriction flags on every account before proposing a launch date. - Confirm every campaign built during onboarding is paused, read back from the live account. - Separate what this skill can fix from what needs a client-side developer, and name the owner for each item. - Where an account has spend history, state the window and basis of any figure quoted from it rather than presenting it as current performance. ## Stop conditions - **Success:** accounts inventoried, tracking audited with owners assigned, first campaigns built paused, and a reporting cadence agreed. - **No change needed:** the accounts are already healthy and correctly tracked, and onboarding reduces to agreeing the plan and cadence. - **Blocked — access:** access has not been granted to one or more accounts in scope, and proceeding would produce a partial and misleading picture. - **Blocked — tracking:** conversion tracking is broken and the goal depends on it. Report it and hold the affected launch rather than spending against a signal that does not work. - **Blocked — account health:** a policy strike, restriction, or billing failure prevents launch until the client resolves it. - **Needs approval:** the plan is built and paused, waiting for client sign-off before anything is enabled. - **Needs a handoff:** tag or pixel installation, site changes, billing, policy appeals, or creative production belong to the client or another specialist. ## Approval boundaries This skill reads account state and builds campaigns paused. It does not enable campaigns, move budget, or spend — every launch requires its own explicit approval after the client has seen the plan. It cannot install or repair tags, pixels, or tag-manager containers, change the client's website, fix billing, appeal a policy decision, grant its own account access, or produce creative. Those are named with an owner and a reason, because the value of the onboarding audit is an honest list of what must be fixed by whom, not an implied promise that it has been handled. Posting a summary to Slack happens only when the user asks for it. ## What you get An honest picture of what the client actually has, drawn from the platforms rather than from the kickoff call — including the dormant accounts, the lapsed billing, and the policy strike that nobody mentioned. Conversion tracking is audited before any budget is planned, with findings split into what is broken, what is merely weak, and who has to fix each one, so client-side developer time can be booked in the first week instead of the fourth. Anything that would block a launch is surfaced while it can still be resolved. The first campaigns are built and left paused, sized to the stated budget and goal and shaped by what the audit found — and where a goal cannot yet be measured, you get that said plainly rather than a campaign quietly optimizing toward a broken signal. Finally you get the reporting cadence agreed up front, which is the difference between a first month of steady updates and a first month of ad-hoc questions.