Campaign Budget Close: Spend, Return and Agency Fees That Add Up Each Month
Budget variance, next month's allocation, the agency invoice and attribution changes run through one Kylon room. Agents compare Meta Ads spend with the Airtable plan and HubSpot deals, and finance approves every allocation and invoice line.
Spend in one tool, plan in another, return in a third
Closing a month of campaign spend means answering three questions for every campaign: did it spend what the plan said, what did it return in closed deals, and is the agency invoice right for it. Then next month's budget is allocated, ranked by return, under a cap finance sets. Every one of those answers depends on numbers that are still moving when the month closes.
The plan sits in Airtable, paid spend in Meta Ads, email results in Mailchimp, closed deals and their campaign attribution in HubSpot, and the agency agreement and invoices in Google Drive. A late deal shifts one campaign's return. A change to the attribution window shifts all of them. A disputed invoice line comes back as a credit two weeks later, after the totals already went to finance.
Who works in the room
People
Marketing operations manager
Owns the campaign plan in Airtable and runs the monthly close
Finance business partner
Approves next month's allocation and every agency invoice line
Paid social lead
Works with the agency on Meta Ads and confirms campaign changes
Agency account team
Runs the paid campaigns, sets budgets in the ad account and issues the monthly invoice
Agents

MycoBudget analyst
Classifies each campaign's variance against plan, computes return from HubSpot deals, and proposes next month's allocation within the cap

