위치 타겟팅

이 가이드에서는 위치 타겟팅과 Google Ads API를 사용하여 캠페인의 위치 타겟팅을 추가, 검색, 업데이트하는 방법을 설명합니다.

타겟팅 한도에 대한 자세한 내용은 Google Ads 계정 한도 정보의 타겟팅 한도 섹션을 참고하세요.

지역 타겟팅이 중요한 이유는 무엇인가요?

위치 타겟팅을 사용하면 특정 지리적 지역의 사용자에게 광고를 게재할 수 있습니다. 예를 들어 슈퍼마켓 체인을 광고한다고 가정해 보겠습니다. 위치 타겟팅을 사용하지 않으면 전 세계 모든 지역에 광고가 게재되며, 슈퍼마켓이 없는 지역의 사용자가 광고를 클릭할 수 있습니다. 이 경우 비용이 발생하지만 투자 수익을 얻을 가능성은 없습니다. 위치 타겟팅을 사용하면 영업 중인 슈퍼마켓이 있는 지역에만 캠페인 광고가 게재됩니다. 이 방법을 사용하면 지역에서 슈퍼마켓을 검색하는 고객을 직접 타겟팅할 수도 있습니다.

Google Ads API를 사용하면 특정 지리적 지점을 중심으로 국가, 지역 또는 인접 지역별로 광고를 타겟팅할 수 있습니다.

지역별로 캠페인 지역 타겟팅

Google Ads에서 위치 타겟팅을 지원하는 모든 지리적 지역(예: 국가, 주, 도시, 우편 지역)을 대상으로 캠페인을 타겟팅할 수 있습니다. 타겟팅 가능한 각 위치는 기준 ID로 고유하게 식별됩니다. GeoTargetConstantService.SuggestGeoTargetConstants를 사용하여 기준 ID를 조회할 수 있습니다. 각 GeoTargetConstant의 resource_name은 geoTargetConstants/{Criterion ID} 형식입니다. 예를 들어 뉴욕주의 resource_name 값은 geoTargetConstants/21167입니다.

CampaignCriterionService을 사용하여 캠페인에 지역 타겟을 추가할 수 있습니다 (또는 upgraded_targeting이 사용 설정된 디맨드젠 캠페인과 같은 지원되는 캠페인 유형의 경우 AdGroupCriterion을 사용하여 광고 그룹 수준에서 추가할 수 있음). 다음 코드 스니펫은 기준 ID로 캠페인을 타겟팅하는 방법을 보여줍니다.

자바

private static CampaignCriterion buildLocationIdCriterion(
    long locationId, String campaignResourceName) {
  Builder criterionBuilder = CampaignCriterion.newBuilder().setCampaign(campaignResourceName);

  criterionBuilder
      .getLocationBuilder()
      .setGeoTargetConstant(ResourceNames.geoTargetConstant(locationId));

  return criterionBuilder.build();
}
      

C#

private CampaignCriterion buildLocationCriterion(long locationId,
    string campaignResourceName)
{
    GeoTargetConstantName location = new GeoTargetConstantName(locationId.ToString());
    return new CampaignCriterion()
    {
        Campaign = campaignResourceName,
        Location = new LocationInfo()
        {
            GeoTargetConstant = location.ToString()
        }
    };
}
      

PHP

private static function createLocationCampaignCriterionOperation(
    int $locationId,
    string $campaignResourceName
) {
    // Constructs a campaign criterion for the specified campaign ID using the specified
    // location ID.
    $campaignCriterion = new CampaignCriterion([
        // Creates a location using the specified location ID.
        'location' => new LocationInfo([
            // Besides using location ID, you can also search by location names using
            // GeoTargetConstantServiceClient::suggestGeoTargetConstants() and directly
            // apply GeoTargetConstant::$resourceName here. An example can be found
            // in GetGeoTargetConstantByNames.php.
            'geo_target_constant' => ResourceNames::forGeoTargetConstant($locationId)
        ]),
        'campaign' => $campaignResourceName
    ]);

    return new CampaignCriterionOperation(['create' => $campaignCriterion]);
}
      

Python

