← Back to Frugle
Campaign types (
Campaign statuses (
Glossary
What every column and value in a Frugle export means.
A Frugle export normally has one row per campaign per month. Performance Max campaigns have one row per serving channel per month. The numbers come straight from the Google Ads API with no reprocessing beyond converting cost out of micros, so the vocabulary below is Google's, not ours. If a figure here disagrees with the Google Ads UI, the cause is almost always one of the caveats in reading the numbers safely.
The columns §
month-
The month the activity happened, as
YYYY-MM. Frugle reports monthly because Google keeps monthly data for roughly eleven years but discards daily and weekly detail after 37 months — monthly is the only granularity that covers a full account history. campaign_id- Google's numeric ID for the campaign. Stable forever, including after the campaign is renamed or removed, so this is the column to join on. It is long enough that spreadsheets may show it in scientific notation — import it as text.
campaign_name- The campaign's current name, not its name during that month. Renaming a campaign rewrites its whole history in this column.
status- The campaign's status right now, not during that month — see campaign statuses. A paused or removed campaign with spend in an earlier month is entirely normal.
channel_type- The campaign type, except for Performance Max where it identifies the serving channel — see campaign types. It is not a placement-level breakdown.
cost-
Money spent that month, in the account's own currency (the
currencycolumn). Google reports cost in "micros" — millionths of a currency unit — which is why the value carries six decimal places. No currency conversion is applied. impressions- Times an ad from the campaign was shown.
clicks- Clicks Google billed for. Not the same as sessions or visitors in your analytics tool, and it will not match them.
conversions- Conversions Google attributed to the campaign. Often fractional, because attribution models split credit for one conversion across several campaigns. Counts against the date Google attributes the conversion to, which can differ from the click date.
conversions_value-
The total value of those conversions — but only if the account sends
values with its conversions. Accounts that don't are often configured to
report a value of 1 per conversion, which makes this column mirror
conversionsinstead of representing revenue. currency- The account's billing currency, repeated on every row so a file is readable on its own. See the warning about mixed currencies under reading the numbers safely.
Campaign types (channel_type) §
Google calls this the advertising channel type. It is a fixed list, so the table below is every value the column can hold. The "how often you'll see it" column is a rough guide for a typical advertiser, not anything Google publishes.
| Value in CSV | Shown as | What it means | How often you'll see it |
|---|---|---|---|
| SEARCH | Search | Text ads on Google search results. Includes campaigns with Display expansion bundled in, so some of this spend can land on Display inventory. | Very common |
| PERFORMANCE_MAX | Performance Max | Google's fully automated type. This aggregate label is documented
for completeness but is replaced in new exports by the additive
pmax-* serving-channel rows below. |
Very common |
| DISPLAY | Display | Image and responsive ads on the Google Display Network only. | Common |
| VIDEO | Video | Video ads, overwhelmingly on YouTube. | Common |
| SHOPPING | Shopping | Product listings on the Shopping tab and in search results, fed by a Merchant Center product feed. | Common for retail |
| DEMAND_GEN | Demand Gen | Visual, social-style ads across YouTube, Discover and Gmail. The successor to Discovery campaigns, so older history may show spend under a different type. | Increasingly common |
| LOCAL_SERVICES | Local Services | Local Services Ads — the "Google Guaranteed" listings for trades and professional services, billed per lead rather than per click. | Common in services |
| MULTI_CHANNEL | App | App install and app engagement campaigns, which promote an app across Search, Play, YouTube and Display at once. | App advertisers |
| SMART | Smart | Smart campaigns — the simplified self-serve product for small businesses. Largely superseded, but existing ones still run. | Occasional |
| HOTEL | Hotel | Hotel Ads, priced from room rates and availability feeds. | Travel only |
| TRAVEL | Travel | Travel campaigns, including Things to do / travel activities. | Travel only |
| LOCAL | Local (legacy) | The old standalone Local campaign type for driving store visits. Folded into Performance Max; appears only in historical rows. | Historical |
| UNKNOWN | Other | A real, expected value: Google introduced a campaign type newer than the API version Frugle reads. The spend figure is still correct — only the label is missing. | Rare but expected |
| UNSPECIFIED | Not set | Google returned no channel type at all for the campaign. | Very rare |
Performance Max is split by serving channel.
pmax-search, pmax-search-partners,
pmax-display, pmax-youtube,
pmax-google-tv, pmax-google-owned-channels,
pmax-gmail, pmax-discover, and
pmax-maps are additive children of the campaign-month total.
Google network value CONTENT is labelled
pmax-display. pmax-mixed,
pmax-unknown, and pmax-unspecified preserve rows
Google does not assign to one named channel. This is channel-level spend,
not placement-level spend.
Campaign statuses (status) §
| Value in CSV | What it means |
|---|---|
| ENABLED | Active and able to serve today. |
| PAUSED | Not serving, but intact and resumable. |
| REMOVED | Deleted. Its historical spend still reports — which is why a deleted campaign appears in your export. |
| UNKNOWN | A status newer than the API version Frugle reads. |
| UNSPECIFIED | Google returned no status for the campaign. |
Reading the numbers safely §
-
Don't sum cost across currencies. Each row is in its own
account's currency and Frugle applies no exchange rates. Adding a
USDrow to aEURrow produces a meaningless number. Check thecurrencycolumn before totalling anything that spans accounts. -
Status describes today, spend describes then. Filtering
to
ENABLEDsilently drops the historical spend of every campaign since paused or deleted, which is usually not what you want when reconstructing a budget. - Conversion columns are not comparable across accounts. They depend entirely on which conversion actions each account defines, its attribution model, and its conversion window. Two accounts counting different things will still both report a number here.
-
A jump in
conversions_valueusually means tracking changed, not that revenue exploded. If value equals conversions for several months and then leaps into the thousands, someone almost certainly turned on value tracking partway through. - Zero-spend months are shown, not hidden. A month with no activity but existing campaigns appears with zeros. A month missing entirely means Google returned no data for it at all.
- The current month is partial. The most recent row covers only the days elapsed so far, and Google may still revise recent conversion figures for days afterwards.
- Manager accounts have no spend of their own. Totals live in the client accounts beneath them, which is why Frugle asks you to pick a client account.
Frugle reads your Google Ads data on a strictly read-only basis and never
changes anything in your account. What it accesses and how it is handled is
set out in the Privacy Policy.