Nachfragegenerierung

Mit Demand Gen-Kampagnen können Sie die Geschichte Ihrer Marke auf den visuellen Plattformen von Google präsentieren: YouTube (einschließlich Shorts), Discover, Gmail, Google Maps und im Google Displaynetzwerk. Mit Demand Gen-Kampagnen erreichen Sie potenzielle Kunden über mehrere Touchpoints hinweg. Mithilfe von Google AI werden Creatives für relevante Zielgruppen ausgeliefert und Gebote im gesamten Trichter optimiert. Gleichzeitig behalten Sie die volle Kontrolle über Ihre Kampagnen-Assets und ‑Placements.

Wichtige API-Ressourcen

Wenn Sie Demand Gen-Kampagnen in der Google Ads API verwalten, arbeiten Sie mit den folgenden Ressourcen und Einstellungen:

Primäre Ressource Wichtige Felder und Einstellungen für Demand Gen-Kampagnen
CampaignBudget explicitly_shared = false; unterstützt Tagesbudgets (amount_micros) oder benutzerdefinierte Gesamtbudgets (total_amount_micros mit period = CUSTOM_PERIOD).
Campaign advertising_channel_type = DEMAND_GEN; Gebotsstrategie (maximize_conversions, maximize_conversion_value, target_cpa, target_roas, target_spend oder target_cpc); optional shopping_setting für Produktfeeds.
AdGroup audience_setting.use_audience_grouped; demand_gen_ad_group_settings.channel_controls (YouTube, Discover, Gmail, Maps, Display).
AdGroupCriterion audience (AudienceInfo), location, language und listing_group ( ListingGroupInfo).
AdGroupAd und Asset ad.demand_gen_multi_asset_ad, ad.demand_gen_carousel_ad, ad.demand_gen_video_responsive_ad oder ad.demand_gen_product_ad.

Demand Gen-Kampagne erstellen

Wir empfehlen, Budget, Kampagne, Anzeigengruppe, Assets und Demand Gen-Anzeige atomar in einer einzigen GoogleAdsService.Mutate-Anfrage mit negativen temporären Ressourcen-IDs zu erstellen, damit abhängige Ressourcen aufeinander verweisen können:

Java

// The below methods create and return MutateOperations that we later provide to
// the GoogleAdsService.Mutate method in order to create the entities in a single
// request. Since the entities for a Demand Gen campaign are closely tied to one-another
// it's considered a best practice to create them in a single Mutate request; the
// entities will either all complete successfully or fail entirely, leaving no
// orphaned entities. See:
// https://developers.google.com/google-ads/api/docs/mutating/overview
List<MutateOperation> operations = new ArrayList<>();
// A utility to create temporary IDs for the resources.
AtomicLong tempId = new AtomicLong(-1);

// Creates a new campaign budget operation and adds it to the list of operations.
String budgetResourceName = ResourceNames.campaignBudget(customerId, tempId.getAndDecrement());
operations.add(
    MutateOperation.newBuilder()
        .setCampaignBudgetOperation(createCampaignBudgetOperation(budgetResourceName))
        .build());

// Creates a new campaign operation and adds it to the list of operations.
String campaignResourceName = ResourceNames.campaign(customerId, tempId.getAndDecrement());
operations.add(
    MutateOperation.newBuilder()
        .setCampaignOperation(
            createDemandGenCampaignOperation(campaignResourceName, budgetResourceName))
        .build());

// Creates a new ad group operation and adds it to the list of operations.
String adGroupResourceName = ResourceNames.adGroup(customerId, tempId.getAndDecrement());
operations.add(
    MutateOperation.newBuilder()
        .setAdGroupOperation(
            createDemandGenAdGroupOperation(adGroupResourceName, campaignResourceName))
        .build());

// Creates the asset operations for the ad.
Map<String, String> assetResourceNames = new HashMap<>();
operations.addAll(
    createAssetOperations(customerId, youTubeVideoId, tempId, assetResourceNames));

