보고

동영상: 2019년 워크숍의 호텔 광고 보고 대담 확인하기

Google Ads API를 사용하면 필요한 호텔 광고 보고서를 얻기 위한 쿼리를 설계할 수 있습니다. 그런 다음 이 쿼리를 클라이언트 애플리케이션에 통합할 수 있습니다.

기본 요건

  • 보고쿼리의 일반적인 작동 방식을 알아봅니다.
  • 다양한 리소스를 쿼리할 수 있는 방법을 알아보세요.
  • 호텔 광고 실적 예에 표시된 대로 클라이언트 애플리케이션에서 쿼리를 사용하는 방법을 알아봅니다.

호텔 광고의 기본 쿼리

다음 예시 쿼리를 확인하여 호텔 광고 보고에 Google Ads API를 사용하는 방법을 익힐 수 있습니다.

클릭수 측정항목 가져오기

다음 쿼리 예시는 호텔 성능 뷰에서 클릭수를 반환합니다.

SELECT metrics.clicks
FROM hotel_performance_view

쿼리의 결과는 다음과 같습니다.

{
  "results": [
    {
      "metrics": {
        "clicks": "78090"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/1234567890/hotelPerformanceView"
      }
    }
  ],
  "totalResultsCount": "1",
  "fieldMask": "metrics.clicks"
}

분류된 클릭수 측정항목 가져오기

호텔 실적 뷰에 대한 다음 쿼리 예는 클릭수를 가져오고 결과를 호텔 ID별로 분류합니다.

SELECT
  segments.partner_hotel_id,
  metrics.clicks
FROM hotel_performance_view

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다. 클릭수는 partnerHotelID로 분류되므로 동일한 HotelPerformanceView에 관해 두 개 이상의 객체를 반환할 수 있습니다.

{
  "results": [
    {
      "metrics": {
        "clicks": "7055"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/1234567890/hotelPerformanceView"
      },
      "segments": {
        "partnerHotelId": "1111"
      }
    },
    {
      "metrics": {
        "clicks": "3047"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/1234567890/hotelPerformanceView"
      },
      "segments": {
        "partnerHotelId": "1112"
      }
    },
    ...
  ]
}

광고그룹 측정항목 가져오기

다음 광고그룹 쿼리 예는 지난 30일 동안의 노출수와 클릭수를 날짜별로 분류하여 가져옵니다.

SELECT
  campaign.name,
  campaign.status,
  ad_group.name,
  segments.date,
  metrics.impressions,
  metrics.clicks
FROM ad_group
WHERE ad_group.type = HOTEL_ADS
  AND segments.date DURING LAST_30_DAYS

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다. 응답은 WHERE 절 조건을 충족하는 측정항목에 대해서만 필터링됩니다. 날짜 필드는 30일 중에 포함된 마지막 날짜로 채워집니다.

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "name": "test campaign",
        "status": "ENABLED"
      },
      "adGroup": {
        "resourceName": "customers/123456789/adGroups/11111111",
        "name": "test adgroup"
      },
      "metrics": {
        "clicks": "91",
        "impressions": "5145"
      },
      "segments": {
        "date": "2020-05-10"
      }
    }
  ]
}

운영 중인 광고그룹 광고 가져오기

아래의 광고그룹 광고 쿼리 예는 게재될 광고그룹을 가져옵니다. 광고 그룹에서 게재하려면 광고그룹 광고, 광고그룹, 캠페인이 모두 사용 설정되어 있어야 합니다.

SELECT
  ad_group.id,
  ad_group.name,
  ad_group.status,
  campaign.name,
  campaign.status,
  ad_group_ad.status
