Resources and fields reference
This page lists every field you can put in SELECT, WHERE or ORDER BY, grouped
by resource, with its JSON type and a real example value. Field names are written as
you type them in GAQL (snake_case); the response uses the camelCase form shown in
the JSON path column (see Reporting › Result shape).
Types
| GAQL type |
JSON representation |
Example |
Notes |
int64 |
string |
"22245080429", "345860000" |
All ids, counts and micros. Parse to a 64-bit integer. |
double |
number |
286.0, 127.06, 0.009998 |
Conversions, values, rates. |
string |
string |
"DMS_GG_AND_SEA_VALUE_202512" |
|
enum |
string |
"ENABLED" |
Fixed set of upper-case constants. |
bool |
boolean |
false |
|
date |
string YYYY-MM-DD |
"2026-10-25" |
|
resource |
string |
"customers/5423891542/campaigns/22245080429" |
A resource name. |
list |
array of strings |
["https://play.google.com/…"] |
|
Resources
Five resources can appear in FROM. The attributed resources column lists the
attribute prefixes you may select together with the resource's own fields; metrics
and segments are available on the first four only.
| Resource |
Attributed resources (selectable prefixes) |
Metrics & segments |
One row per |
customer |
customer |
yes |
account |
campaign |
customer, campaign, campaign_budget |
yes |
campaign |
ad_group |
customer, campaign, ad_group |
yes |
ad group |
ad_group_ad |
customer, campaign, ad_group, ad_group_ad |
yes |
ad |
geo_target_constant |
geo_target_constant |
no |
country (14 rows) |
customer
| Field |
Type |
JSON path |
Example |
Description |
customer.id |
int64 |
customer.id |
"5423891542" |
Customer id (same as in the URL) |
customer.descriptive_name |
string |
customer.descriptiveName |
"Dragon Merge Saga (Android)" |
Game name and OS |
customer.currency_code |
string |
customer.currencyCode |
"USD" |
Always USD |
customer.time_zone |
string |
customer.timeZone |
"Etc/UTC" |
Report dates are UTC days |
customer.manager |
bool |
customer.manager |
false |
Client accounts are never managers |
customer.status |
enum |
customer.status |
"ENABLED" |
|
customer.resource_name |
resource |
customer.resourceName |
"customers/5423891542" |
|
campaign
| Field |
Type |
JSON path |
Example |
Description |
campaign.id |
int64 |
campaign.id |
"22245080429" |
|
campaign.name |
string |
campaign.name |
"DMS_GG_AND_SEA_VALUE_202512" |
Follows {GAME}_{PLATFORM}_{OS}_{GEO}_{OBJECTIVE}_{YYYYMM} — see Accounts |
campaign.status |
enum |
campaign.status |
"ENABLED" |
ENABLED or PAUSED |
campaign.serving_status |
enum |
campaign.servingStatus |
"SERVING" |
SERVING or ENDED |
campaign.advertising_channel_type |
enum |
campaign.advertisingChannelType |
"VIDEO" |
Always VIDEO |
campaign.advertising_channel_sub_type |
enum |
campaign.advertisingChannelSubType |
"VIDEO_ACTION" |
Always VIDEO_ACTION |
campaign.start_date |
date |
campaign.startDate |
"2025-12-10" |
|
campaign.end_date |
date |
campaign.endDate |
"2037-12-30" |
2037-12-30 means no end date |
campaign.app_campaign_setting.app_id |
string |
campaign.appCampaignSetting.appId |
"com.novaplay.dragonmerge" |
Store app id of the promoted game (Android package name or iOS id…) |
campaign.app_campaign_setting.app_store |
enum |
campaign.appCampaignSetting.appStore |
"GOOGLE_APP_STORE" |
GOOGLE_APP_STORE or APPLE_APP_STORE |
campaign.app_campaign_setting.bidding_strategy_goal_type |
enum |
campaign.appCampaignSetting.biddingStrategyGoalType |
"OPTIMIZE_RETURN_ON_ADVERTISING_SPEND" |
OPTIMIZE_INSTALLS_TARGET_INSTALL_COST for INSTALL campaigns, OPTIMIZE_RETURN_ON_ADVERTISING_SPEND for VALUE campaigns |
campaign.bidding_strategy_type |
enum |
campaign.biddingStrategyType |
"MAXIMIZE_CONVERSION_VALUE" |
TARGET_CPA (INSTALL) or MAXIMIZE_CONVERSION_VALUE (VALUE) |
campaign.resource_name |
resource |
campaign.resourceName |
"customers/5423891542/campaigns/22245080429" |
|
campaign.campaign_budget |
resource |
campaign.campaignBudget |
"customers/5423891542/campaignBudgets/32245080429" |
Link to the budget resource |
campaign_budget.id |
int64 |
campaignBudget.id |
"32245080429" |
|
campaign_budget.amount_micros |
int64 |
campaignBudget.amountMicros |
"400000000" |
Daily budget in micros ($400.00) |
campaign_budget.resource_name |
resource |
campaignBudget.resourceName |
"customers/5423891542/campaignBudgets/32245080429" |
|
Example:
curl -s -X POST "https://googleads.huydata.com/v18/customers/5423891542/googleAds:searchStream" \
-H "Authorization: Bearer $GOOGLE_ACCESS_TOKEN" \
-H "developer-token: $GOOGLE_DEVELOPER_TOKEN" \
-H "login-customer-id: 9990001111" \
-H "Content-Type: application/json" \
-d '{"query": "SELECT campaign.id, campaign.name, campaign.status, campaign.serving_status, campaign.start_date, campaign.end_date, campaign.app_campaign_setting.app_id, campaign.app_campaign_setting.app_store, campaign.bidding_strategy_type, campaign_budget.amount_micros FROM campaign"}'
[
{
"results": [
{
"campaign": {
"id": "22245080429",
"name": "DMS_GG_AND_SEA_VALUE_202512",
"status": "ENABLED",
"servingStatus": "SERVING",
"startDate": "2025-12-10",
"endDate": "2037-12-30",
"appCampaignSetting": { "appId": "com.novaplay.dragonmerge", "appStore": "GOOGLE_APP_STORE" },
"biddingStrategyType": "MAXIMIZE_CONVERSION_VALUE"
},
"campaignBudget": { "amountMicros": "400000000" }
},
{
"campaign": {
"id": "28585815842",
"name": "DMS_GG_AND_SEA_INSTALL_202608",
"status": "ENABLED",
"servingStatus": "ENDED",
"startDate": "2026-08-28",
"endDate": "2026-10-13",
"appCampaignSetting": { "appId": "com.novaplay.dragonmerge", "appStore": "GOOGLE_APP_STORE" },
"biddingStrategyType": "TARGET_CPA"
},
"campaignBudget": { "amountMicros": "260000000" }
},
"..."
],
"fieldMask": "campaign.id,campaign.name,campaign.status,campaign.servingStatus,campaign.startDate,campaign.endDate,campaign.appCampaignSetting.appId,campaign.appCampaignSetting.appStore,campaign.biddingStrategyType,campaignBudget.amountMicros",
"requestId": "09671fad0fec419aa873"
}
]
ad_group
| Field |
Type |
JSON path |
Example |
Description |
ad_group.id |
int64 |
adGroup.id |
"22395831285" |
|
ad_group.name |
string |
adGroup.name |
"SEA_Broad_ID-PH-VN" |
{GEO}_{AUDIENCE}_{COUNTRIES} |
ad_group.status |
enum |
adGroup.status |
"ENABLED" |
ENABLED or PAUSED (follows the campaign) |
ad_group.type |
enum |
adGroup.type |
"VIDEO_RESPONSIVE" |
Always VIDEO_RESPONSIVE |
ad_group.campaign |
resource |
adGroup.campaign |
"customers/5423891542/campaigns/22245080429" |
Parent campaign |
ad_group.resource_name |
resource |
adGroup.resourceName |
"customers/5423891542/adGroups/22395831285" |
|
{
"campaign": { "id": "22245080429" },
"adGroup": {
"id": "22395831285",
"name": "SEA_Broad_ID-PH-VN",
"status": "ENABLED",
"type": "VIDEO_RESPONSIVE",
"campaign": "customers/5423891542/campaigns/22245080429",
"resourceName": "customers/5423891542/adGroups/22395831285"
}
}
ad_group_ad
| Field |
Type |
JSON path |
Example |
Description |
ad_group_ad.ad.id |
int64 |
adGroupAd.ad.id |
"20923328157" |
Ad (creative) id |
ad_group_ad.ad.name |
string |
adGroupAd.ad.name |
"VID_BossFight_v2" |
{FORMAT}_{CONCEPT}_v{N} |
ad_group_ad.ad.type |
enum |
adGroupAd.ad.type |
"VIDEO_RESPONSIVE_AD" |
VIDEO_RESPONSIVE_AD for video and playable creatives, IMAGE_AD for image creatives |
ad_group_ad.ad.final_urls |
list |
adGroupAd.ad.finalUrls |
["https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge"] |
Store landing page |
ad_group_ad.ad.resource_name |
resource |
adGroupAd.ad.resourceName |
"customers/5423891542/ads/20923328157" |
|
ad_group_ad.status |
enum |
adGroupAd.status |
"PAUSED" |
ENABLED or PAUSED |
ad_group_ad.ad_group |
resource |
adGroupAd.adGroup |
"customers/5423891542/adGroups/22395831285" |
Parent ad group |
ad_group_ad.resource_name |
resource |
adGroupAd.resourceName |
"customers/5423891542/adGroupAds/22395831285~20923328157" |
{adGroupId}~{adId} |
{
"adGroup": { "id": "22395831285" },
"adGroupAd": {
"ad": {
"id": "20923328157",
"name": "VID_BossFight_v2",
"type": "VIDEO_RESPONSIVE_AD",
"finalUrls": ["https://play.google.com/store/apps/details?id=com.novaplay.dragonmerge"],
"resourceName": "customers/5423891542/ads/20923328157"
},
"status": "PAUSED",
"adGroup": "customers/5423891542/adGroups/22395831285",
"resourceName": "customers/5423891542/adGroupAds/22395831285~20923328157"
}
}
geo_target_constant
A lookup table of the 14 countries Nova Play advertises in. It has no metrics and no
segments; the customer id in the URL does not matter (every customer sees the same 14
rows). See Geo targets for the full mapping.
| Field |
Type |
JSON path |
Example |
Description |
geo_target_constant.id |
int64 |
geoTargetConstant.id |
"2840" |
Criterion id — the number in geoTargetConstants/2840 |
geo_target_constant.name |
string |
geoTargetConstant.name |
"United States" |
|
geo_target_constant.country_code |
string |
geoTargetConstant.countryCode |
"US" |
ISO 3166-1 alpha-2 |
geo_target_constant.target_type |
string |
geoTargetConstant.targetType |
"Country" |
Always Country |
geo_target_constant.status |
enum |
geoTargetConstant.status |
"ENABLED" |
|
geo_target_constant.canonical_name |
string |
geoTargetConstant.canonicalName |
"United States" |
|
geo_target_constant.resource_name |
resource |
geoTargetConstant.resourceName |
"geoTargetConstants/2840" |
Same string that segments.geo_target_country returns |
Metrics
Metrics are available with FROM customer, campaign, ad_group and ad_group_ad.
They are summed over the rows that match the date filter and grouped by the selected
segments; without segments you get one total per entity for the whole filtered period.
Derived metrics (rates, averages) are computed from the aggregated sums, not averaged
across days.
| Field |
Type |
JSON path |
Example |
Definition |
metrics.impressions |
int64 |
metrics.impressions |
"200898" |
Ad impressions |
metrics.clicks |
int64 |
metrics.clicks |
"1729" |
Clicks |
metrics.cost_micros |
int64 |
metrics.costMicros |
"345860000" |
Spend in micros of USD: divide by 1,000,000 to get dollars ($345.86) |
metrics.conversions |
double |
metrics.conversions |
286.0 |
App installs attributed to the ad. Subject to the 3-day attribution window |
metrics.conversions_value |
double |
metrics.conversionsValue |
127.06 |
Attributed in-app purchase value in USD (2 decimals). Subject to the 3-day attribution window |
metrics.all_conversions |
double |
metrics.allConversions |
836.0 |
Installs + purchase events |
metrics.video_views |
int64 |
metrics.videoViews |
"65774" |
Video views |
metrics.ctr |
double |
metrics.ctr |
0.009998 |
clicks / impressions (6 decimals; 0.0 when no impressions) |
metrics.average_cpc |
double |
metrics.averageCpc |
382844.73 |
cost_micros / clicks — in micros |
metrics.average_cpm |
double |
metrics.averageCpm |
3827857.42 |
cost_micros / impressions × 1000 — in micros |
metrics.cost_per_conversion |
double |
metrics.costPerConversion |
2401437.42 |
cost_micros / conversions — in micros (cost per install) |
metrics.conversions_from_interactions_rate |
double |
metrics.conversionsFromInteractionsRate |
0.159423 |
conversions / clicks |
metrics.video_view_rate |
double |
metrics.videoViewRate |
0.290601 |
video_views / impressions |
Example — every metric for one account on one day:
SELECT customer.id, segments.date,
metrics.cost_micros, metrics.impressions, metrics.clicks,
metrics.conversions, metrics.conversions_value, metrics.all_conversions, metrics.video_views,
metrics.ctr, metrics.average_cpc, metrics.average_cpm, metrics.cost_per_conversion,
metrics.conversions_from_interactions_rate, metrics.video_view_rate
FROM customer
WHERE segments.date = '2026-10-25'
{
"customer": { "id": "5423891542" },
"segments": { "date": "2026-10-25" },
"metrics": {
"costMicros": "1937960000",
"impressions": "506278",
"clicks": "5062",
"conversions": 807.0,
"conversionsValue": 736.0,
"allConversions": 836.0,
"videoViews": "147125",
"ctr": 0.009998,
"averageCpc": 382844.73,
"averageCpm": 3827857.42,
"costPerConversion": 2401437.42,
"conversionsFromInteractionsRate": 0.159423,
"videoViewRate": 0.290601
}
}
Reading this row: the account spent $1,937.96, got 807 installs at a cost per install
of $2.40 (2,401,437.42 micros), and those installs generated $736.00 of purchases so far.
Segments
Selecting a segment splits every entity's metrics into one row per distinct segment
value. Segments are available on the same four resources as metrics.
| Field |
Type |
JSON path |
Example |
Description |
In WHERE? |
segments.date |
date |
segments.date |
"2026-10-25" |
Report date (UTC day) |
Yes — and required when any date segment is selected |
segments.week |
date |
segments.week |
"2026-10-19" |
Monday of the report date's week |
No |
segments.month |
date |
segments.month |
"2026-10-01" |
First day of the report date's month |
No |
segments.day_of_week |
enum |
segments.dayOfWeek |
"MONDAY" |
MONDAY … SUNDAY |
No |
segments.geo_target_country |
resource |
segments.geoTargetCountry |
"geoTargetConstants/2392" |
Country of the user who saw the ad, as a geo target constant resource name — see Geo targets |
Yes (=, !=, IN, NOT IN) |
Selecting segments.week, segments.month or segments.day_of_week requires a
segments.date filter in WHERE even though those fields themselves cannot be
filtered. Example:
SELECT segments.week, segments.month, segments.day_of_week, metrics.clicks
FROM customer
WHERE segments.date BETWEEN '2026-10-19' AND '2026-10-21'
[
{
"results": [
{ "segments": { "week": "2026-10-19", "month": "2026-10-01", "dayOfWeek": "MONDAY" }, "metrics": { "clicks": "4014" } },
{ "segments": { "week": "2026-10-19", "month": "2026-10-01", "dayOfWeek": "TUESDAY" }, "metrics": { "clicks": "4042" } },
{ "segments": { "week": "2026-10-19", "month": "2026-10-01", "dayOfWeek": "WEDNESDAY" }, "metrics": { "clicks": "4104" } }
],
"fieldMask": "segments.week,segments.month,segments.dayOfWeek,metrics.clicks",
"requestId": "0d53aaf4fd9e450b8ddb"
}
]
Field availability matrix
| Field group |
customer |
campaign |
ad_group |
ad_group_ad |
geo_target_constant |
customer.* |
yes |
yes |
yes |
yes |
— |
campaign.*, campaign_budget.* |
— |
yes |
yes |
yes |
— |
ad_group.* |
— |
— |
yes |
yes |
— |
ad_group_ad.* |
— |
— |
— |
yes |
— |
geo_target_constant.* |
— |
— |
— |
— |
yes |
metrics.* |
yes |
yes |
yes |
yes |
— |
segments.* |
yes |
yes |
yes |
yes |
— |