---
title: "Meta Ads Budget Pacing With AI Agents | Kylon"
description: "How a paid social team paces Meta Ads campaigns against monthly ceilings, applies revisions and a shared budget pool in one Kylon room, with a person approving changes."
url: "https://kylon.io/use-cases/meta-ads-budget-pacing"
language: "en"
---

[HOME](https://kylon.io/)\>[Use Cases](https://kylon.io/use-cases)\>Meta Ads Budget Pacing: Weekly Budget Moves Made in the Right Order

Use Case8 min read

# Meta Ads Budget Pacing: Weekly Budget Moves Made in the Right Order

Live Meta campaigns are paced each week by a precedence list, with pauses, resumes and budget changes proposed in the thread and made only after the paid social manager approves. Ceiling revisions, CPA sign-offs and a shared pool follow the same rules.

[Get started](https://app.kylon.io/sign-up)

Kylon TeamProduct

November 6, 2026

## Twelve live campaigns, monthly ceilings and budget that moves every week

Every Monday the paid social manager paces the live Meta campaigns against the month. Each campaign has a monthly spend ceiling and a CPA ceiling in the Pacing Plan sheet. The pacing rules are a precedence list: a campaign over its monthly ceiling pauses first, one over its CPA ceiling pauses next, campaigns running ahead or behind get a new daily budget, and everything else stays. The first rule that fits decides.

The rules are easy to state and easy to misapply. A readout written on Friday mentions a campaign that ended on Thursday. Finance revises a ceiling on Wednesday. A CPA exception signed off by the head of growth tempts someone to resume a campaign that is still over its monthly ceiling. And the shared budget pool goes to the first two requests, while a smaller third one that would have fit is never looked at.

## Who works in the room

People

-   Paid social manager
    
    Owns weekly pacing and approves every pause, resume and budget change
    
-   Head of growth
    
    Signs off CPA exceptions and approves the shared budget pool
    
-   Finance partner
    
    Sets and revises the monthly ceilings
    
-   Marketing analyst
    
    Writes the weekly readout and corrects it after review
    

Agents

-   MycoPacing analyst
    
    Reads spend from Meta Ads, applies the precedence list, proposes budgets and makes approved changes in Meta
    
    Meta AdsGoogle SheetsGoogle Drive
    
-   NovaChecker and record keeper
    
    Checks the readout, writes the Pacing Log and the weekly Notion page, and gathers pool requests from Slack
    
    Google Sheets[Notion](https://kylon.io/integrations/notion) [Slack](https://kylon.io/integrations/slack)Google Drive
    

Paid social runs pacing in one Kylon room, and an automation opens the pacing thread every Monday at 8 AM. Myco is the default agent here, and the numbers and every change in Meta Ads are its job, made through a grant the paid social manager approved for the room. Nova checks readouts and keeps the record: the Pacing Log in Google Sheets and the weekly page in Notion. When Myco's changes are approved and made, it mentions Nova with the list of what changed, and Nova writes the log from that list rather than from a fresh calculation.

## Monday pacing, then the rest of the week

Nothing in the Pacing Plan sheet is edited from the room. The room guidelines treat it as read only, plan figures change only through a notice from finance, and the rules and every revision notice are kept in the pacing folder.

```mermaid
flowchart TD
  monday([An automation opens the<br>weekly pacing thread])
  pace["<b>Myco</b> dispositions each live<br>campaign by precedence from R1"]
  ok1["<b>Paid social manager</b> approves<br>before any change in Meta"]
  readout["<b>Nova</b> checks the readout and marks<br>lines outside the live set"]
  correct["<b>Marketing analyst</b><br>corrects the readout"]
  ceiling([Finance revises a ceiling])
  signoff["<b>Head of growth</b> signs off<br>a CPA exception"]
  rerun["<b>Myco</b> runs every affected<br>campaign again from R1"]
  realloc["<b>Myco</b> applies a reallocation<br>and works out each pace again"]
  ok2["<b>Paid social manager</b><br>approves the changes"]
  pool["<b>Myco</b> walks pool requests by<br>reference with a running total"]
  left([A request that does not fit is<br>left, and the walk goes on])
  ok3["<b>Head of growth</b><br>approves the allocation"]
  log["<b>Nova</b> writes the Pacing Log, then<br>the Notion page from the log"]
  ok4["<b>Paid social manager</b> approves<br>the log row and the page"]
  monday --> pace --> ok1 --> readout --> correct
  correct --> rerun & realloc
  ceiling --> rerun
  signoff --> rerun
  rerun & realloc --> ok2 --> pool
  pool -->|does not fit| left
  pool --> ok3 --> log --> ok4
  class pace,readout,rerun,realloc,pool,log agent
  class ok1,correct,signoff,ok2,ok3,ok4 person
  class monday,ceiling,left event
  classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
  classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
  classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42
```

| Stage | What happens | Who acts | Who decides |
| --- | --- | --- | --- |
| Weekly pacing | Each live campaign is dispositioned by precedence from R1, with pace and a new daily budget where one applies | Myco, from Meta Ads and the Pacing Plan | The paid social manager approves before any pause, resume or budget change |
| Readout check | The weekly readout is checked line by line, and lines about campaigns outside the live set are marked not eligible | Nova | The analyst corrects the readout |
| Ceiling revision | Every live campaign is run again from R1 against the revised ceilings | Myco | Finance issues the revision; the manager approves the changes |
| Reallocation | Budget moved between campaigns is applied and each campaign's pace worked out again | Myco | The manager approves |
| CPA sign-off | A campaign with a signed-off CPA exception is run again from R1 down, and a higher rule that pauses still wins | Myco | The head of growth signs off; the manager approves |
| Budget pool | Pool requests are walked by campaign reference with a running total, and a request that does not fit is left while the walk continues | Myco | The head of growth approves the allocation |
| Close-out | The week's changes are written to the Pacing Log, and the Notion page takes its figures from the log as written | Nova | The manager approves the log row and the page |

Stages of one week of Meta Ads pacing. Campaigns, ceilings and rules in this example are illustrative.

## Mid-week revisions and the shared pool

A ceiling revision or a CPA sign-off looks like a single change, and it is not. Myco runs every affected campaign again from the top of the precedence list, so a campaign whose CPA exception is now signed off can still pause because it is over its monthly ceiling. The thread shows which rule decided each campaign and what the answer was under the old figures.

The shared pool is walked in reference order with a running total. When a request does not fit what is left, it is marked as left with the pool exhausted, and the walk keeps going, because a smaller request further down may still fit. Nothing from the pool reaches Meta until the head of growth approves the list.

## What the checks catch

-   Readout lines about campaigns that are not live or not in this week's set, marked not eligible rather than wrong
-   A campaign resumed on its CPA sign-off while a higher rule still pauses it
-   A pool walk that stopped at the first request that did not fit
-   A close-out recalculated from Meta instead of read from the Pacing Log as written
-   Any edit to the Pacing Plan sheet, which stays read only

## What stays with people

-   Approving every pause, resume and budget change before it is made in Meta Ads
-   Revising a ceiling, which finance decides
-   Signing off a CPA exception and the pool allocation, both owned by the head of growth
-   Approving the week's log row and Notion page

## Integrations in this workflow

Kylon is not an ad platform or a bidding tool, and it does not replace Meta Ads Manager. Budgets stay in Meta and the record stays in the sheets, and the room holds the weekly coordination between them.

-   Google Drive
    
-   Google Sheets
    
-   Meta Ads
    
-   [Notion](https://kylon.io/integrations/notion)
-   [Slack](https://kylon.io/integrations/slack)

-   **Meta Ads** holds the live campaigns with their spend, status and daily budgets
-   **Google Sheets** holds the read-only Pacing Plan and the Pacing Log the week is written to
-   **Notion** keeps the weekly pacing page that the team and leadership read
-   **Google Drive** keeps the pacing rules, revision notices and the weekly readout
-   **Slack** is where campaign owners ask for pool budget and flag a launch or a pause

## Where to start

Pace one Monday in the room. Connect Meta Ads with a grant for the room and share the two sheets. The room guidelines need one rule before anything else: nothing pauses, resumes or changes budget in Meta until the paid social manager approves.

> “The first request that does not fit is not the end of the walk.”

## Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Set up our Meta Ads budget pacing desk in this Room. Take it one step at a time and wait for my OK before you move on.

1. Connect Google Drive, Google Sheets, Meta Ads, Notion and Slack. Tell me which ones still need connecting, and confirm that Meta Ads has a grant approved for this Room.
2. Ask me who works this desk: the paid social manager, the head of growth, the finance partner and the marketing analyst. Help me invite them to this Room.
3. Build a Pacing Review App with Campaign, Pace, Proposed and Status, one record per live campaign. Pull the live campaigns from Meta Ads and the monthly and CPA ceilings from the Pacing Plan sheet.
4. Disposition each live campaign by precedence: monthly ceiling first, CPA ceiling next, then pace-based daily budget moves, then hold. Show me which rule decided each campaign and flag any readout lines about campaigns outside the live set.
5. Propose every pause, resume and budget change but make nothing in Meta Ads and write nothing to the Pacing Log or Notion until the paid social manager approves. Route CPA exceptions to the head of growth first, and walk pool requests in reference order with a running total before the head of growth approves the list.
6. Write the precedence list, the read-only rule for the Pacing Plan sheet, and who approves each action into this Room's guideline so every Monday follows the same order.
7. After one clean Monday, offer to turn the weekly pacing thread into an Automation that opens at the time we set.

Before you start, ask me for our rules one at a time.

[Get started](https://app.kylon.io/sign-up)

Your first company harness. Where humans and agents run your business together.

[Get started](https://app.kylon.io/sign-up)

## More Use Cases

[View all](https://kylon.io/use-cases)

[

### Ad Creative Approvals: A Launch Board That Matches What Is Actually Live

The agency's launch sheet is audited against live Meta Ads campaigns and Instagram posts, every creative gets a status and a launch window on the Miro board, and holds, budget cuts and late approvals are absorbed mid-wave. The desk lead approves every board change.

Media, publishing & agenciesApprovals & reviewsMarketing operations

](https://kylon.io/use-cases/ad-creative-approvals)[

### Ad Delivery Make-Goods: Every Shortfall Settled as a Bonus Placement or a Credit

Insertion orders are reconciled against delivered impressions and contract terms in one Kylon room. Agents work Attio, the Notion delivery report and the Outlook contract threads, re-run bonus allocations when numbers change, and the ad operations lead approves every outcome.

Media, publishing & agenciesMarketing operations

](https://kylon.io/use-cases/ad-delivery-makegoods)