FROM ad_group_ad
WHERE ad_group_ad.status = ENABLED
  AND campaign.status = ENABLED
  AND ad_group.status = ENABLED

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다.

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "name": "test campaign",
        "status": "ENABLED"
      },
      "adGroup": {
        "resourceName": "customers/123456789/adGroups/111111111111",
        "id": "106121857411",
        "name": "test adgroup",
        "status": "ENABLED"
      },
      "adGroupAd": {
        "resourceName": "customers/123456789/adGroupAds/111111111111~33333333333",
        "status": "ENABLED",
        "ad": {
          "resourceName": "customers/123456789/ads/77777777777"
        }
      }
    }
  ]
}

호텔 광고 보고서에 유용한 보기

호텔 광고 보고를 위한 이전 API에서는 실적 보고서와 같은 특정 보고서를 검색할 수 있었습니다. Google Ads API에서 이러한 종류의 데이터는 hotel_performance_viewhotel_group_view와 같은 별도의 *_view 리소스로 표현됩니다. 이 섹션에서는 호텔 광고 보고에 유용한 *_view 리소스에 대해 설명합니다. 예시 쿼리도 제공됩니다.

*_view 리소스에는 특정 리소스 필드, 세그먼트, 측정항목이 있습니다. 쿼리를 작성하기 전에 아래 참조된 문서에서 특정 *_view 리소스를 확인하세요.

호텔 그룹 보기

호텔 그룹 뷰기준 뷰이므로 호텔 그룹의 특정 기준 유형에 대한 측정항목을 가져오는 데 유용합니다.

호텔 그룹 뷰에 대한 다음 예시 쿼리는 루트 노드 ('모든 호텔')를 포함한 전체 호텔 등록정보 그룹 트리의 등록정보 그룹에서 각 호텔의 클릭수를 가져옵니다.

SELECT
  metrics.clicks,
  ad_group_criterion.listing_group.case_value.hotel_id.value
FROM hotel_group_view

쿼리의 결과는 아래의 JSON 문자열과 유사합니다. 루트 노드 ('모든 호텔')에 대해 case_value가 정의되지 않은 경우, 첫 번째 행은 '모든 호텔' 등록정보 그룹의 측정항목을 나타내고, 두 번째 행은 '기타'를 나타내는 하위 등록정보 그룹의 측정항목을 나타냅니다.

{
  "results": [
    {
      "metrics": {
        "clicks": "5"
      },
      "adGroupCriterion": {
        "resourceName": "customers/1234567890/adGroupCriteria/22222222222~111111111111"
      },
      "hotelGroupView": {
        "resourceName": "customers/1234567890/hotelGroupViews/22222222222~111111111111"
      }
    },
    {
      "metrics": {
        "clicks": "0"
      },
      "adGroupCriterion": {
        "resourceName": "customers/1234567890/adGroupCriteria/22222222222~111111111112"
        "listingGroup": {
          "caseValue": {
            "hotelId": {
            }
          }
        }
      },
      "hotelGroupView": {
        "resourceName": "customers/1234567890/hotelGroupViews/22222222222~111111111112"
      }
    },
    {
      "metrics": {
        "clicks": "3"
      },
      "adGroupCriterion": {
        "resourceName": "customers/1234567890/adGroupCriteria/22222222222~111111111113"
        "listingGroup": {
          "caseValue": {
            "hotelId": {
              "value": "11111111111111111"
              }
            }
          }
        }
      },
      "hotelGroupView": {
        "resourceName": "customers/1234567890/hotelGroupViews/22222222222~111111111113"
      }
    },
    {
      "metrics": {
        "clicks": "2"
      },
      "adGroupCriterion": {
        "resourceName": "customers/1234567890/adGroupCriteria/22222222222~111111111114"
        "listingGroup": {
          "caseValue": {
            "hotelId": {
              "value": "11111111111111112"
              }
            }
          }
        }
      },
      "hotelGroupView": {
        "resourceName": "customers/1234567890/hotelGroupViews/22222222222~111111111114"
      }
    },
  ]
}

호텔 실적 보기

