Case Studies Tools & Automations Contact Download CV
← Tools & Automations
Automations & Systems

Campaign Tracker

An Airtable ops system for campaign planning: linked data, two daily automations, and an AI field that writes the next action for each campaign, with the decision logic kept out of the model.

Airtable Automations AI field agent Interface Designer Demo data · October 2026
Live views (read-only) · PDF
Campaign Performance Overview dashboard: total and active campaigns, budget in pipeline, average cost per conversion, total reach and average conversion rate
Performance dashboard. KPIs, filters by channel, type and status, and an At Risk list driven by the agent.
The problem

Campaign plans live in one place, content status in another. The question that matters, which campaign is about to launch without its content ready, gets answered too late, usually on launch day.

The tracker puts both in one base, links every content piece to its campaign, and lets the system do the checking: dates, readiness, alerts. People only step in when something actually needs a decision.

What I built

Five layers, one base

01 · Data model

Two linked tables, closed vocabularies

Campaigns and Content, linked one-to-many. Status, type, channel and format are fixed lists, not free text, so every filter, chart and agent read sees the same values. Campaigns follow one path: In Planning → Scheduled → Active → Completed.

Content Coordination view: campaigns with their linked content pieces, due dates and statuses
Content Coordination. Each campaign expands into its content pieces, with format, due date and status.
02 · Calculations

Readiness, conversion rate, cost per conversion

A conditional rollup counts the content pieces marked Ready against the total linked, which gives each campaign a readiness score. Conversion rate and cost per conversion are formulas; cost per conversion uses actual spend when it is recorded and falls back to budget when it isn't, so planned and live campaigns share one field without mixing up what the number means.

03 · Automations

Two daily runs, no manual status changes

Auto-activate runs every day at 14:00: it finds Scheduled campaigns whose launch date is today or earlier and moves them to Active. Overdue alert runs every day at 08:00: it finds content past its due date that isn't Ready or Published, and sends an email listing it only if that list isn't empty.

Airtable automation: daily trigger, find Scheduled campaigns with launch date on or before today, update each record's status
Auto-activate: daily trigger, find records, update status for each.
Airtable automation: daily trigger, find overdue content, send an email only if the list is not empty
Overdue alert: the email is behind a condition, so quiet days send nothing.
04 · AI agent

A Next Action field that reads one context block

An AI field writes the single most urgent action for each campaign, in one sentence. It doesn't read raw cells: a formula assembles a context block with status, launch date, days to launch, end date, readiness, a computed urgency flag, cost per conversion and notes, with an explicit value for every empty field (not set, no content linked, not available) so the model never has to guess what a blank means.

At Risk list: three campaigns with launch date, content readiness and the agent's next action
The At Risk list on the dashboard: one launched campaign with no content ready is urgent; the other two are flagged without inflating the tone.
05 · Interfaces

Three views for three questions

The dashboard answers how are we doing, the timeline answers what's running when, the content view answers what's left to produce. All three are shared as read-only live views.

Campaign planning timeline over six months, with each campaign's flight from launch to end date
Campaign Planning timeline: each bar runs from launch date to end date.
Decisions

Why it's built this way

Testing the agent

Three failures, three fixes

Before trusting the agent, I ran it against the edge cases in the data and read every output against the record behind it.

1 · It didn't read status as a state

A completed campaign with no linked content was flagged as something to fix, as if it were still running. The real issue wasn't operational: the content had simply never been tracked.

Fix: explicit rules separating operational issues from data gaps. A completed campaign with no tracked content now returns Data gap: no content tracked for this campaign, marked as not urgent; a completed campaign with consistent data returns exactly No action needed.

2 · Urgency drifted, even with a rule

The first version had no sense of urgency at all: every gap got the same weight. I added a rule to the prompt, urgent only within 14 days of launch with content not ready, and the model still labelled a campaign 51 days out as urgent.

Fix: the rule moved out of the prompt. A formula computes days to launch and an URGENT / not urgent flag; the prompt tells the agent to use that line exactly as given. The 51-day campaign now reads as what it is: behind, not urgent.

3 · Missing numbers looked like problems

Campaigns that haven't launched have no cost per conversion yet. The context now says so explicitly, and a rule tells the agent not to treat a missing cost per conversion as an issue.

The output is limited to one sentence and to the fields the agent is given: it isn't allowed to invent facts.

Next Action field configuration: the prompt with the Agent Context reference and the rules, next to a preview output
The final prompt, with the rules and a preview of the output for a campaign five months from launch.
What's next

The base is ready for real spend data: Spend to Date already drives cost per conversion, which falls back to budget when no spend is recorded. The next step is a sync that pulls an Ads Manager export into the base through the Airtable API.

Built with Airtable: linked tables, formulas, conditional rollups, scheduled automations, AI fields and Interface Designer. All campaign data is fictional and exists only to exercise the system.

Let's talk

Need a system like this?

If a team is chasing status in spreadsheets and inboxes, I can build the base, the automations and the views around it.

Get in touch →