// Creates a new ad group ad operation and adds it to the list of operations.
operations.add(
    MutateOperation.newBuilder()
        .setAdGroupAdOperation(
            createDemandGenAdGroupAdOperation(adGroupResourceName, assetResourceNames))
        .build());

// Creates the service client.
try (GoogleAdsServiceClient googleAdsServiceClient =
    googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
  // Sends the mutate request.
  MutateGoogleAdsResponse response =
      googleAdsServiceClient.mutate(String.valueOf(customerId), operations);

  // Prints the results.
  System.out.printf(
      "Created campaign with resource name: %s%n",
      response
          .getMutateOperationResponses(1)
          .getCampaignResult()
          .getResourceName());
  System.out.printf(
      "Created ad group with resource name: %s%n",
      response
          .getMutateOperationResponses(2)
          .getAdGroupResult()
          .getResourceName());
  for (Map.Entry<String, String> entry : assetResourceNames.entrySet()) {
    System.out.printf(
        "Created asset with temporary resource name '%s' and final resource name '%s'.%n",
        entry.getValue(),
        response
            .getMutateOperationResponses(
                operations.indexOf(getOperationForAsset(operations, entry.getValue())))
            .getAssetResult()
            .getResourceName());
  }
  System.out.printf(
      "Created ad group ad with resource name: %s%n",
      response
          .getMutateOperationResponses(operations.size() - 1)
          .getAdGroupAdResult()
          .getResourceName());
}
      

C#

// The below methods create and return MutateOperations that we later provide to
// the GoogleAdsService.Mutate method in order to create the entities in a single
// request. Since the entities for a Demand Gen campaign are closely tied to one-another
// it's considered a best practice to create them in a single Mutate request; the
// entities will either all complete successfully or fail entirely, leaving no
// orphaned entities. See:
// https://developers.google.com/google-ads/api/docs/mutating/overview
MutateOperation campaignBudgetOperation =
    CreateCampaignBudgetOperation(budgetResourceName);
MutateOperation campaignOperation =
    CreateDemandGenCampaignOperation(campaignResourceName, budgetResourceName);
MutateOperation adGroupOperation =
    CreateAdGroupOperation(adGroupResourceName, campaignResourceName);

// Send the operations in a single mutate request.
MutateGoogleAdsRequest mutateGoogleAdsRequest = new MutateGoogleAdsRequest
{
    CustomerId = customerId.ToString()
};
// It's important to create these entities in this order because they depend on
// each other, for example the ad group depends on the
// campaign, and the ad group ad depends on the ad group.
mutateGoogleAdsRequest.MutateOperations.Add(campaignBudgetOperation);
mutateGoogleAdsRequest.MutateOperations.Add(campaignOperation);
mutateGoogleAdsRequest.MutateOperations.Add(adGroupOperation);

mutateGoogleAdsRequest.MutateOperations.AddRange(
    CreateAssetOperations(
        videoAssetResourceName,
        videoId,
        logoResourceName,
        client.Config
    )
);

mutateGoogleAdsRequest.MutateOperations.Add(
    CreateDemandGenAdOperation(
        adGroupResourceName,
        videoAssetResourceName,
        logoResourceName
    )
);

MutateGoogleAdsResponse response =
        googleAdsServiceClient.Mutate(mutateGoogleAdsRequest);
      

PHP

This example is not yet available in PHP; you can take a look at the other languages.
    

Python

# The below methods create and return MutateOperations that we later provide
# to the GoogleAdsService.Mutate method in order to create the entities in a
# single request. Since the entities for a Demand Gen campaign are closely
# tied to one-another it's considered a best practice to create them in a
# single Mutate request; the entities will either all complete successfully
# or fail entirely, leaving no orphaned entities. See:
# https://developers.google.com/google-ads/api/docs/mutating/overview
mutate_operations: List[MutateOperation] = [
    # It's important to create these entities in this order because they
    # depend on each other, for example the ad group depends on the
    # campaign, and the ad group ad depends on the ad group.
    create_campaign_budget_operation(client, budget_resource_name),
    create_demand_gen_campaign_operation(
        client, campaign_resource_name, budget_resource_name
    ),
    create_ad_group_operation(
        client, ad_group_resource_name, campaign_resource_name
    ),
    *create_asset_operations(  # Use iterable unpacking
        client,
        video_asset_resource_name,
        video_id,
        logo_asset_resource_name,
    ),
    create_demand_gen_ad_operation(
        client,
        ad_group_resource_name,
        video_asset_resource_name,
        logo_asset_resource_name,
    ),
]

