A marketing data stack is the set of tools that lets an AI work with your marketing numbers safely. It does six jobs: collect, store, run on a schedule, version, connect and check. The rule: the AI reads everything from a copy you own, and changes only a short written list of things, one approved step at a time.
Most teams start the same way. They hand an AI assistant the keys to the ad accounts and ask which campaigns made money last quarter.
It answers in ten seconds. It sounds sure. Nobody can check it.
Then someone asks it to pause the losers. Now it spends real money on a guess.
A marketing data stack is the set of tools that lets an AI read your numbers and act on them without guessing. We describe it by job, not by vendor. Vendors change every year, and the jobs do not.
The whole stack hangs on one rule. We call it the Read-Wide Rule: the AI reads everything from a copy you own, and changes things only through one door, one approved step at a time.
This is the plumbing under the job in what a marketing engineer is. It is not a warehouse course for data engineers.
The AI reads wide from your copy and writes narrow through one door
| Read side (wide) | Write side (narrow) |
|---|---|
| Everything, from one copy you own | Only a short written list of actions |
| Fed by scheduled jobs | Sent through one logged door |
| Joined on shared keys | Caps enforced in code, not in a prompt |
| Mistakes cost a wrong answer | Mistakes cost money or a customer |
Read-Wide Rule, Anar
Every marketing data stack does six jobs, whatever the logos say. Name the jobs first and the tool choice gets easy.
Collect means copying data out of the ad platforms, analytics, the CRM and payments, a step data people call ETL. Store means keeping one copy you own in a warehouse, a database built for questions across many sources.
Run on a schedule means the work happens while you sleep. Version means every script, prompt and setting keeps its history.
Connect is the one door every outside call goes through. Check means watching the other five and telling you when one breaks.
Why jobs and not tools? Tools get bought, renamed and shut down. A job outlives all three.
Your first stack does not even need software. The Team Topologies authors say the simplest platform can be a list on a wiki page.
So write the six jobs down, with a tool and an owner next to each. That page is version one. No code yet.
Every marketing data stack does the same six jobs
| Job | What it does | You lack it when |
|---|---|---|
| Collect | Copies data out of ad platforms, analytics, CRM and payments | Someone exports a spreadsheet every Monday |
| Store | Keeps one copy you own, joined on shared keys | Two people get two numbers for one question |
| Run on a schedule | Does the work at a set time, without you | The report waits until someone remembers |
| Version | Keeps every script, prompt and setting with its history | Nobody knows what changed the week results moved |
| Connect | One door for every outside call: keys, caps, log | API keys sit in prompts and chat threads |
| Check | Watches the other five and raises an alarm | Sales finds the broken form on Monday |
Anar's six-job map. First version can be a one-page list, after the thinnest viable platform in Team Topologies (Skelton and Pais)
Your first stack can be a single page
Our sequence, after the thinnest viable platform in Team Topologies and the single organizing system in Building a Second Brain (Forte)
Write the stack on one page and the gaps show up at once

