حداکثر عملکرد برای فروش آنلاین با فید محصول (خرده فروشی)

Performance Max برای خرده‌فروشی به شما کمک می‌کند تا با ارائه فرصت خدمت در موجودی اضافی، دسترسی و اهداف خود را گسترش دهید.

ممکن است لازم باشد دارایی‌های جدیدی ایجاد کنید - مانند متن، تصویر یا ویدیو - برای فعال کردن تبلیغات در قالب‌ها و سطوح جدید - مانند متن، Discover، YouTube در جریان، و نمایش.

اگر اطلاعات بینش منحصربه‌فردی در مورد اینکه کدام بخش از کاربران شما به احتمال زیاد تبدیل می‌شوند دارید، اکنون می‌توانید از سیگنال‌های مخاطب برای اطلاع دادن به Google استفاده کنید.

در اینجا برخی از پیشرفت‌های بیشتر کمپین‌های Performance Max نسبت به کمپین‌های خرید استاندارد ارائه می‌شود:

  • هدف‌گیری زبان بر اساس فید Merchant Center یا معیارهای کمپین
  • گسترش URL نهایی
  • زمانی که هدف بازدید از فروشگاه انتخاب می شود، همه فروشگاه ها هدف قرار می گیرند
  • امکان تعیین اهداف تبدیل بر اساس هر مشتری یا هر کمپین

برای استفاده از Performance Max برای خرده‌فروشی، حساب Google Ads باید به یک حساب Merchant Center موجود مرتبط باشد. با پیوند دادن به Merchant Center، دارایی ها می توانند به طور خودکار برای کمپین ایجاد شوند، اما دسترسی و عملکرد محدود خواهد بود.

گروه های دارایی را اضافه کنید

افزودن گروه دارایی، خرید و کانال‌های بازاریابی مجدد پویا را فعال می‌کند، و تنظیم گسترش URL ، تبلیغات جستجوی پویا را فعال می‌کند. به طور کلی، هر چه دارایی های بیشتری ارائه کنید، سیستم قالب های تبلیغاتی بیشتری می تواند برای هدف قرار دادن موجودی اضافی ایجاد کند.

ما توصیه می کنیم که هر گروه دارایی محصولات مختلفی را هدف قرار دهد. توجه داشته باشید که برای فهرست کردن گروه ها محدودیت هایی وجود دارد. به عنوان بهترین روش، شما باید فقط مجموعه خاصی از محصولات را از یک گروه دارایی هدف قرار دهید - برای مثال، محصولات AL در گروه دارایی 1 و محصولات MZ در گروه دارایی 2 قرار خواهند گرفت.

اگر می‌خواهید پیام‌های دارایی خود را بر اساس مخاطبان سفارشی کنید، می‌توانید چندین گروه دارایی در هر کمپین ایجاد کنید. به این ترتیب، می‌توانید گروه‌های دارایی مختلفی را برای یک URL نهایی ایجاد کنید.

هنگام راه‌اندازی کمپین حداکثر عملکرد ، نکات بهینه‌سازی بیشتری را مشاهده کنید.

یک کمپین خرده فروشی Performance Max ایجاد کنید

مانند سایر کمپین های خرید ، فیلدهای ShoppingSetting کمپین را تنظیم کنید.

مورد نیاز

merchant_id
شناسه Merchant Center حسابی که حاوی محصولات برای تبلیغ است.

اختیاری

feed_label

رشته ای که برای برچسب فید همانطور که در Merchant Center شما تعریف شده است استفاده می شود. این فیلد باید در مواردی استفاده شود که باید محصولاتی را از یک فید Merchant Center خاص انتخاب کنید. اگر مشخص نشده باشد، کمپین از تمام فیدهای موجود در Merchant Center استفاده می کند.

اگر قبلاً از sales_country منسوخ استفاده کرده‌اید، در قالب کد کشور دو حرفی ( XX )، باید به جای آن feed_label استفاده شود. برای اطلاعات بیشتر به مقاله پشتیبانی برچسب خوراک مراجعه کنید.

توجه داشته باشید که ارسال کد کشور در یک feed_label به طور خودکار تبلیغات را در آن کشور فعال نمی کند. ابتدا باید هدف گذاری موقعیت جغرافیایی را تنظیم کنید .

campaign_priority

اولویت کمپین خرید. کمپین هایی با اولویت های عددی بالاتر بر کمپین هایی که اولویت های کمتری دارند اولویت دارند.

