Written by Uptimal, the team that builds and operates Upbuild and runs marketing analytics for multinational clients across the globe. Everything below reflects how the product actually works, including the parts that are deliberately boring.
The analytics lead of a group has one job that never quite finishes: getting every market's media data into the company warehouse, next to sales and CRM, so the board deck and the market reviews come from one place. The platforms are the same everywhere. The accounts are not. Many markets, agencies for some of them, a brand acquired with its own ad accounts, and a new market every year or so. The pipeline that does this is usually the most fragile thing in the stack, and the person who built it has usually left.
This is what that job looks like when the export is set up by prompting, with AI Data Exports on the Upbuild platform. The scene is invented; the behaviour is how the product works.
The prompt, and what it turns into
Elena runs group analytics for a consumer brand sold across Europe. Spain, the UK and Germany are run in-house, the rest by agencies, and finance wants media spend in the same warehouse as sales and CRM, by market and by campaign. She opens Upbuild and writes one line:
"Every day at 06:00, all our Google Ads and Meta accounts, campaign level, into our warehouse. Load the last two years first."
Upbuild AI reads that as the four parts of an export. The data: campaign-level spend, impressions, clicks and conversions by day. The accounts: every Google Ads and Meta account the organisation has shared with her. The schedule: 06:00 every day, in the group's own timezone rather than in UTC. The destination: a table in the warehouse, BigQuery in Elena's case, in a dataset the data team already owns. Before anything is written, she sees a preview of the columns the table will get, so the team can check names and types against the sales and CRM tables. Then she saves it, and the history starts loading.
Every row carries the account ID, the account name and the time it was collected. That is what lets every market share one table: a query groups by account name, and the group view and the market view come from the same rows.
Two years of history, then this morning
The backfill loads the two years first, account by account. Each account is handled on its own, so a Meta account in Portugal whose login has expired does not hold up the Spanish Google Ads accounts. When the history is in, the daily run takes over.
The update rule matters more than it sounds. Ad platforms restate recent days: conversions land late, spend is adjusted, and a Tuesday that looked closed on Wednesday reads differently on Friday. The daily run reads the last few days again, updates the rows already in the table and adds new rows only for days that are new. A restated Tuesday updates the existing Tuesday. It never appears twice.
Later, Elena adds a second schedule, again by prompting:
"Also on the first of the month at 07:00, reload the last three months."
That is a second line inside the same export, with its own time and date range, not a second export to look after.
The run email, and the Retry button
At about 06:20 there is an email. Most days it says the run finished and how many rows landed. Some days it lists the accounts that did not come through, in the platform's own words: a Meta login that expired in Portugal, a Google Ads account the Italian agency renamed and unshared. The rest of the group's data is already in the table, because the run did not wait for the stragglers. A run that fails completely changes nothing in the table.
Elena forwards the email to the market, the market fixes the login, and she presses Retry. Retry runs only the accounts that failed, not the whole group. Nobody rebuilds anything, and nobody in finance sees a half-loaded day.
New accounts need no ticket either. Instead of naming accounts one by one, the export can follow a rule, such as every account whose name starts with the brand code. When the Nordics launch next spring and their accounts are shared with the organisation, they are picked up before the next run.
Dashboards, exports and alerts, built by asking.
Upbuild is an AI platform for marketing data: AI Dashboards, AI Insights, AI Data Exports and AI Alerts, with a read-only MCP server as part of its toolset that brings your accounts into Claude, ChatGPT, Copilot Studio and Gemini Enterprise. Every tool, live data. Free for 14 days on the connector and 7 days on the platform.
Get a demo Start free →Numbered versions, so the pipeline can be explained
Six months on, someone asks why the table has an ad group column it did not have in March. The export's history answers: version 4, changed by Elena in April, "add ad group level for the UK accounts". Every change to an export is saved as a numbered version, with who made it and what changed. Looking at an older version changes nothing until someone presses Restore, and a restore is recorded as a new version rather than a silent rewind. The pipeline is a definition you can read, not a conversation somebody had once.
The same history covers destinations. When finance asks for a copy of the table in the shared spreadsheet, and marketing operations wants files in cloud storage for its own tooling, Elena writes:
"Also drop a copy in cloud storage and in the finance spreadsheet after every run."
Same export, one more version, three destinations: the warehouse table, a folder in cloud storage and a tab in the spreadsheet.
Who can change it
Everyone signs in as themselves with Google or Microsoft. An admin decides who joins the organisation and shares accounts one person and one account at a time. The market analysts are editors: they can change an export by prompting, and only for the accounts they have been given. The German analyst can add a column to the German rows; she cannot see the Spanish accounts, and neither can any export she builds. An admin sees every export in the organisation, who set it up, which version is running and when it last ran.
Access leaves with the person. When that analyst moves on, the admin removes her and her access ends. The export she changed stays, running for whoever takes over, because exports, connections, dashboards and alerts belong to the organisation and not to a login. And nothing an export does can change a budget, a campaign, a tag or an audience: the ad platforms are read-only throughout, and the only write is the table you scheduled yourself.
The warehouse side is just as contained. Upbuild connects to your warehouse, cloud storage or spreadsheet with your own login, with a key from your IT team, or with access to only the dataset or folder you choose. It creates the table if it is missing, and it never deletes a table it did not create.
Where the table goes next
Once the media data sits next to sales and CRM, the interesting work starts: cost per order by market with real margins, the media mix behind a quarter's growth, the questions the board asks. The same connected accounts also feed AI Dashboards for the market reviews, refreshed on their own cadence and shared by a link that needs no account and no platform login, and AI Insights for the questions in between. The number a country manager reads at 09:00 and the number in the warehouse come from the same accounts, on the same morning.
If you would rather see the whole loop than read about it, get a demo and see the platform live.
Frequently asked questions
Can one export cover every market's Google Ads and Meta accounts?
Yes. One export runs for every account you point it at, or for every account that matches a rule such as a name prefix, and lands them in one table. Every row carries the account ID, the account name and the time it was collected, so markets can be told apart with one column.
What happens when a platform restates a past day?
The scheduled run reads recent days again and updates the rows already in the table instead of adding them a second time. New days are added as new rows. A restated day updates in place, so the warehouse never counts a week twice.
What happens when one account fails during the run?
Each account is handled on its own, so the others land as normal. When the run ends, the email lists any accounts that did not come through, in the platform's own words, and Retry runs just those. A run that fails completely changes nothing in your table.
Who can change an export?
An editor can change any export they can see, by prompting, and only for the accounts an admin has shared with them. An admin sees every export in the organisation. Every change is saved as a numbered version with who made it and what changed, and any version can be restored.