Zodiac Tech CRM Docs

Ads Specialist

Build and tune client Meta campaigns in the agency panel — setup, campaign work, performance monitoring — with the launch gate firmly outside your hands.

ad-specialist Medium ⏱ 12 min Updated 2026-10-05

Ads Specialist

You build the Meta side of client delivery: get the client's account set up, keep campaigns healthy, watch performance, and hand work to QA for the go-live decision. You can create, edit and pause campaigns — but you cannot launch, and that is on purpose.

Who this is for

Zodiac Tech agency staff with the ads_specialist role, signing in at /agency/login. Prerequisites: your agency account exists (created at /super-admin/meta-ads/agency-team) and clients are assigned to you.

Your permissions in plain language

From AgencyRolesSeeder::ROLE_PERMISSIONS['ads_specialist']:

Granted Meaning
meta.view See the agency panel screens.
meta.setup Work the Setup Queue stages and checklists.
meta.connect Help connect a client's Meta assets.
meta.campaign.create / .edit / .pause Build, correct and pause campaigns.
meta.performance.view Active Campaigns, Needs Attention, Daily Brief, Portfolio Report.

Not granted: meta.campaign.launch (only qa_reviewer holds it), meta.creative.manage (creative work belongs to the Creative Specialist), meta.client.manage (client profile edits), meta.support.manage (requests/support desk).

Your daily routine

1. Morning — the health sweep

  1. Meta Ads → Daily Brief (/agency/meta-ads/daily-brief) — the overnight summary: spend, delivery changes, anything flagged. An automated ops scan runs every 30 minutes and the brief lands at 07:15.
  2. Needs Attention (/agency/meta-ads/needs-attention) — campaigns with delivery, tracking or lead problems. Fix in priority order: broken > under-delivering > optimising.
  3. Active Campaigns (/agency/meta-ads/active-campaigns) — spot-check pacing and leads per campaign.

2. Work the Setup Queue for your clients

  1. Meta Ads → Setup Queue (/agency/meta-ads/setup-queue) — filter by Owner for yours.
  2. Open a client and complete the ads-side stages and checklists: campaign setup, tracking, creative readiness. Tick only what is actually done; the pipeline feeds the client's progress and the platform team's dashboard.
  3. If the Meta connection is missing, use Request Facebook Connection (or the account manager does) — nothing can be built before the Page/ad account is connected.

3. Build and adjust campaigns

  • Campaigns arrive as drafts with the client's brief (product, budget, objective, audience) — built from the client's workspace through the AI campaign builder, where the client approves each draft. Your side of the loop: make the draft correct, then it must pass QA before anything reaches Meta.
  • Your meta.campaign.create/edit/pause permission covers building, correcting and pausing. The launch path is: draft → client approval → QA pass → launch. Launched campaigns are created PAUSED on Meta and are activated deliberately in Meta Ads Manager.
  • Never bypass QA to "save time" — the platform enforces the gate outside the UI too (CampaignBriefService::launch() refuses anything without qa_status = passed).

4. Performance reporting

  • Portfolio Report (/agency/meta-ads/portfolio-report) — across clients, for reviews.
  • Team Workload (/agency/meta-ads/team-workload) — where the week's effort sits.
  • Deep tracking mechanics: Tracking & attribution and Ads health & needs attention.

Expected result

  • Every campaign you touch is either healthy, paused with a reason, or in QA with a full checklist — never "somewhere in between".
  • Performance views match Meta's numbers; discrepancies go to Needs Attention, not into a spreadsheet.

Common mistakes

  • Waiting for the client to report a broken campaign. Needs Attention finds it first — read it daily.
  • Changing campaign settings during someone's test. Note tests in the client workspace internal notes so colleagues know.
  • Editing creatives yourself. You do not have meta.creative.manage — request through Client Requests and the creative specialist.
  • Assuming launch rights. You have none. That is the QA gate working as designed.

Technical details

  • Pages are shared with the SA panel but re-navigated in the agency panel at /agency/meta-ads/*; each page declares its $metaPermission and ChecksMetaPermission enforces it on mount and hydrate.
  • meta.* permissions are seeded by AgencyRolesSeeder; super admins bypass via User::hasMetaPermission().
  • Campaign drafts and QA states live on MetaCampaignDraft (draft, approved, launched, failed, rejected; QA in_qa, passed, failed).

Was this page helpful?