Example page built for this article with a made-up brand.
Split every AI connection to your marketing into two sides. Read wide: the AI may query everything, but only from one copy you own, fed by scheduled jobs and joined on shared keys such as date and customer ID, never by live pulls from the ad platforms. Write narrow: the AI may change only a short written list of things, through one logged door that holds the keys, enforces caps in code and has an off switch.
Every write connection climbs four rungs, one at a time, after a clean log: read, draft, capped, live. Anything that spends past a cap or reaches a customer waits for a named person.
The read side has one rule: the AI asks your copy, never the live ad platforms. Three reasons.
First, platforms ration their APIs, the lines programs use to talk to them. Pull ninety days of rows for every question and you burn the whole daily allowance just reading.
Second, an AI holds only so much in its working memory. Paste in thousands of ad rows, join them to analytics by hand, and you get a confident answer built on a bad join.
Third, two people asking the same question should get the same number. That only happens when both read the same copy.
The copy needs shared keys. Data modelers call them conforming dimensions: fields such as date and customer ID that mean the same thing in every table.
With shared keys, you can follow one buyer from ad click to closed deal. Without them, you guess.
Storage is the easy part now. The hard part is asking a question worth answering.
Live platform pulls give fast answers nobody can check
| AI reads the live platforms | AI reads your copy |
|---|---|
| Burns the daily API allowance on reading | Reads as often as you like |
| Thousands of rows crammed into working memory | Asks one query and gets one table |
| Joins sources by hand, often wrongly | Joins on shared keys |
| Two people, two numbers | Two people, one number |
Anar's read-side rule
Three shared keys let you follow one buyer from click to deal
| Shared key | Found in | Lets you join |
|---|---|---|
| Date | Every source | Spend, sessions, leads and deals on the same day |
| Customer or contact ID | Forms, CRM, payments | A lead to the deal and the revenue it became |
| Campaign ID | Ad platforms, URL tags, CRM source | A deal back to the ad that started it |
Conforming dimensions (date first) from How to Measure Anything in Cybersecurity Risk, Hubbard and Seiersen. Marketing keys are our reading
A stack earns its keep while you are at lunch. That takes a clock: a scheduled job that collects, stores and checks at the same time every day.
Order matters. Each step runs only after the step before it finished cleanly, so a failed import never feeds a report.
Workflow tools call that chain a directed acyclic graph. In plain words, work only moves forward, and only on good input.
Then make the stack report its own breaks. Who usually finds a broken lead form? Sales, on Monday, when the pipeline looks thin.
The Accelerate research team studied how software teams learn about failures. Some heard it from customers, others from their own alerts on a threshold or a rate of change. The alerts predicted better software delivery.
We apply the same logic to marketing. For example, a threshold alert fires when fewer than ten leads arrive in a day. A rate-of-change alert fires when leads drop by half against the same weekday last week.
A dashboard you have to remember to open is not a check. It is a hope.
Each step runs only after the one before it succeeds
Our run order. Upstream-first rule from Prompt Engineering for LLMs (Berryman and Ziegler)
Alerts from your own systems beat hearing it from customers
| How you find out | Software example (book) | Marketing example (ours) |
|---|---|---|
| A customer or another team tells you | Customer reports, the operations center | Sales says the pipeline looks thin |
| Threshold alert | CPU exceeds 90% | Fewer than ten leads in a day |
| Rate-of-change alert | CPU up 25% in ten minutes | Leads down by half against the same weekday last week |
Accelerate (Forsgren, Humble, Kim): the last two rows formed the proactive notification construct that predicted software delivery performance. Marketing column is our reading
Version means every change has a date, an author and a way back. Most marketing teams skip this job, then miss it the week cost per lead jumps.
The same research had a surprise. Keeping configuration in version control was more strongly tied to delivery performance than keeping the code there.
Marketing is mostly configuration. Tracking tags, UTM rules, automation triggers, audience definitions and AI prompts are all settings, and settings drift.
So the stack keeps a written history of each one. When results move, you ask what changed that week. You get an answer in a minute, not a meeting.
The AI's own work gets logged too. Chip Huyen's rule in AI Engineering is to log everything: the model, its settings, the prompt, the output and every tool it called.
You never know which line you need until something goes wrong. So read a few real outputs by hand. Do it daily.
Logs nobody reads are just a storage bill. The growth repo shows one folder layout for all of it.
Marketing is mostly settings, and settings drift
| Version it | Log it, for every AI call |
|---|---|
| Tracking tags and conversion settings | The model and its settings |
| UTM and naming rules | The prompt template and the final prompt |
| Automation triggers and audience definitions | The output, and any steps in between |
| AI prompts and agent rules | Every tool call and what it returned |
| The action list and the caps | Start, end and crash times, with an ID |
Version column: Accelerate found configuration in version control more tied to delivery performance than code. Log column: AI Engineering (Huyen)
An AI may change only what a written list allows, and each item sits on one of four rungs. A read tool lets the AI look. A write tool lets it act: pause, upload, send, spend.
Where does each action go? The textbook that coined marketing engineering has the rule. Automate a decision when a wrong call is cheap, like a keyword bid, and keep a person in it when a wrong call is expensive.
Rung one is read: reports and queries only. Rung two is draft: the AI may write, but the work lands somewhere harmless, like a paused ad or a proposed change you confirm.
Rung three is capped: live changes inside limits enforced in code, such as a budget move under a set amount. Rung four is live, and a named person approves each change that spends money or reaches a customer.
Every connection starts on rung one, even the ones a vendor calls safe. Climb a rung only after a clean log on the rung below. No exceptions.
Make stopping easier than starting. Good experiment platforms let only the owner start a test, but anyone can stop one. Give every AI connection the same off switch.
One mix is never allowed: private data, text written by strangers, and a way to send data out, all in one AI job. Simon Willison calls that mix the lethal trifecta.
With that mix, one planted line in a form field can send your CRM to a stranger. Keep at least one of the three out of every job, and keep the most private records on a local model.