def create_location_op(
    client: GoogleAdsClient,
    customer_id: str,
    campaign_id: str,
    location_id: str,
) -> CampaignCriterionOperation:
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )
    geo_target_constant_service: GeoTargetConstantServiceClient = (
        client.get_service("GeoTargetConstantService")
    )

    # Create the campaign criterion.
    campaign_criterion_operation: CampaignCriterionOperation = client.get_type(
        "CampaignCriterionOperation"
    )
    campaign_criterion: CampaignCriterion = campaign_criterion_operation.create
    campaign_criterion.campaign = campaign_service.campaign_path(
        customer_id, campaign_id
    )

    # Besides using location_id, you can also search by location names from
    # GeoTargetConstantService.suggest_geo_target_constants() and directly
    # apply GeoTargetConstant.resource_name here. An example can be found
    # in get_geo_target_constant_by_names.py.
    campaign_criterion.location.geo_target_constant = (
        geo_target_constant_service.geo_target_constant_path(location_id)
    )

    return campaign_criterion_operation
      

Ruby

def create_location(client, customer_id, campaign_id, location_id)
  client.operation.create_resource.campaign_criterion do |criterion|
    criterion.campaign = client.path.campaign(customer_id, campaign_id)

    criterion.location = client.resource.location_info do  |li|
      # Besides using location_id, you can also search by location names from
      # GeoTargetConstantService.suggest_geo_target_constants() and directly
      # apply GeoTargetConstant.resource_name here. An example can be found
      # in get_geo_target_constant_by_names.rb.
      li.geo_target_constant = client.path.geo_target_constant(location_id)
    end
  end
end
      

Perl

sub create_location_campaign_criterion_operation {
  my ($location_id, $campaign_resource_name) = @_;

  # Construct a campaign criterion for the specified campaign using the
  # specified location ID.
  my $campaign_criterion =
    Google::Ads::GoogleAds::V25::Resources::CampaignCriterion->new({
      # Create a location using the specified location ID.
      location => Google::Ads::GoogleAds::V25::Common::LocationInfo->new({
          # Besides using location ID, you can also search by location names
          # using GeoTargetConstantService::suggest() and directly apply
          # GeoTargetConstant->{resourceName} here. An example can be found
          # in get_geo_target_constants_by_names.pl.
          geoTargetConstant =>
            Google::Ads::GoogleAds::V25::Utils::ResourceNames::geo_target_constant(
            $location_id)}
      ),
      campaign => $campaign_resource_name
    });

  return
    Google::Ads::GoogleAds::V25::Services::CampaignCriterionService::CampaignCriterionOperation
    ->new({
      create => $campaign_criterion
    });
}
      

curl

Google에서는 다양한 이유로 일부 위치 기준을 단계적으로 폐지할 수 있습니다. 예를 들어 위치가 더 작거나 큰 영역으로 재구성되거나 지리 정치적 변화가 있을 수 있습니다. 위치가 ENABLED인지 REMOVAL_PLANNED인지 확인하려면 GeoTargetConstant 객체의 status 필드를 참고하세요.

위치 이름으로 조회

GeoTargetConstantService.SuggestGeoTargetConstants를 사용하여 위치 이름으로 기준 ID를 조회할 수도 있습니다. 다음 코드 예에서는 위치 이름으로 위치 기준 ID를 조회하는 방법을 보여줍니다.

자바

private void runExample(GoogleAdsClient googleAdsClient) {
  try (GeoTargetConstantServiceClient geoTargetClient =
      googleAdsClient.getLatestVersion().createGeoTargetConstantServiceClient()) {

    SuggestGeoTargetConstantsRequest.Builder requestBuilder =
        SuggestGeoTargetConstantsRequest.newBuilder();

    // Locale is using ISO 639-1 format. If an invalid locale is given, 'en' is used by default.
    requestBuilder.setLocale("en");

    // A list of country codes can be referenced here:
    // https://developers.google.com/google-ads/api/reference/data/geotargets
    requestBuilder.setCountryCode("FR");

    requestBuilder
        .getLocationNamesBuilder()
        .addAllNames(ImmutableList.of("Paris", "Quebec", "Spain", "Deutschland"));

    SuggestGeoTargetConstantsResponse response =
        geoTargetClient.suggestGeoTargetConstants(requestBuilder.build());

    for (GeoTargetConstantSuggestion suggestion :
        response.getGeoTargetConstantSuggestionsList()) {
      System.out.printf(
          "%s (%s,%s,%s,%s) is found in locale (%s) with reach (%d) for search term (%s).%n",
          suggestion.getGeoTargetConstant().getResourceName(),
          suggestion.getGeoTargetConstant().getName(),
          suggestion.getGeoTargetConstant().getCountryCode(),
          suggestion.getGeoTargetConstant().getTargetType(),
          suggestion.getGeoTargetConstant().getStatus().name(),
          suggestion.getLocale(),
          suggestion.getReach(),
          suggestion.getSearchTerm());
    }
  }
}
      