호텔 실적 뷰는 호텔 ID를 기반으로 하는 하위 그룹이 있는 경우에도 호텔 그룹에서 가져오지 않은 데이터를 사용하여 호텔의 실적 측정항목을 검색하려는 경우에 유용합니다.

호텔 실적 뷰에 대한 다음 쿼리 예는 클릭수를 가져오고 결과를 호텔 ID별로 분류합니다.

SELECT
  segments.partner_hotel_id,
  metrics.clicks
FROM hotel_performance_view

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다. 클릭수는 partner_hotel_id에 의해 분류되므로 동일한 호텔 실적 보기에 대해 2개 이상의 객체가 반환될 수 있습니다.

{
  "results": [
    {
      "metrics": {
        "clicks": "7055"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/1234567890/hotelPerformanceView"
      },
      "segments": {
        "partnerHotelId": "1111"
      }
    },
    {
      "metrics": {
        "clicks": "3047"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/1234567890/hotelPerformanceView"
      },
      "segments": {
        "partnerHotelId": "1112"
      }
    },
    ...
  ]
}

광고그룹 잠재고객 보기

광고그룹 잠재고객 보기는 광고그룹 수준에서 연결된 잠재고객의 실적 측정항목을 검색할 때 유용합니다.

이는 호텔 캠페인뿐만 아니라 다양한 유형의 캠페인에 대한 일반적인 뷰입니다. 이 뷰는 또한 호텔 날짜를 사용자가 선택했는지 또는 Google에서 설정한 검색의 기본 날짜인지 지정하는 데 사용할 수 있는 hotel_date_selection_type로 결과를 분류하는 기능을 제공합니다. hotel_date_selection_type로 분류하면 호텔 캠페인의 결과만 반환됩니다.

아래는 예시 쿼리입니다. 이 쿼리는 ad_group_criterion.user_list.user_list당 하나의 행을 반환합니다.

SELECT
  ad_group.id,
  campaign.id,
  ad_group_criterion.user_list.user_list,
  segments.device,
  segments.hotel_date_selection_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.all_conversions_value
FROM ad_group_audience_view

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다.

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "id": "23456789"
      },
      "metrics": {
        "clicks": "0",
        "conversions": "0",
        "costMicros": "0",
        "impressions": "3",
        "allConversionsValue": "0"
      },
      "adGroupCriterion": {
        "resourceName": "customers/123456789/adGroupCriteria/23456789~789456",
        "userList": {
          "userList": "customers/123456789/userLists/456789"
        }
      },
      "adGroupAudienceView": {
        "resourceName": "customers/8005193609/adGroupAudienceViews/23456789~789456"
      },
      "segments": {
        "device": "TABLET",
        "hotelDateSelectionType": "USER_SELECTED"
      }
    }
  ]
}

캠페인 잠재고객 보기

캠페인 잠재고객 보기는 캠페인 수준에 연결된 잠재고객의 실적 측정항목을 가져오려는 경우에 유용합니다.

이는 호텔 캠페인뿐만 아니라 다양한 유형의 캠페인에 대한 일반적인 뷰입니다. 이 뷰는 또한 호텔 날짜를 사용자가 선택했는지 또는 Google에서 설정한 검색의 기본 날짜인지 지정하는 데 사용할 수 있는 hotel_date_selection_type로 결과를 분류하는 기능을 제공합니다. hotel_date_selection_type로 분류하면 호텔 캠페인의 결과만 반환됩니다.

아래는 예시 쿼리입니다. 이 쿼리는 campaign_criterion.user_list.user_list당 하나의 행을 반환합니다.

SELECT
  campaign.id,
  campaign_criterion.user_list.user_list,
  segments.device,
  segments.hotel_date_selection_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.all_conversions_value