Every AI connection starts on the bottom rung
Read-Wide Rule, Anar. Read and write actions after AI Engineering (Huyen)
The cost of a wrong call decides the rung
Our placements, using the textbook's rule: automate only when a wrong decision is cheap
| Action | Cost if wrong | Highest rung we allow |
|---|---|---|
| Pull last week's numbers | A wrong answer you can check | Read |
| Upload a new ad | Nothing, if it lands paused | Draft |
| Pause an ad | Small, easy to undo | Capped |
| Move budget between ad sets | Money, inside a set cap | Capped |
| Raise total spend, change a price, email the list | Money or a customer, hard to undo | Live, with a person |
Rule from Principles of Marketing Engineering and Analytics (Lilien, Rangaswamy, De Bruyn). Anyone can stop, only owners start: Trustworthy Online Controlled Experiments. Placements are Anar's
Never give one AI job all three of these
Simon Willison, the lethal trifecta. Grid is Anar's; assumes text written by strangers is present
Connect is a door: one small service between the AI and everything outside. It holds the keys, checks the list, enforces the caps and writes the log.
Why one door? A rule in a prompt is a suggestion. A rule in the door's code is a limit.
Keys never sit in a prompt or a chat. They live in one secrets file or the platform's secret store, and only the door reads them.
The door also counts cost per call, which is how you keep AI token spend from surprising you.
Add a kill switch: one setting in the door that turns every write off at once. Test it before you need it. Fire drills beat fires.
That door, plus the list and the caps, is the core of an agent harness. The model thinks. The door protects.
One door checks every outside call before it goes out
Our door design. Gateway in place of handing out raw keys: AI Engineering (Huyen)
A limit in the door's code holds even when the agent asks for more