C#

public void Run(GoogleAdsClient client)
{
    // Get the GeoTargetConstantServiceClient.
    GeoTargetConstantServiceClient geoService =
        client.GetService(Services.V25.GeoTargetConstantService);

    // Locale is using ISO 639-1 format. If an invalid locale is given,
    // 'en' is used by default.
    string locale = "en";

    // A list of country codes can be referenced here:
    // https://developers.google.com/google-ads/api/reference/data/geotargets
    string countryCode = "FR";

    string[] locations = { "Paris", "Quebec", "Spain", "Deutschland" };

    SuggestGeoTargetConstantsRequest request = new SuggestGeoTargetConstantsRequest()
    {
        Locale = locale,
        CountryCode = countryCode,
        LocationNames = new SuggestGeoTargetConstantsRequest.Types.LocationNames()
    };

    request.LocationNames.Names.AddRange(locations);

    try
    {
        SuggestGeoTargetConstantsResponse response =
            geoService.SuggestGeoTargetConstants(request);

        foreach (GeoTargetConstantSuggestion suggestion
            in response.GeoTargetConstantSuggestions)
        {
            Console.WriteLine(
                $"{suggestion.GeoTargetConstant.ResourceName} " +
                $"({suggestion.GeoTargetConstant.Name}, " +
                $"{suggestion.GeoTargetConstant.CountryCode}, " +
                $"{suggestion.GeoTargetConstant.TargetType}, " +
                $"{suggestion.GeoTargetConstant.Status}) is found in locale " +
                $"({suggestion.Locale}) with reach ({suggestion.Reach}) " +
                $"for search term ({suggestion.SearchTerm}).");
        }
    }
    catch (GoogleAdsException e)
    {
        Console.WriteLine("Failure:");
        Console.WriteLine($"Message: {e.Message}");
        Console.WriteLine($"Failure: {e.Failure}");
        Console.WriteLine($"Request ID: {e.RequestId}");
        throw;
    }
}
      

PHP

public static function runExample(
    GoogleAdsClient $googleAdsClient,
    array $locationNames,
    string $locale,
    string $countryCode
) {
    $geoTargetConstantServiceClient = $googleAdsClient->getGeoTargetConstantServiceClient();

    $response = $geoTargetConstantServiceClient->suggestGeoTargetConstants(
        new SuggestGeoTargetConstantsRequest([
            'locale' => $locale,
            'country_code' => $countryCode,
            'location_names' => new LocationNames(['names' => $locationNames])
        ])
    );

    // Iterates over all geo target constant suggestion objects and prints the requested field
    // values for each one.
    foreach ($response->getGeoTargetConstantSuggestions() as $geoTargetConstantSuggestion) {
        /** @var GeoTargetConstantSuggestion $geoTargetConstantSuggestion */
        printf(
            "Found '%s' ('%s','%s','%s',%s) in locale '%s' with reach %d"
            . " for the search term '%s'.%s",
            $geoTargetConstantSuggestion->getGeoTargetConstant()->getResourceName(),
            $geoTargetConstantSuggestion->getGeoTargetConstant()->getName(),
            $geoTargetConstantSuggestion->getGeoTargetConstant()->getCountryCode(),
            $geoTargetConstantSuggestion->getGeoTargetConstant()->getTargetType(),
            GeoTargetConstantStatus::name(
                $geoTargetConstantSuggestion->getGeoTargetConstant()->getStatus()
            ),
            $geoTargetConstantSuggestion->getLocale(),
            $geoTargetConstantSuggestion->getReach(),
            $geoTargetConstantSuggestion->getSearchTerm(),
            PHP_EOL
        );
    }
}
      

Python