FROM campaign_audience_view

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다.

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "id": "23456789"
      },
      "metrics": {
        "clicks": "0",
        "conversions": "0",
        "costMicros": "0",
        "impressions": "3",
        "allConversionsValue": "0"
      },
      "campaignCriterion": {
        "resourceName": "customers/123456789/campaignCriteria/23456789~789456",
        "userList": {
          "userList": "customers/123456789/userLists/456789"
        }
      },
      "campaignAudienceView": {
        "resourceName": "customers/8005193609/campaignAudienceViews/23456789~789456"
      },
      "segments": {
        "device": "TABLET",
        "hotelDateSelectionType": "USER_SELECTED"
      }
    }
  ]
}

호텔 광고에 유용한 보고서

이 섹션에서는 호텔 광고용으로 특별히 설계된 몇 가지 유용한 보고서를 제공합니다.

실적 보고서

이러한 쿼리는 호텔 실적 보기를 활용하여 실적 데이터를 가져옵니다.

성능

쿼리 예시:

SELECT
  segments.hotel_center_id,
  segments.device,
  segments.partner_hotel_id,
  segments.hotel_check_in_day_of_week,
  segments.hotel_date_selection_type,
  segments.hotel_length_of_stay,
  segments.hotel_booking_window_days,
  metrics.search_top_impression_share,
  metrics.search_absolute_top_impression_share,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.all_conversions_value,
  metrics.search_impression_share
FROM hotel_performance_view

JSON 응답 예:

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789"
      },
      "metrics": {
        "clicks": "0",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "0",
        "searchImpressionShare": "0.0999",
        "searchAbsoluteTopImpressionShare": "0.0999",
        "searchTopImpressionShare": "0.0999",
        "allConversionsValue": "1"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "DESKTOP",
        "hotelBookingWindowDays": "3",
        "hotelCenterId": "1234",
        "hotelCheckInDayOfWeek": "MONDAY",
        "hotelDateSelectionType": "USER_SELECTED",
        "hotelLengthOfStay": "4",
        "partnerHotelId": "123"
      }
    },
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789"
      },
      "metrics": {
        "clicks": "0",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "1",
        "searchImpressionShare": "1.0",
        "searchAbsoluteTopImpressionShare": "0.0999",
        "searchTopImpressionShare": "1.0",
        "allConversionsValue": "1"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "DESKTOP",
        "hotelBookingWindowDays": "3",
        "hotelCenterId": "1234",
        "hotelCheckInDayOfWeek": "MONDAY",
        "hotelDateSelectionType": "USER_SELECTED",
        "hotelLengthOfStay": "4",
        "partnerHotelId": "123"
      }
    }
  ]
}

클릭 유형별 실적

쿼리 예시:

SELECT
  segments.click_type,
  segments.hotel_center_id,
  segments.device,
  segments.partner_hotel_id,
  segments.hotel_check_in_day_of_week,
  segments.hotel_date_selection_type,
  segments.hotel_length_of_stay,
  segments.hotel_booking_window_days,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.all_conversions_value
FROM hotel_performance_view

JSON 응답 예:

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789"
    },
      "metrics": {
        "clicks": "0",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "1",
        "allConversionsValue": "0.0"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "DESKTOP",
        "hotelBookingWindowDays": "0",
        "hotelCenterId": "1234",
        "hotelCheckInDayOfWeek": "TUESDAY",
        "hotelDateSelectionType": "USER_SELECTED",
        "hotelLengthOfStay": "4",
        "partnerHotelId": "123",
        "clickType": "HOTEL_PRICE"
      }
    },
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789"
      },
      "metrics": {
        "clicks": "1",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "1",
        "allConversionsValue": "0.0"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "DESKTOP",
        "hotelBookingWindowDays": "0",
        "hotelCenterId": "1234",
        "hotelCheckInDayOfWeek": "TUESDAY",
        "hotelDateSelectionType": "USER_SELECTED",
        "hotelLengthOfStay": "4",
        "partnerHotelId": "12345",
        "clickType": "HOTEL_PRICE"
      }
    }
  ]
}

조건부 요금 실적 보고서