enable_local

گزینه فعال کردن تبلیغات برای محصولات فروخته شده در فروشگاه های محلی برای این کمپین.

اگر موجودی موجود باشد، محصولات محلی به طور پیش‌فرض روشن می‌شوند. این را می توان با استفاده از گروه های فهرست بندی فیلتر کرد.

language

می توانید چندین زبان را برای نمایش تبلیغات خود به مجموعه خاصی از مشتریان انتخاب کنید.

اهداف تبدیل

می‌توانید با به‌روزرسانی اهداف تبدیل در سطح کمپین همانطور که در این مثال نشان داده شده است، اهداف تبدیل در سطح مشتری را نادیده بگیرید:

جاوا

/** Retrieves the list of customer conversion goals. */
private static List<CustomerConversionGoal> getCustomerConversionGoals(
    GoogleAdsClient googleAdsClient, long customerId) {
  String query =
      "SELECT customer_conversion_goal.category, customer_conversion_goal.origin "
          + "FROM customer_conversion_goal";

  List<CustomerConversionGoal> customerConversionGoals = new ArrayList<>();
  try (GoogleAdsServiceClient googleAdsServiceClient =
      googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
    // The number of conversion goals is typically less than 50, so we use
    // GoogleAdsService.search instead of search_stream.
    SearchPagedResponse response =
        googleAdsServiceClient.search(Long.toString(customerId), query);
    for (GoogleAdsRow googleAdsRow : response.iterateAll()) {
      customerConversionGoals.add(googleAdsRow.getCustomerConversionGoal());
    }
  }

  return customerConversionGoals;
}

/** Creates a list of MutateOperations that override customer conversion goals. */
private static List<MutateOperation> createConversionGoalOperations(
    long customerId, List<CustomerConversionGoal> customerConversionGoals) {
  List<MutateOperation> mutateOperations = new ArrayList<>();
  // To override the customer conversion goals, we will change the
  // biddability of each of the customer conversion goals so that only
  // the desired conversion goal is biddable in this campaign.
  for (CustomerConversionGoal customerConversionGoal : customerConversionGoals) {
    ConversionActionCategory category = customerConversionGoal.getCategory();
    ConversionOrigin origin = customerConversionGoal.getOrigin();
    String campaignConversionGoalResourceName =
        ResourceNames.campaignConversionGoal(
            customerId, PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID, category, origin);
    CampaignConversionGoal.Builder campaignConversionGoalBuilder =
        CampaignConversionGoal.newBuilder().setResourceName(campaignConversionGoalResourceName);
    // Change the biddability for the campaign conversion goal.
    // Set biddability to True for the desired (category, origin).
    // Set biddability to False for all other conversion goals.
    // Note:
    //  1- It is assumed that this Conversion Action
    //     (category=PURCHASE, origin=WEBSITE) exists in this account.
    //  2- More than one goal can be biddable if desired. This example
    //     shows only one.
    if (category == ConversionActionCategory.PURCHASE && origin == ConversionOrigin.WEBSITE) {
      campaignConversionGoalBuilder.setBiddable(true);
    } else {
      campaignConversionGoalBuilder.setBiddable(false);
    }
    CampaignConversionGoal campaignConversionGoal = campaignConversionGoalBuilder.build();
    CampaignConversionGoalOperation campaignConversionGoalOperation =
        CampaignConversionGoalOperation.newBuilder()
            .setUpdate(campaignConversionGoal)
            .setUpdateMask(FieldMasks.allSetFieldsOf(campaignConversionGoal))
            .build();
    mutateOperations.add(
        MutateOperation.newBuilder()
            .setCampaignConversionGoalOperation(campaignConversionGoalOperation)
            .build());
  }
  return mutateOperations;
}

      

سی شارپ

/// <summary>
/// Creates a MutateOperation that links an asset to an asset group.
/// </summary>
/// <param name="fieldType">The field type of the asset to be linked.</param>
/// <param name="assetGroupResourceName">The resource name of the asset group
/// to link the asset to.</param>
/// <param name="assetResourceName">The resource name of the text asset to be
/// linked.</param>
/// <returns>A MutateOperation that links an asset to an asset group.</returns>
private MutateOperation CreateLinkAssetOperation(
    AssetFieldType fieldType,
    string assetGroupResourceName,
    string assetResourceName) => new MutateOperation()
    {
        AssetGroupAssetOperation = new AssetGroupAssetOperation()
        {
            Create = new AssetGroupAsset()
            {
                FieldType = fieldType,
                AssetGroup = assetGroupResourceName,
                Asset = assetResourceName
            }
        }
    };

      