def main(client: GoogleAdsClient) -> None:
    gtc_service: GeoTargetConstantServiceClient = client.get_service(
        "GeoTargetConstantService"
    )

    gtc_request: SuggestGeoTargetConstantsRequest = client.get_type(
        "SuggestGeoTargetConstantsRequest"
    )
    gtc_request.locale = LOCALE
    gtc_request.country_code = COUNTRY_CODE

    # The location names to get suggested geo target constants.
    # Type hint for gtc_request.location_names.names is not straightforward
    # as it's part of a complex protobuf object.
    gtc_request.location_names.names.extend(
        ["Paris", "Quebec", "Spain", "Deutschland"]
    )

    results: SuggestGeoTargetConstantsResponse = (
        gtc_service.suggest_geo_target_constants(gtc_request)
    )

    suggestion: GeoTargetConstantSuggestion
    for suggestion in results.geo_target_constant_suggestions:
        geo_target_constant: GeoTargetConstant = suggestion.geo_target_constant
        print(
            f"{geo_target_constant.resource_name} "
            f"({geo_target_constant.name}, "
            f"{geo_target_constant.country_code}, "
            f"{geo_target_constant.target_type}, "
            f"{geo_target_constant.status.name}) "
            f"is found in locale ({suggestion.locale}) "
            f"with reach ({suggestion.reach}) "
            f"from search term ({suggestion.search_term})."
        )
      

Ruby

def get_geo_target_constants_by_names
  # GoogleAdsClient will read a config file from
  # ENV['HOME']/google_ads_config.rb when called without parameters
  client = Google::Ads::GoogleAds::GoogleAdsClient.new

  gtc_service = client.service.geo_target_constant

  location_names = client.resource.location_names do |ln|
    ['Paris', 'Quebec', 'Spain', 'Deutschland'].each do |name|
      ln.names << name
    end
  end

  # Locale is using ISO 639-1 format. If an invalid locale is given,
  # 'en' is used by default.
  locale = 'en'

  # A list of country codes can be referenced here:
  # https://developers.google.com/google-ads/api/reference/data/geotargets
  country_code = 'FR'

  response = gtc_service.suggest_geo_target_constants(
    locale: locale,
    country_code: country_code,
    location_names: location_names
  )

  response.geo_target_constant_suggestions.each do |suggestion|
    puts sprintf("%s (%s,%s,%s,%s) is found in locale (%s) with reach (%d)" \
        " from search term (%s).", suggestion.geo_target_constant.resource_name,
        suggestion.geo_target_constant.name,
        suggestion.geo_target_constant.country_code,
        suggestion.geo_target_constant.target_type,
        suggestion.geo_target_constant.status,
        suggestion.locale,
        suggestion.reach,
        suggestion.search_term)
  end
end
      

Perl

sub get_geo_target_constants_by_names {
  my ($api_client, $location_names, $locale, $country_code) = @_;

  my $suggest_response = $api_client->GeoTargetConstantService()->suggest({
      locale        => $locale,
      countryCode   => $country_code,
      locationNames =>
        Google::Ads::GoogleAds::V25::Services::GeoTargetConstantService::LocationNames
        ->new({
          names => $location_names
        })});

  # Iterate over all geo target constant suggestion objects and print the requested
  # field values for each one.
  foreach my $geo_target_constant_suggestion (
    @{$suggest_response->{geoTargetConstantSuggestions}})
  {
    printf "Found '%s' ('%s','%s','%s',%s) in locale '%s' with reach %d" .
      " for the search term '%s'.\n",
      $geo_target_constant_suggestion->{geoTargetConstant}{resourceName},
      $geo_target_constant_suggestion->{geoTargetConstant}{name},
      $geo_target_constant_suggestion->{geoTargetConstant}{countryCode},
      $geo_target_constant_suggestion->{geoTargetConstant}{targetType},
      $geo_target_constant_suggestion->{geoTargetConstant}{status},
      $geo_target_constant_suggestion->{locale},
      $geo_target_constant_suggestion->{reach},
      $geo_target_constant_suggestion->{searchTerm};
  }

  return 1;
}
      

curl

위치 인접도에 따라 캠페인 타겟팅

도시나 국가보다 더 정확하게 타겟팅해야 하는 경우가 있습니다. 예를 들어 매장 위치에서 10km 이내의 슈퍼마켓을 광고할 수 있습니다. 이러한 경우 근접도 타겟팅을 사용할 수 있습니다. 근접성 타겟을 만드는 코드는 위치 타겟을 추가하는 것과 비슷하지만 LocationInfo 객체 대신 ProximityInfo 객체를 만들어야 합니다.