아래에 표시된 보고서 쿼리는 실적 측정항목을 다음과 같이 분류하여 가져옵니다.

  • campaign
  • hotel_center_id
  • hotel_country
  • hotel_rate_rule_id
  • hotel_rate_type
  • device
  • partner_hotel_id

유형에 관한 설명은 HotelRateType를 참고하세요.

한 쿼리에 여러 세그먼트를 포함할 수 있지만 세그먼트를 추가하면 반환되는 행의 수가 크게 증가할 수 있습니다.

SELECT
  campaign.id,
  segments.hotel_center_id,
  segments.hotel_country,
  segments.hotel_rate_rule_id,
  segments.hotel_rate_type,
  segments.device,
  segments.partner_hotel_id,
  metrics.search_top_impression_share,
  metrics.search_absolute_top_impression_share,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions
FROM hotel_performance_view

쿼리의 결과는 아래와 같은 JSON 문자열과 유사합니다.

{
  "results": [
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "id": "23456789"
      },
      "metrics": {
        "clicks": "1",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "24",
        "searchAbsoluteTopImpressionShare": "0.0999",
        "searchTopImpressionShare": "0.17073170731707318"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "TABLET",
        "hotelCenterId": "1234",
        "partnerHotelId": "123",
        "hotelRateRuleId": "desktop",
        "hotelRateType": "PUBLIC_RATE"
      }
    },
    {
      "campaign": {
        "resourceName": "customers/123456789/campaigns/23456789",
        "id": "23456789"
      },
      "metrics": {
        "clicks": "107",
        "conversions": "0.0",
        "costMicros": "0",
        "impressions": "1668",
        "searchAbsoluteTopImpressionShare": "0.0999",
        "searchTopImpressionShare": "0.3581201665675193"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "device": "TABLET",
        "hotelCenterId": "1234",
        "partnerHotelId": "1235",
        "hotelRateRuleId": "desktop",
        "hotelRateType": "PUBLIC_RATE"
      }
    }
  ]
}

가격 경쟁력 보고서

동일한 호텔 숙박 일정에서 내 가격과 경쟁업체의 가격을 비교해 볼 수 있습니다.

쿼리 예시:

SELECT
  segments.hotel_center_id,
  segments.partner_hotel_id,
  segments.hotel_price_bucket,
  metrics.hotel_average_lead_value_micros,
  metrics.hotel_price_difference_percentage
FROM hotel_performance_view

JSON 응답 예:

{
  "results": [
    {
      "metrics": {
        "hotelAverageLeadValueMicros": "96416341.829268292",
        "hotelPriceDifferencePercentage": "-0.014627310872986811"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "hotelCenterId": "1234",
        "partnerHotelId": "123",
        "hotelPriceBucket": "LOWEST_TIED"
      }
    }
  ]
}

평균 예약 가격 보고서

호텔의 평균 예약 가격(all_conversions_valueconversions으로 나눈 값)을 계산하는 데 필요한 데이터를 얻을 수 있습니다.

쿼리 예시:

SELECT
  segments.hotel_center_id,
  segments.partner_hotel_id,
  segments.hotel_price_bucket,
  metrics.all_conversions_value,
  metrics.conversions
FROM hotel_performance_view

JSON 응답 예:

{
  "results": [
    {
      "metrics": {
        "allConversionsValue": "123.5",
        "conversions": "1"
      },
      "hotelPerformanceView": {
        "resourceName": "customers/123456789/hotelPerformanceView"
      },
      "segments": {
        "hotelCenterId": "1234",
        "partnerHotelId": "123",
        "hotelPriceBucket": "LOWEST_TIED"
      }
    }
  ]
}

사용자 보고서

잠재고객 보고서에는 Google Ads 잠재고객 목록의 입찰 배율 실적이 표시됩니다. 잠재고객 보고서의 예는 광고그룹 잠재고객 보기캠페인 잠재고객 보기의 검색어 예를 참고하세요.