Example page built for this article with a made-up brand.
Our default is short: buy the read side, build the write side. Moving data is a solved problem, and a homemade version will be worse.
Writing is where your rules live. Which ads may pause, which cap holds, what needs a person: no vendor knows that, so you write it.
In Traction, Gino Wickman tells a story about building too early. He paid a firm $45,000 over months for custom software, scrapped it, and switched to a $500 product off the shelf. The mistake, by his own account: he never studied the process first.
So do the job by hand before you automate it. We run a new report by hand for three weeks, then automate the version that survived. Boring, and a lot cheaper than $45,000.
How to spend six months on a stack nobody uses, in four easy steps. Step one: buy every tool on a top-fifty list.
Step two: build a custom dashboard before anyone asks a question. Step three: give the AI admin keys so it can help.
Step four: discover the warehouse holds three definitions of a lead. Congratulations, you built a very expensive way to argue.
Before you sign with any bundled vendor, check one thing. Can you export your data and your scripts the day you leave?
Buy the jobs that move data, build the ones that hold your rules
| Job | Our default | Why |
|---|---|---|
| Collect | Buy | Exports and loaders already exist |
| Store | Buy | Nobody wins by hosting their own warehouse |
| Run on a schedule | Buy | Rent the clock, write the jobs |
| Version | Buy | A free code host covers this size of work |
| Connect | Build the rules | Rent the door, write the action list and caps yourself |
| Check | Build the alarms | Only you know what normal looks like |
Anar's default. Do it by hand first: Systemology (Jenyns)
A $45,000 custom build lost to a $500 product
Traction, Gino Wickman: his own account of the $45,000 Mistake
Start with collect and store, and nothing else. Point the AI at the copy and ask the questions you already ask every Monday.
Add the schedule and the checks when a question repeats every week. Add the door and the ladder when an action repeats.
The first thing worth building on the copy is the growth cockpit, a weekly memo that replaces the status meeting. The most valuable early write is usually sending real outcomes back to the ad platforms.
Data in a dozen tools today? Our piece on fragmented data explains why you search it where it lives before you move anything.
Each job should arrive because a system asked for it. A vendor demo is not a request.
A stack built ahead of its questions is a museum.
Vendor names and prices change faster than this page. The box below holds today's examples, with the date we checked them.
Each job arrives when a system asks for it
Anar's sequence. Keep it simple first: How to Measure Anything in Cybersecurity Risk
The prompt below maps your tools to the six jobs and puts every AI connection on a rung. Paste it into your preferred AI and answer its five questions.
This week: run it, then turn on collect and store for your two biggest sources. Put every AI connection on rung one.
Next week, ask your Monday questions of the copy. Climb a rung only when the log is clean.
Want the first system built next to you? That is our marketing engineering work.
Rather build it yourself? Our training runs on live work.
Remember the AI that answered in ten seconds? With a copy to read and a door to write through, it can show its work.
Give it a library card long before you give it a credit card.
Paste into your preferred AI. It asks five questions, maps your tools to the six jobs, puts each connection on a rung, and lists what to buy and build.
Act as a careful reviewer of a marketing data stack. Use only my answers and the rules below. Never invent a tool, a number or a price. If you need one, ask me, or read the vendor's own page if you can browse, and say which you did. Ask one question at a time, show the example, and wait: 1. Which tools hold your marketing data? (Example: an ad account, web analytics, a CRM, a payment tool) 2. Where do your AI's answers about numbers come from today? (Example: I paste exports into a chat) 3. Which questions do you ask every week? (Example: cost per qualified lead by campaign) 4. List every AI connection or automation that can change something, and what it can change. (Example: an agent that pauses ads) 5. Who approves changes that spend money or reach a customer? (Example: me) Rules: - Six jobs: collect, store, run on a schedule, version, connect, check. Map each tool to a job. List every job with no tool. - Read side: the AI answers from one copy we own, joined on shared keys (date, customer ID, campaign ID). No live platform pulls for analysis. - Write side: every action sits on one rung. 1 read. 2 draft (lands paused or as a proposal). 3 capped (live inside limits enforced in code). 4 live (a named person approves each change). - Every new connection starts on rung 1. Climb one rung only after a clean log on the rung below. - Cheap, easy-to-undo actions may run alone. Anything that spends past a cap or reaches a customer needs a person. - Never combine private data, text written by strangers and a way to send data out in one AI job. - Keys sit behind one door that logs every call and has an off switch. Never in a prompt. - Buy collect and store. Build the action list, the caps and the approval line. - If you can browse, check the vendors' current docs for limits that changed and tell me. Show your mapping, then use exactly this format: JOBS COVERED: JOBS MISSING: EACH CONNECTION AND ITS RUNG: RULE BREAKS: BUY: BUILD: NEXT THREE ACTIONS:
Bring one number you want to move. We will tell you which job to set up first and how you would know it worked.
See how we build them →Want to build it yourself? See how we train marketing engineers.