자바

private static CampaignCriterion buildProximityLocation(String campaignResourceName) {
  Builder builder = CampaignCriterion.newBuilder().setCampaign(campaignResourceName);

  ProximityInfo.Builder proximityBuilder = builder.getProximityBuilder();
  proximityBuilder.setRadius(10.0).setRadiusUnits(ProximityRadiusUnits.MILES);

  AddressInfo.Builder addressBuilder = proximityBuilder.getAddressBuilder();
  addressBuilder
      .setStreetAddress("38 avenue de l'Opéra")
      .setCityName("Paris")
      .setPostalCode("75002")
      .setCountryCode("FR");

  return builder.build();
}
      

C#

private CampaignCriterion buildProximityCriterion(string campaignResourceName)
{
    ProximityInfo proximity = new ProximityInfo()
    {
        Address = new AddressInfo()
        {
            StreetAddress = "38 avenue de l'Opéra",
            CityName = "Paris",
            PostalCode = "75002",
            CountryCode = "FR"
        },
        Radius = 10d,
        // Default is kilometers.
        RadiusUnits = ProximityRadiusUnits.Miles
    };

    return new CampaignCriterion()
    {
        Campaign = campaignResourceName,
        Proximity = proximity
    };
}
      

PHP

private static function createProximityCampaignCriterionOperation(string $campaignResourceName)
{
    // Constructs a campaign criterion as a proximity.
    $campaignCriterion = new CampaignCriterion([
        'proximity' => new ProximityInfo([
            'address' => new AddressInfo([
                'street_address' => '38 avenue de l\'Opéra',
                'city_name' => 'Paris',
                'postal_code' => '75002',
                'country_code' => 'FR',
            ]),
            'radius' => 10.0,
            // Default is kilometers.
            'radius_units' => ProximityRadiusUnits::MILES
        ]),
        'campaign' => $campaignResourceName
    ]);

    return new CampaignCriterionOperation(['create' => $campaignCriterion]);
}
      

Python

def create_proximity_op(
    client: GoogleAdsClient, customer_id: str, campaign_id: str
) -> CampaignCriterionOperation:
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )

    # Create the campaign criterion.
    campaign_criterion_operation: CampaignCriterionOperation = client.get_type(
        "CampaignCriterionOperation"
    )
    campaign_criterion: CampaignCriterion = campaign_criterion_operation.create
    campaign_criterion.campaign = campaign_service.campaign_path(
        customer_id, campaign_id
    )
    campaign_criterion.proximity.address.street_address = "38 avenue de l'Opera"
    campaign_criterion.proximity.address.city_name = "Paris"
    campaign_criterion.proximity.address.postal_code = "75002"
    campaign_criterion.proximity.address.country_code = "FR"
    campaign_criterion.proximity.radius = 10
    # Default is kilometers.
    campaign_criterion.proximity.radius_units = (
        client.enums.ProximityRadiusUnitsEnum.MILES
    )

    return campaign_criterion_operation
      

Ruby

def create_proximity(client, customer_id, campaign_id)
  client.operation.create_resource.campaign_criterion do |criterion|
    criterion.campaign = client.path.campaign(customer_id, campaign_id)

    criterion.proximity = client.resource.proximity_info do |proximity|
      proximity.address = client.resource.address_info do |address|
        address.street_address = "38 avenue de l'Opéra"
        address.city_name = "Paris"
        address.postal_code = "75002"
        address.country_code = "FR"
      end

      proximity.radius = 10
      proximity.radius_units = :MILES
    end
  end
end
      

Perl

sub create_proximity_campaign_criterion_operation {
  my ($campaign_resource_name) = @_;

  # Construct a campaign criterion as a proximity.
  my $campaign_criterion =
    Google::Ads::GoogleAds::V25::Resources::CampaignCriterion->new({
      proximity => Google::Ads::GoogleAds::V25::Common::ProximityInfo->new({
          address => Google::Ads::GoogleAds::V25::Common::AddressInfo->new({
              streetAddress => "38 avenue de l'Opéra",
              cityName      => "cityName",
              postalCode    => "75002",
              countryCode   => "FR"
            }
          ),
          radius => 10.0,
          # Default is kilometers.
          radiusUnits => MILES
        }
      ),
      campaign => $campaign_resource_name
    });

  return
    Google::Ads::GoogleAds::V25::Services::CampaignCriterionService::CampaignCriterionOperation
    ->new({
      create => $campaign_criterion
    });
}
      