PHP

private static function getCustomerConversionGoals(
    GoogleAdsClient $googleAdsClient,
    int $customerId
): array {
    $customerConversionGoals = [];
    $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
    // Creates a query that retrieves all customer conversion goals.
    $query = 'SELECT customer_conversion_goal.category, customer_conversion_goal.origin ' .
        'FROM customer_conversion_goal';
    // The number of conversion goals is typically less than 50 so we use a search request
    // instead of search stream.
    $response =
        $googleAdsServiceClient->search(SearchGoogleAdsRequest::build($customerId, $query));

    // Iterates over all rows in all pages and builds the list of conversion goals.
    foreach ($response->iterateAllElements() as $googleAdsRow) {
        /** @var GoogleAdsRow $googleAdsRow */
        $customerConversionGoals[] = [
            'category' => $googleAdsRow->getCustomerConversionGoal()->getCategory(),
            'origin' => $googleAdsRow->getCustomerConversionGoal()->getOrigin()
        ];
    }

    return $customerConversionGoals;
}

/**
 * Creates a list of MutateOperations that override customer conversion goals.
 *
 * @param int $customerId the customer ID
 * @param array $customerConversionGoals the list of customer conversion goals that will be
 *      overridden
 * @return MutateOperation[] a list of MutateOperations that update campaign conversion goals
 */
private static function createConversionGoalOperations(
    int $customerId,
    array $customerConversionGoals
): array {
    $operations = [];

    // To override the customer conversion goals, we will change the biddability of each of the
    // customer conversion goals so that only the desired conversion goal is biddable in this
    // campaign.
    foreach ($customerConversionGoals as $customerConversionGoal) {
        $campaignConversionGoal = new CampaignConversionGoal([
            'resource_name' => ResourceNames::forCampaignConversionGoal(
                $customerId,
                self::PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID,
                ConversionActionCategory::name($customerConversionGoal['category']),
                ConversionOrigin::name($customerConversionGoal['origin'])
            )
        ]);
        // Changes the biddability for the campaign conversion goal.
        // Sets biddability to true for the desired (category, origin).
        // Sets biddability to false for all other conversion goals.
        // Note:
        //  1- It is assumed that this Conversion Action
        //     (category=PURCHASE, origin=WEBSITE) exists in this account.
        //  2- More than one goal can be biddable if desired. This example
        //     shows only one.
        if (
            $customerConversionGoal["category"] === ConversionActionCategory::PURCHASE
            && $customerConversionGoal["origin"] === ConversionOrigin::WEBSITE
        ) {
            $campaignConversionGoal->setBiddable(true);
        } else {
            $campaignConversionGoal->setBiddable(false);
        }

        $operations[] = new MutateOperation([
            'campaign_conversion_goal_operation' => new CampaignConversionGoalOperation([
                'update' => $campaignConversionGoal,
                // Sets the update mask on the operation. Here the update mask will be a list
                // of all the fields that were set on the update object.
                'update_mask' => FieldMasks::allSetFieldsOf($campaignConversionGoal)
            ])
        ]);
    }

    return $operations;
}
      

پایتون

def get_customer_conversion_goals(client, customer_id):
    """Retrieves the list of customer conversion goals.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.

    Returns:
        a list of dicts containing the category and origin of customer
        conversion goals.
    """
    ga_service = client.get_service("GoogleAdsService")
    customer_conversion_goals = []
    query = """
            SELECT
              customer_conversion_goal.category,
              customer_conversion_goal.origin
            FROM customer_conversion_goal
            """
    # The number of conversion goals is typically less than 50 so we use
    # GoogleAdsService.search instead of search_stream.
    search_request = client.get_type("SearchGoogleAdsRequest")
    search_request.customer_id = customer_id
    search_request.query = query
    results = ga_service.search(request=search_request)

    # Iterate over the results and build the list of conversion goals.
    for row in results:
        customer_conversion_goals.append(
            {
                "category": row.customer_conversion_goal.category,
                "origin": row.customer_conversion_goal.origin,
            }
        )
    return customer_conversion_goals