# Send the operations in a single mutate request.
googleads_service.mutate(
    customer_id=customer_id, mutate_operations=mutate_operations
)
      

Ruby

operations = []

operations << client.operation.mutate do |m|
  m.campaign_budget_operation = create_campaign_budget_operation(client, budget_resource_name)
end

operations << client.operation.mutate do |m|
  m.campaign_operation = create_demand_gen_campaign_operation(client, campaign_resource_name, budget_resource_name)
end

operations << client.operation.mutate do |m|
  m.ad_group_operation = create_ad_group_operation(client, ad_group_resource_name, campaign_resource_name)
end

operations += create_asset_operations(client, video_asset_resource_name, video_id, logo_asset_resource_name).map do |asset_op|
  client.operation.mutate do |m|
    m.asset_operation = asset_op
  end
end

operations << client.operation.mutate do |m|
  m.ad_group_ad_operation = create_demand_gen_ad_operation(client, ad_group_resource_name, video_asset_resource_name, logo_asset_resource_name)
end

response = client.service.google_ads.mutate(
  customer_id: customer_id,
  mutate_operations: operations,
)
      

Perl

# The below methods create and return MutateOperations that we later provide to
# the GoogleAdsService.Mutate method in order to create the entities in a single
# request. Since the entities for a Demand Gen campaign are closely tied to one-another
# it's considered a best practice to create them in a single Mutate request; the
# entities will either all complete successfully or fail entirely, leaving no
# orphaned entities. See:
#  https://developers.google.com/google-ads/api/docs/mutating/overview
my $campaign_budget_operation =
  create_campaign_budget_operation($budget_resource_name);
my $campaign_operation =
  create_demand_gen_campaign_operation($campaign_resource_name,
  $budget_resource_name);
my $ad_group_operation =
  create_ad_group_operation($ad_group_resource_name, $campaign_resource_name);
my $asset_operations =
  create_asset_operations($video_asset_resource_name, $video_id,
  $logo_resource_name);
my $demand_gen_ad_operation =
  create_demand_gen_ad_operation($ad_group_resource_name,
  $video_asset_resource_name, $logo_resource_name);

# Send the operations in a single mutate request.
my $response = $api_client->GoogleAdsService()->mutate({
    customerId       => $customer_id,
    mutateOperations => [(
        $campaign_budget_operation, $campaign_operation,
        $ad_group_operation,        @$asset_operations,
        $demand_gen_ad_operation
      )]});
      

curl

Eine detaillierte Anleitung zu Budgets, Gebotsstrategien und Anzeigenformaten finden Sie unter Demand Gen-Kampagne erstellen.

Demand Gen-Kampagnen abfragen

Mit GoogleAdsService.SearchStream können Sie Attribute und Leistungsmesswerte von Demand Gen-Kampagnen abrufen, die nach Werbenetzwerk und YouTube-Oberfläche segmentiert sind. segments.ad_network_type und segments.ad_sub_network_type müssen zusammen ausgewählt werden:

SELECT
  campaign.id,
  campaign.name,
  campaign.status,
  campaign.bidding_strategy_type,
  segments.ad_network_type,
  segments.ad_sub_network_type,
  metrics.impressions,
  metrics.clicks,
  metrics.conversions,
  metrics.cost_micros
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN
  AND segments.date DURING LAST_30_DAYS

Informationen zu Abfragen auf Anzeigenebene, Asset-Ebene sowie zur Aufschlüsselung von Conversions finden Sie unter Berichte zu Demand Gen-Kampagnen.

Nächste Schritte