curl

지역 타겟 가져오기

GoogleAdsService.SearchStream를 사용하여 캠페인의 지역 타겟을 검색할 수 있습니다. SELECT 절에 campaign_criterion.type 및 campaign_criterion.resource_name를 포함하면 LOCATION 및 PROXIMITY 기준을 구분하고 후속 업데이트 또는 삭제를 위해 리소스 이름을 기록할 수 있습니다.

SELECT
  campaign_criterion.resource_name,
  campaign_criterion.campaign,
  campaign_criterion.type,
  campaign_criterion.location.geo_target_constant,
  campaign_criterion.proximity.geo_point.longitude_in_micro_degrees,
  campaign_criterion.proximity.geo_point.latitude_in_micro_degrees,
  campaign_criterion.proximity.radius,
  campaign_criterion.proximity.radius_units,
  campaign_criterion.proximity.address.street_address,
  campaign_criterion.proximity.address.city_name,
  campaign_criterion.proximity.address.postal_code,
  campaign_criterion.proximity.address.country_code,
  campaign_criterion.negative
FROM campaign_criterion
WHERE
  campaign_criterion.campaign = 'customers/{customer_id}/campaigns/{campaign_id}'
  AND campaign_criterion.type IN ('LOCATION', 'PROXIMITY')

지역 타겟 업데이트

캠페인의 위치 기준은 생성 후 변경할 수 없으므로 캠페인의 지역 타겟을 업데이트하려면 단일 원자 CampaignCriterionService.MutateCampaignCriteria 요청에서 오래된 타겟을 새 타겟으로 바꿔야 합니다.

  1. 지역 타겟 가져오기에서 GAQL 쿼리를 사용하여 캠페인의 기존 LOCATION 및 PROXIMITY 기준을 쿼리합니다.
  2. 기존 기준과 의도한 타겟 목록을 비교합니다.
  3. 지원 중단된 각 기준에 대해 remove이 기존 기준의 resource_name로 설정된 CampaignCriterionOperation를 빌드합니다.
  4. 각 새 위치 또는 인접 타겟팅의 경우 새 LocationInfo 또는 ProximityInfo 기준으로 채워진 create로 CampaignCriterionOperation를 빌드합니다.
  5. 전환이 원자적으로 발생하도록 단일 MutateCampaignCriteria 호출에서 remove 및 create 작업을 모두 전달합니다.

지역 타겟 제외

LocationInfo는 제외할 수 있지만 ProximityInfo는 제외할 수 없습니다. 이 기능은 리전을 타겟팅하되 하위 지역을 제외하려는 경우 (예: 뉴욕시를 제외한 미국 전체를 타겟팅)에 가장 유용합니다. 리전을 제외하려면 CampaignCriterion의 negative 필드를 true로 설정합니다.

여러 지리적 리전 타겟팅

LocationGroupInfo을 사용하는 경우 위치 확장 소재로 정의되거나 지리적 리전으로 필터링된 위치를 중심으로 여러 지리적 리전을 타겟팅하도록 캠페인을 사용 설정할 수 있습니다.

  • 위치 애셋 세트: enable_customer_level_location_asset_set = true (고객의 위치 애셋 세트를 타겟팅) 또는 location_group_asset_sets (특정 AssetSet 리소스 이름을 타겟팅)를 설정합니다. 이 두 필드는 함께 설정할 수 없으며 geo_target_constants와 결합할 수도 없습니다.
  • 반경 및 단위: LocationGroupInfo의 반경은 각 위치 주변의 원형 영역을 정의하며 radius 및 radius_units(LocationGroupRadiusUnitsEnum)이 모두 필요합니다.
    • 위치 애셋 세트(enable_customer_level_location_asset_set 또는 location_group_asset_sets)를 사용하는 경우 지원되는 radius_units 값은 MILLI_MILES 및 METERS입니다.
    • geo_target_constants로 필터링하는 경우 (최대 하나의 기준 ID가 허용되고 AssetSet 필드가 설정되지 않음) 지원되는 radius_units 값은 MILES 및 METERS입니다.

GeoTargetTypeSetting의 고급 위치 옵션