def create_conversion_goal_operations(
    client,
    customer_id,
    customer_conversion_goals,
):
    """Creates a list of MutateOperations that override customer conversion goals.

    Args:
        client: an initialized GoogleAdsClient instance.
        customer_id: a client customer ID.
        customer_conversion_goals: the list of customer conversion goals that
          will be overridden.

    Returns:
        MutateOperations that update campaign conversion goals.
    """
    campaign_conversion_goal_service = client.get_service(
        "CampaignConversionGoalService"
    )
    operations = []

    # To override the customer conversion goals, we will change the
    # biddability of each of the customer conversion goals so that only
    # the desired conversion goal is biddable in this campaign.
    for customer_conversion_goal in customer_conversion_goals:
        mutate_operation = client.get_type("MutateOperation")
        campaign_conversion_goal = (
            mutate_operation.campaign_conversion_goal_operation.update
        )

        campaign_conversion_goal.resource_name = (
            campaign_conversion_goal_service.campaign_conversion_goal_path(
                customer_id,
                _PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID,
                customer_conversion_goal["category"].name,
                customer_conversion_goal["origin"].name,
            )
        )
        # Change the biddability for the campaign conversion goal.
        # Set biddability to True for the desired (category, origin).
        # Set biddability to False for all other conversion goals.
        # Note:
        #  1- It is assumed that this Conversion Action
        #     (category=PURCHASE, origin=WEBSITE) exists in this account.
        #  2- More than one goal can be biddable if desired. This example
        #     shows only one.
        if (
            customer_conversion_goal["category"]
            == client.enums.ConversionActionCategoryEnum.PURCHASE
            and customer_conversion_goal["origin"]
            == client.enums.ConversionOriginEnum.WEBSITE
        ):
            biddable = True
        else:
            biddable = False
        campaign_conversion_goal.biddable = biddable
        field_mask = protobuf_helpers.field_mask(
            None, campaign_conversion_goal._pb
        )
        client.copy_from(
            mutate_operation.campaign_conversion_goal_operation.update_mask,
            field_mask,
        )
        operations.append(mutate_operation)

    return operations
      

روبی

def _get_customer_conversion_goals(client, customer_id)
  query = <<~EOD
    SELECT
        customer_conversion_goal.category,
        customer_conversion_goal.origin
    FROM customer_conversion_goal
  EOD

  customer_conversion_goals = []

  ga_service = client.service.google_ads
  # The number of conversion goals is typically less than 50 so we use
  # GoogleAdsService.search instead of search_stream.
  response = ga_service.search(
      customer_id: customer_id,
      query: query,
      page_size: PAGE_SIZE,
  )

  # Iterate over the results and build the list of conversion goals.
  response.each do |row|
    customer_conversion_goals << {
        "category" => row.customer_conversion_goal.category,
        "origin" => row.customer_conversion_goal.origin
    }
  end

  customer_conversion_goals
end

def create_conversion_goal_operations(client, customer_id, customer_conversion_goals)
  campaign_conversion_goal_service = client.service.campaign_conversion_goal

  operations = []

  # To override the customer conversion goals, we will change the
  # biddability of each of the customer conversion goals so that only
  # the desired conversion goal is biddable in this campaign.
  customer_conversion_goals.each do |customer_conversion_goal|
    operations << client.operation.mutate do |m|
        m.campaign_conversion_goal_operation = client.operation.campaign_conversion_goal do |op|
          op.update = client.resource.campaign_conversion_goal do |ccg|
              ccg.resource_name = client.path.campaign_conversion_goal(
                  customer_id,
                  PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID,
                  customer_conversion_goal["category"].to_s,
                  customer_conversion_goal["origin"].to_s)
              # Change the biddability for the campaign conversion goal.
              # Set biddability to True for the desired (category, origin).
              # Set biddability to False for all other conversion goals.
              # Note:
              #  1- It is assumed that this Conversion Action
              #     (category=PURCHASE, origin=WEBSITE) exists in this account.
              #  2- More than one goal can be biddable if desired. This example
              #     shows only one.
              ccg.biddable = (customer_conversion_goal["category"] == :PURCHASE &&
                  customer_conversion_goal["origin"] == :WEBSITE)
          end
          op.update_mask = Google::Ads::GoogleAds::FieldMaskUtil.all_set_fields_of(op.update)
        end
    end
  end

  operations