AdaInvoice auditor
Checks each agency invoice line against Meta Ads spend and the agreed fee, and lists the lines to approve, correct or remove
Google Drive
Meta Ads
Airtable
FinAgency and channel notes
Drafts the budget letter and dispute notes to the agency, writes the channel notes once finance approves, and reads campaign news in Slack
Marketing operations and finance share one Kylon room for the monthly close. Myco is the default agent, so a question about a campaign's variance or return goes to it. Ada owns the agency invoice, and Fin owns the channel notes and anything addressed to the agency. When Ada removes an invoice line, it mentions Fin with the line and the reason, and Fin drafts the note to the agency for the marketing operations manager to send. Meta Ads is read-only for agents in this room, and the agency changes budgets in the ad account once the allocation is approved.
Closing the month, campaign by campaign
The variance thresholds, the allocation rules and the cap sit in the room guidelines. Finance has the last word on every figure that turns into money.
- Agent works
- Person decides
- Arrives or gets recorded
flowchart TD
start([A month of campaign spend closes])
variance["<b>Myco</b> classifies each campaign's<br>spend against plan"]
alloc["<b>Myco</b> ranks next month's budget<br>by return within the cap"]
allocok["<b>Finance business partner</b><br>approves the allocation"]
audit["<b>Ada</b> checks each invoice line<br>against spend and the agreed fee"]
listok["<b>Finance</b> approves the list<br>before the invoice is paid"]
dispute["<b>Fin</b> drafts the dispute note<br>to the agency"]
window["<b>Marketing operations manager</b><br>confirms a new attribution window"]
send["<b>Marketing operations manager</b><br>sends it"]
recompute["<b>Myco</b> recomputes return for every<br>campaign that ever had a deal"]
credit([The agency issues a credit])
again([The allocation goes back<br>to finance for approval])
accept["<b>Finance</b> accepts each credit"]
notes["<b>Fin</b> writes one note per channel,<br>totals summed from its campaigns"]
signoff["<b>Finance</b> signs off the totals"]
start --> variance --> alloc --> allocok --> audit
audit --> listok
audit -->|removed line| dispute
listok --> window --> recompute
dispute --> send --> credit --> accept
recompute --> again
recompute & accept --> notes --> signoff
class variance,alloc,audit,dispute,recompute,notes agent
class allocok,listok,window,send,accept,signoff person
class start,credit,again 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 |
|---|---|---|---|
| Variance | Each campaign's spend is compared with plan and classified, and on-target campaigns stay off the variance list | Myco, from Meta Ads and Airtable | The marketing operations manager confirms the classes |
| Allocation | Next month's budget is ranked by return within the cap, and major underspends carry budget forward | Myco | The finance business partner approves the allocation |
| Agency invoice | Each line is checked against Meta Ads spend and the agreed fee, then approved, corrected or removed | Ada | Finance approves the list before the invoice is paid |
| Disputes and credit | Disputed lines are raised with the agency and credits applied when they arrive | Ada, then Fin | Finance accepts each credit |
| Attribution change | Return is recomputed at the new window for every campaign that ever had a deal attributed | Myco | The marketing operations manager confirms the window |
| Channel notes | One note per channel with spend, return and carry-forward, its totals summed from the listed campaigns | Fin | Finance signs off the totals |
The attribution window moves after the numbers went out
A change to the attribution window looks like a reporting tweak and touches every campaign. Myco recomputes return for every campaign that has ever had a HubSpot deal attributed to it, including the ones whose return falls to zero under the new window, because those are the ones a ranked allocation quietly drops. The allocation is then proposed again and finance approves it again.
Late reassessments and credits work the same way. A deal that closes after the cut-off moves one campaign's return, and Myco re-ranks only what that change touches. When the agency issues a credit for a disputed line, Ada re-checks the approved list: removed lines stay removed, unchanged lines stay approved, and every total is summed from the listed lines, never typed in beside them.
What the checks catch
- A channel total that does not equal the sum of the campaigns listed under it
- A campaign whose return drops to zero under a new window and falls out of the recompute
- An approved invoice list that drops unchanged lines along with the removed ones
- A major underspend with no carried-forward amount
- An on-target campaign listed among the variances
What stays with people
- Approving next month's allocation and every agency invoice line
- Choosing the attribution window
- Sending notes to the agency, which Fin prepares as Gmail drafts
- Changing budgets in Meta Ads, which the agency does once finance approves the allocation
Integrations in this workflow
Kylon is not a marketing analytics tool and it does not replace one. It sits across the ad account, the CRM, the email tool and the plan, and keeps the month's coordination in one room.
- Airtable holds the campaign plan, variance classes, the allocation and the channel notes
- Meta Ads is read for spend and delivery per campaign, and agents do not change budgets there
- HubSpot holds closed deals and the campaigns they are attributed to
- Mailchimp holds the email campaigns whose results feed the email channel note
- Google Drive keeps the agency agreement, the invoices and the budget rules
- Gmail carries the agency thread, with notes drafted for a person to send
- Slack is where the paid social lead and the agency post campaign changes
Where to start
Start with one month and the paid social channel. Connect the Airtable plan and the Meta Ads account, and write one rule in the room guidelines: every total is the sum of the campaigns listed under it, and finance approves the allocation before anyone touches a budget.
“A ranked list is only fair if every campaign that ever earned a deal is on it.”
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 our campaign budget close desk in this Room. Take it one step at a time and wait for my OK before you move on. 1. Connect Airtable, Gmail, Google Drive, HubSpot, Mailchimp, Meta Ads and Slack. Tell me which ones still need connecting. 2. Ask me who works this desk: the marketing operations manager, the finance business partner, the paid social lead and the agency account team. Help me invite them to this Room. 3. Build a Campaign Plan App with Campaign, Variance, October and Status columns, one record per campaign. Fill it from the open plan in Airtable. 4. For each campaign, compare spend from Meta Ads with the plan in Airtable, compute return from HubSpot deals, and check each agency invoice line against Meta Ads spend and the agreed fee in Google Drive. Show me the campaigns with variances, the lines to approve or correct, and any channel total that does not equal the sum of its listed campaigns. 5. Draft the budget letter and dispute notes to the agency as Gmail drafts for the marketing operations manager to send. Draft channel notes in Airtable only after the finance business partner approves the allocation and every agency invoice line. 6. Write our variance thresholds, our allocation rules, the threshold we set and who approves what into this Room's guideline so every monthly close follows the same order. 7. After one clean close, offer to turn the monthly variance and recompute steps into an Automation. Before you start, ask me for our rules one at a time.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allProperty Tax Appeals: The Right Parcels Filed Within Each County's Capacity
Parcel triage, filing allocation, manifest review, comparable corrections and appeal letters run through one Kylon room. Agents compute each county's median and check every filing against Airtable, and the tax manager approves each change and each letter.
Utility Bill Validation: Every Bill Checked Against Tariff, Meter and Period Days
Each utility bill is checked against the site register, the tariff in force on each day and any meter swap. Agents do the arithmetic and draft the replies in one Kylon room, and the utilities lead approves every disposition and every message.