타겟팅하거나 제외할 위치를 지정하는 것 외에도 고급 위치 옵션을 사용하여 Google Ads에서 사용자를 이러한 위치와 일치시키는 방법을 세부적으로 조정할 수 있습니다. 이러한 설정은 Campaign.GeoTargetTypeSetting을 통해 관리됩니다.

이 설정은 두 개의 필드로 구성됩니다.

  • positive_geo_target_type: 타겟팅하는 위치에 대해 사용자가 매칭되는 방식을 결정합니다.
  • negative_geo_target_type: 제외한 위치에 대해 사용자가 매칭되는 방식을 결정합니다.

포함 타겟팅 설정 (positive_geo_target_type)

PositiveGeoTargetTypeEnum의 값을 사용하여 긍정적 위치 타겟팅에 대해 다음 옵션 중에서 선택할 수 있습니다.

  • PRESENCE_OR_INTEREST (권장 기본값):

    • 타겟 지역에 거주하고 있을 가능성이 크거나 자주 방문하는 사용자 또는 이 지역에 관심을 보인 사용자에게 도달합니다.
    • 관심은 검색어, 이전 방문 또는 위치와 관련된 소비된 콘텐츠로 표시될 수 있습니다.
    • 이 옵션은 가장 넓은 도달범위를 제공합니다.
  • PRESENCE:

    • 타겟 위치에 실제로 거주하거나 자주 방문하는 사용자에게만 도달합니다.
    • 이 옵션은 서비스 또는 제품이 특정 지역에 있는 사용자에게만 제공되는 경우에 더 제한적이고 유용합니다.

제외 타겟팅 설정 (negative_geo_target_type)

제외하려는 위치의 경우 NegativeGeoTargetTypeEnum를 사용합니다.

  • PRESENCE (권장 기본값):
    • 제외한 위치에 실제로 거주할 가능성이 높은 사용자를 제외합니다.
    • 제외 지역 외부에 있는 사용자는 해당 지역에 관심이 있더라도 긍정적 타겟팅과 일치하는 경우 광고가 계속 게재될 수 있습니다.

고급 위치 옵션 관리

Campaign.geo_target_type_setting 객체를 업데이트하여 이러한 설정을 제어할 수 있습니다. 다음 예는 positive_geo_target_type을 PRESENCE로 설정하는 CampaignOperation 업데이트의 구조를 보여줍니다.

// Conceptual structure for a Campaign update operation
operations {
  update {
    resource_name: "customers/{customer_id}/campaigns/{campaign_id}"
    geo_target_type_setting {
      positive_geo_target_type: PRESENCE
      // negative_geo_target_type remains at its default PRESENCE
    }
  }
  update_mask {
    paths: "geo_target_type_setting.positive_geo_target_type"
  }
}

현재 설정을 가져오려면 GoogleAdsService 검색어에 campaign.geo_target_type_setting.positive_geo_target_type 및 campaign.geo_target_type_setting.negative_geo_target_type를 포함하세요.

이러한 설정을 구성하면 지정한 지리적 위치와의 관계에 따라 광고를 보는 사용자를 더 세부적으로 관리하여 비즈니스 목표에 더 가깝게 맞출 수 있습니다.

권장사항

  • 제품 또는 서비스가 특정 위치에 물리적으로 있는 사람으로 엄격하게 제한되는 경우 PRESENCE을 선택하세요. 예를 들어 사용자가 매장에 있어야 하거나 현지 배송이 필요하다고 가정해 보겠습니다.
  • 제품 또는 서비스가 물리적으로 존재하지 않더라도 위치에 관심이 있는 사용자에게도 도움이 될 수 있는 경우 PRESENCE_OR_INTEREST를 선택합니다. 예를 들어 휴가를 계획하는 사용자는 목적지 도시의 호텔에 관심이 있을 수 있습니다.
  • 제외 위치 타겟팅을 사용하여 도달범위를 조정합니다. PRESENCE_OR_INTEREST로 미국을 타겟팅하지만 특정 주로는 배송하지 않는 경우 LocationInfo 기준에서 negative=true를 사용하여 해당 주를 제외할 수 있습니다. negative_geo_target_type를 PRESENCE로 설정하면 해당 주의 사용자에게 광고가 게재되지 않지만, 미국 위치에 관심이 있을 수 있는 해당 주 외부의 사용자에게는 광고가 게재됩니다.

다음 단계