end
      

پرل

sub get_customer_conversion_goals {
  my ($api_client, $customer_id) = @_;

  my $customer_conversion_goals = [];
  # Create a query that retrieves all customer conversion goals.
  my $query =
    "SELECT customer_conversion_goal.category, customer_conversion_goal.origin "
    . "FROM customer_conversion_goal";
  # The number of conversion goals is typically less than 50 so we use
  # GoogleAdsService->search() method instead of search_stream().
  my $search_response = $api_client->GoogleAdsService()->search({
    customerId => $customer_id,
    query      => $query
  });

  # Iterate over the results and build the list of conversion goals.
  foreach my $google_ads_row (@{$search_response->{results}}) {
    push @$customer_conversion_goals,
      {
      category => $google_ads_row->{customerConversionGoal}{category},
      origin   => $google_ads_row->{customerConversionGoal}{origin}};
  }

  return $customer_conversion_goals;
}

# Creates a list of MutateOperations that override customer conversion goals.
sub create_conversion_goal_operations {
  my ($customer_id, $customer_conversion_goals) = @_;

  my $operations = [];
  # To override the customer conversion goals, we will change the biddability of
  # each of the customer conversion goals so that only the desired conversion goal
  # is biddable in this campaign.
  foreach my $customer_conversion_goal (@$customer_conversion_goals) {
    my $campaign_conversion_goal =
      Google::Ads::GoogleAds::V17::Resources::CampaignConversionGoal->new({
        resourceName =>
          Google::Ads::GoogleAds::V17::Utils::ResourceNames::campaign_conversion_goal(
          $customer_id,
          PERFORMANCE_MAX_CAMPAIGN_TEMPORARY_ID,
          $customer_conversion_goal->{category},
          $customer_conversion_goal->{origin})});
    # Change the biddability for the campaign conversion goal.
    # Set biddability to true for the desired (category, origin).
    # Set biddability to false for all other conversion goals.
    # Note:
    #  1- It is assumed that this Conversion Action
    #     (category=PURCHASE, origin=WEBSITE) exists in this account.
    #  2- More than one goal can be biddable if desired. This example
    #     shows only one.
    if ( $customer_conversion_goal->{category} eq PURCHASE
      && $customer_conversion_goal->{origin} eq WEBSITE)
    {
      $campaign_conversion_goal->{biddable} = "true";
    } else {
      $campaign_conversion_goal->{biddable} = "false";
    }

    push @$operations,
      Google::Ads::GoogleAds::V17::Services::GoogleAdsService::MutateOperation
      ->new({
        campaignConversionGoalOperation =>
          Google::Ads::GoogleAds::V17::Services::CampaignConversionGoalService::CampaignConversionGoalOperation
          ->new({
            update => $campaign_conversion_goal,
            # Set the update mask on the operation. Here the update mask will be
            # a list of all the fields that were set on the update object.
            updateMask => all_set_fields_of($campaign_conversion_goal)})});
  }

  return $operations;
}
      

گزارش های خرید

از shopping_performance_view برای بازیابی معیارهای خلاصه شده توسط بخش های محصول مانند segments.product_item_id استفاده کنید.

SELECT
  segments.product_item_id,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions,
  campaign.advertising_channel_type
FROM shopping_performance_view
WHERE
  campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND segments.date DURING LAST_30_DAYS
  AND metrics.clicks > 0
ORDER BY
  metrics.all_conversions DESC,
  metrics.conversions DESC,
  metrics.clicks DESC,
  metrics.cost_micros DESC,
  metrics.impressions DESC

از asset_group_product_group_view برای بازیابی معیارهایی مانند کلیک‌ها، تبدیل‌ها، و نمایش‌های گروه فهرست مرتبط با این گروه دارایی استفاده کنید.

تبلیغات وسایل نقلیه

تبلیغ‌کنندگان می‌توانند با آپلود فید داده‌های خودرو در Merchant Center، و سپس استفاده از کمپین‌های Performance Max با فیدهای خودرو برای مدیریت تبلیغات، از تبلیغات خودرو برای تبلیغ موجودی خودرو خود استفاده کنند.

برای ایجاد کمپین Performance Max با فید وسیله نقلیه با استفاده از Google Ads API، ایجاد یک کمپین خرده فروشی را دنبال کنید و listing_type کمپین را روی VEHICLES تنظیم کنید.