リマーケティングとオーディエンス ターゲティング

リマーケティングを行うと、広告主様のウェブサイトを訪問したことのあるユーザー、モバイルアプリを使用したことのあるユーザー、CRM データベースに登録されているユーザーが他のサイトや Google 検索にアクセスしたときに、関連性の高い広告を表示できます。リマーケティングで使用されるユーザーリストは、カスタマー マッチなど、他の種類のオーディエンス ターゲティングでも使用できます。

このガイドの内容:

ユーザーに関するプライベートな情報を利用してリマーケティング リストを作成することはできません。リマーケティング キャンペーンを設定したり、ウェブサイトやアプリにリマーケティング タグを挿入する前に、ユーザーの興味や関心、所在地に基づく広告に関するポリシーを必ずご確認ください。

UserList のユーザーの種類

特定のユーザーに対するリマーケティングやターゲティングには、UserList を使用できます。このリストは、次のようなさまざまな種類のユーザーを基に作成できます。

ウェブサイトへの訪問者

ウェブサイトの訪問者で作成したユーザーリストは、最もシンプルな種類のユーザーリストです。あとで説明する詳細なターゲティングでは、たとえば、ウェブサイトの特定のページや特定のページの組み合わせに最近アクセスしたユーザーのみをターゲットとして広告をカスタマイズできます。

すべての AdWords アカウントには、アカウント作成時に自動的にアカウント単位のリマーケティング タグが 1 つ設定されます。このタグは、リマーケティングを行ったことがない場合にも利用できます。まず、CustomerService を使って、アカウントに設定されたアカウント単位のリマーケティング タグを取得します。

// Get the customer service.
CustomerServiceInterface customerService =
    adWordsServices.get(session, CustomerServiceInterface.class);

// Retrieve the Customer object for the session. Make sure
// that the session's clientCustomerId is set to your account's
// ID.
Customer customer = customerService.getCustomers()[0];

// Print the account level remarketing tag.
System.out.printf("Customer ID %s has remarketing tag:%n%s%n",
    customer.getCustomerId(),
    customer.getRemarketingSettings().getSnippet());

次に、このアカウント単位のリマーケティング タグをサイトのすべてのページに設定します。リマーケティング タグをサイトまたはモバイルアプリに追加する方法について詳しくは、こちらの AdWords ヘルプセンター記事をご覧ください。

なお、Chrome で Google Tag Assistant を使うと、タグ設定を検証できます。

続いて、リマーケティング タグを読み込んだユーザーが含まれるユーザーリストを作成する必要があります。ユーザーリストは、AdwordsUserListService で作成して管理します。ユーザーリストは、目的に応じてさまざまな種類があります。ウェブサイトのいずれかのページにアクセスしたすべてのユーザーを含むリストを作成するには、下記に示すとおり、ExpressionRuleUserList を使います。このリスト内のアクセスされたページの URL には、ウェブサイトのドメインが含まれます。ルール指定のリマーケティング リストの使用方法について詳しくは、ルール指定のリマーケティングをご覧ください。

// Get the user list service.
AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Use built-in parameter to create domain URL rule.
StringKey urlKey = new StringKey("url__");

StringRuleItem urlStringRuleItem = new StringRuleItem();
urlStringRuleItem.setKey(urlKey);
urlStringRuleItem.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem.setValue("example.com");

RuleItem urlRuleItem = new RuleItem();
urlRuleItem.setStringRuleItem(urlStringRuleItem);

RuleItemGroup ruleItemGroup = new RuleItemGroup();
ruleItemGroup.setItems(new RuleItem[] {urlRuleItem});

Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {ruleItemGroup});

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("All visitors to example.com");
expressionUserList.setDescription("Any visitor to any page of example.com");
expressionUserList.setRule(rule);
expressionUserList.setMembershipLifeSpan(365L);
expressionUserList.setStatus(UserListMembershipStatus.OPEN);

// Optional: To include past users in the user list, set the
// prepopulationStatus to REQUESTED.
expressionUserList.setPrepopulationStatus(
    RuleBasedUserListPrepopulationStatus.REQUESTED);

// Create and submit the operation.
UserListOperation operation = new UserListOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(expressionUserList);

UserListReturnValue result =
    userListService.mutate(new UserListOperation[] {operation});
Long userListId = result.getValue(0).getId();

ユーザーリストの重要な属性に、membershipLifeSpanstatus の 2 つがあります。前者は、ユーザーをリストに保持する期間を日単位で定義します。後者は、新規ユーザーの追加を許可するかどうかを定義します。

最後に、ユーザーリストのメンバーを広告のターゲットに指定します。この手順は、API のその他のタイプのターゲティング条件を指定する手順に似ています。下記のコードでは、CriterionUserList を使って、ユーザーリストを広告グループ内の広告のターゲットに指定する方法を示しています。

// Get the ad group criterion service.
AdGroupCriterionServiceInterface adGroupCriterionService =
    adWordsServices.get(session, AdGroupCriterionServiceInterface.class);

// Create user list criterion.
CriterionUserList userListCriterion = new CriterionUserList();
userListCriterion.setUserListId(userListId);

// Create biddable ad group criterion.
BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
biddableCriterion.setAdGroupId(adGroupId);
biddableCriterion.setCriterion(userListCriterion);

// Create operation.
AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
operation.setOperand(biddableCriterion);
operation.setOperator(Operator.ADD);

AdGroupCriterionOperation[] operations =
    new AdGroupCriterionOperation[] {operation};

// Apply the criterion.
AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(operations);

他の種類の条件と同様に、入札単価の上書きなど、他のプロパティを BiddableAdGroupCriterion オブジェクトに割り当てることができます。

ユーザーリストの条件を広告グループ単位からキャンペーン単位に切り替える場合はまず、該当するキャンペーンで有効または一時停止にしている各広告グループから既存の条件を削除する必要があります。

// Create selector for all user list criteria.
SelectorBuilder builder = new SelectorBuilder();
Selector selector = builder
    .fields(AdGroupCriterionField.Id)
    .equals(AdGroupCriterionField.AdGroupId, adGroupId)
    .equals(AdGroupCriterionField.CriteriaType, "USER_LIST")
    .build();

AdGroupCriterionServiceInterface criterionService =
    new AdWordsServices().get(session, AdGroupCriterionServiceInterface.class);

AdGroupCriterionPage page = criterionService.get(selector);

List<AdGroupCriterionOperation> operations =
    new ArrayList<AdGroupCriterionOperation>();

// Create remove operation for each user list.
for(AdGroupCriterion criterion : page.getEntries()){
  Long criterionId = criterion.getCriterion().getId();

  // Create user list criterion and specify the criterion ID to remove.
  CriterionUserList userListCriterion = new CriterionUserList();
  userListCriterion.setId(criterionId);

  // Create biddable ad group criterion.
  BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
  biddableCriterion.setAdGroupId(adGroupId);
  biddableCriterion.setCriterion(userListCriterion);

  // Create remove operation.
  AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
  operation.setOperand(biddableCriterion);
  operation.setOperator(Operator.REMOVE);

  operations.add(operation);
}

// Remove the criteria.
AdGroupCriterionReturnValue result =
    adGroupCriterionService.mutate(
    operations.toArray(new AdGroupCriterionOperation[operations.size()]));

ユーザーリストの条件を広告グループ単位に切り替える場合は、上記のサンプルと逆の処理を行い、キャンペーン単位に設定している既存の条件を削除する必要があります。criterionId は条件の下位レベルにあるユーザーリスト ID とは異なることに注意してください。

同様に、ユーザーリストをキャンペーン内の広告のターゲットに設定できます。

// Get the campaign criterion service.
CampaignCriterionServiceInterface campaignCriterionService =
    adWordsServices.get(session, CampaignCriterionServiceInterface.class);

// Create user list criterion.
CriterionUserList userListCriterion = new CriterionUserList();
userListCriterion.setUserListId(userListId);

// Create campaign criterion.
CampaignCriterion campaignCriterion = new CampaignCriterion();
campaignCriterion.setCampaignId(campaignId);
campaignCriterion.setCriterion(userListCriterion);

// Create operation.
CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(campaignCriterion);
operation.setOperator(Operator.ADD);

CampaignCriterionOperation[] operations =
    new CampaignCriterionOperation[] {operation};

// Apply the criterion.
CampaignCriterionReturnValue result = campaignCriterionService.mutate(operations);

特定のページへの訪問者

特定のページまたはセクションにアクセスしたユーザーをターゲットに設定するには、ここまでに紹介した方法と同様に ExpressionRuleUserList を使用しますが、ウェブサイトのドメインではなく、より詳細な URL を指定します。サンプルと詳細については、ルール指定のリマーケティングをご覧ください。

特定の操作を行った訪問者

ウェブサイトで特定の操作を行ったユーザーをユーザーリストに追加できます。コンバージョン トラッキングを使っている場合は、ウェブサイトでコンバージョン(購入など)を発生させたことがあるユーザーを広告のターゲットに設定できます。

また、コンバージョンとはみなされない特定の操作をウェブサイトで行ったユーザーも、広告のターゲットに設定できます。たとえば、追加した商品アイテムを購入操作の前にショッピング カートから削除する操作が当てはまります。これら 2 つの使用例は、BasicUserList で設定できます。

コンバージョンが発生した場合

コンバージョン トラッカーをまだ作成していない場合は ConversionTrackerService を使って作成し、ウェブサイトにコンバージョン トラッカー スニペットを設定します。

BasicUserList のメンバーは、ウェブサイトのコンバージョン トラッカーを 1 つ以上読み込んだユーザーと定義されています。BasicUserList を作成する際は、ユーザーリストと関連付ける ConversionTrackerid フィールドの値を指定します。

次のサンプルでは、2 つの既存のコンバージョン トラッカーと関連付けられた BasicUserList を作成しています。

AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Indicate the conversion trackers we want to associate with a new user list
UserListConversionType conversionType1 = new UserListConversionType();
conversionType1.setId(conversionTrackerId1);

UserListConversionType conversionType2 = new UserListConversionType();
conversionType2.setId(conversionTrackerId2);

// Create a basic user list associated with the two conversion trackers.
BasicUserList userList = new BasicUserList();
userList.setName("Example BasicUserList");
userList.setDescription("A list of people who have triggered conversion #1 or #2");
userList.setMembershipLifeSpan(365L);
userList.setConversionTypes(new UserListConversionType[] {conversionType1, conversionType2});
userList.setStatus(UserListMembershipStatus.OPEN);

// Create operation.
UserListOperation operation = new UserListOperation();
operation.setOperand(userList);
operation.setOperator(Operator.ADD);

UserListOperation[] operations = new UserListOperation[] {operation};

// Add user list.
UserListReturnValue result = userListService.mutate(operations);

コンバージョン以外の操作の場合

コンバージョンとはみなされない操作をウェブサイトで行ったユーザーの BasicUserList を作成するには、カテゴリが REMARKETINGConversionTracker に関連付けます。

このような ConversionTracker オブジェクトを作成する方法は 2 つあります。1 つ目は、ConversionTrackerService を直接使う方法で、2 つ目は、関連付けられた BasicUserList の作成と同時に自動的にオブジェクトを作成する方法です。次のコードでは、2 つ目の方法を使用しています。

UserListConversionType conversionType = new UserListConversionType();
conversionType.setName("Remarketing-only conversion tracker");

// Create basic user list.
BasicUserList userList = new BasicUserList();
userList.setName("Example BasicUserList Remarketing Only");
userList.setDescription("Triggered an action not considered a conversion");
userList.setMembershipLifeSpan(365L);
userList.setConversionTypes(new UserListConversionType[] {conversionType});
userList.setStatus(UserListMembershipStatus.OPEN);

// Same as previous example
...

UserListConversionType はリストには関連付けられていますが、id は設定されていません。こうすることで、カテゴリ REMARKETINGConversionTracker オブジェクトが自動的に生成されます。

ConversionTracker オブジェクトを自動的に生成するコード スニペットは次のとおりです。

// From the user list creation obtain the tracker ID.
String conversionId = userList.getConversionTypes().get(0).getId().toString();

// Create predicate and selector.
Predicate predicate = new Predicate();
predicate.setField("Id");
predicate.setOperator(PredicateOperator.IN);
predicate.setValues(new String [] {conversionId});
Selector selector = new Selector();
selector.setFields(new String[] {"Id"});
selector.setPredicates(new Predicate[] {predicate});

// Get the conversion tracker.
ConversionTrackerPage page = conversionTrackerService.get(selector);

// Print out the conversion tracker code snippet.
System.out.println(((AdWordsConversionTracker) page.getEntries()[0]).getSnippet());

複数のユーザーリスト

既存のユーザーリストの組み合わせリストは、LogicalUserListUserListLogicalRule フィールドを使用して作成できます。LogicalUserList のルールには AND 演算が適用されるため、リストに追加されるユーザーは、すべてのルールを満たすユーザーのみとなります。ただし、個々のルールでは、オペランドに AND と OR のどちらを適用するかを指定できます。そのため、ルールのオペランドをすべて満たす必要があるか、またはいずれか 1 つを満たすのみでよいかを指定できます。

さらに、ルールには他の LogicalUserList をオペランドとして指定できるため、リストのツリーを効果的に作成することができます。LogicalUserList は、ターゲティングのグループに複雑な階層構造を定義する有効な手段となります。AccessReason フィールドが異なるリストを組み合わせることもできます。ただし、アクセスが取り消された場合、UserListLogicalUserList のルールの評価時にはメンバーのいないリストとして扱われます。

次のコードは、2 つの BasicUserList のいずれかにユーザーを含む LogicalUserList を作成する方法を示しています。

// My basic user list of Mars customers.
BasicUserList basicMarsList = new BasicUserList();
basicMarsList.setId(...);

// My basic user list of Venus customers.
BasicUserList basicVenusList = new BasicUserList();
basicVenusList.setId(...);

LogicalUserListOperand marsListOperand = new LogicalUserListOperand();
marsListOperand.setUserList(basicMarsList);

LogicalUserListOperand venusListOperand = new LogicalUserListOperand();
venusListOperand.setUserList(basicVenusList);

UserListLogicalRule rule = new UserListLogicalRule(
    UserListLogicalRuleOperator.ANY,
    new LogicalUserListOperand[] {marsListOperand, venusListOperand});

// Create logical user list.
LogicalUserList combinationList = new LogicalUserList();
combinationList.setName("My combination list of Mars or Venus customers #"
    + System.currentTimeMillis());
combinationList.setRules(new UserListLogicalRule[] {rule});

// Create operations.
UserListOperation operation = new UserListOperation();
operation.setOperand(combinationList);
operation.setOperator(Operator.ADD);

UserListOperation[] operations = new UserListOperation[] {operation};

// Add logical user list.
UserListReturnValue result = userListService.mutate(operations);

類似ユーザー

SimilarUserList は、新しいユーザーに広告を表示する手段の 1 つとして使用できます。このユーザーリストを使うと、他のユーザーリストのユーザーと特徴が共通しているユーザーをターゲットに設定できます。

SimilarUserList は、さまざまな要素に基づいて、それぞれの UserList に対して自動的に生成されます。使用される要素としては、元のリストのユーザー数、リストに追加されてからの期間、ユーザーが閲覧したサイトの種類、リストが広告主様のものかどうかなどがあります。この処理には、元のリストが作成されてから最大 4 日かかる場合があります。

次のコードでは、すべての利用可能な SimilarUserList オブジェクトを確認する方法を示しています。

AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

UserListPage page = userListService.get(
    new SelectorBuilder()
    .fields("Id", "Name", "SeedUserListId")
    .equals("ListType", UserListType._SIMILAR)
    .build());

for (UserList userlist : page.getEntries()) {
  System.out.printf("id: %d, name: %s, seed list id: %d%n",
      userlist.getId(),
      userlist.getName(),
      ((SimilarUserList)userlist).getSeedUserListId());
}

メールアドレスによるカスタマー マッチ

大規模な CRM データベースをお持ちの広告主様は、CRM メールアドレス データを基にユーザーリストを定義してターゲットに設定できます。メールアドレスを一括でアップロード、追加、削除したり、定義したユーザーリストを使用して LogicalUserList を作成したりできます。

このユーザーリストは、Google 検索、YouTube、Gmail での配信に対応していますが、Google ディスプレイ ネットワークでは利用できません。

ポリシーにより、アップロードできるメールアドレスは自分で取得したもの(ファースト パーティ)に限られています。メーリング リストをサードパーティから購入してアカウントにアップロードすることは許可されていません。

個人情報保護の観点から、メールアドレスはアップロードする前に SHA-256 アルゴリズムでハッシュ化する必要があります。メールアドレスをハッシュ化する前に、次の作業が必要です。

  • 先頭や末尾の空白文字を削除する

  • メールアドレスのすべての文字を小文字にする

次のソースコードでは、CrmBasedUserList を作成し、適切に正規化とハッシュ化が行われた 3 つのメールアドレスに基づいて 3 人のメンバーを追加する方法を示しています。

private static final ImmutableList<String> EMAILS =
    ImmutableList.of("client1@example.com", "client2@example.com", " Client3@example.com ");
private static final MessageDigest digest = getSHA256MessageDigest();

// Get the UserListService.
AdwordsUserListServiceInterface userListService =
    adWordsServices.get(session, AdwordsUserListServiceInterface.class);

// Create a user list.
CrmBasedUserList userList = new CrmBasedUserList();
userList.setName("Customer relationship management list #" + System.currentTimeMillis());
userList.setDescription("A list of customers that originated from email addresses");

// See limit here: https://support.google.com/adwords/answer/6276125#requirements.
userList.setMembershipLifeSpan(30L);

// Create operation.
UserListOperation operation = new UserListOperation();
operation.setOperand(userList);
operation.setOperator(Operator.ADD);

// Add user list.
UserListReturnValue result = userListService.mutate(new UserListOperation[] { operation });

// Display user list.
UserList userListAdded = result.getValue(0);
System.out.printf("User list with name '%s' and ID %d was added.%n",
    userListAdded.getName(), userListAdded.getId());

// Get user list ID.
Long userListId = userListAdded.getId();

// Create operation to add members to the user list based on email addresses.
MutateMembersOperation mutateMembersOperation = new MutateMembersOperation();
MutateMembersOperand operand = new MutateMembersOperand();
operand.setUserListId(userListId);

// You can optionally provide this field.
operand.setDataType(MutateMembersOperandDataType.EMAIL_SHA256);

// Hash normalized email addresses based on SHA-256 hashing algorithm.
List<String> emailHashes = new ArrayList<>(EMAILS.size());
for (String email : EMAILS) {
  String normalizedEmail = toNormalizedEmail(email);
  emailHashes.add(toSHA256String(normalizedEmail));
}

// Add email address hashes.
operand.setMembers(emailHashes.toArray(new String[emailHashes.size()]));
mutateMembersOperation.setOperand(operand);
mutateMembersOperation.setOperator(Operator.ADD);

// Add members to the user list based on email addresses.
MutateMembersReturnValue mutateMembersResult =
    userListService.mutateMembers(new MutateMembersOperation[] { mutateMembersOperation });

// Display results.
// Reminder: it may take several hours for the list to be populated with members.
for (UserList userListResult : mutateMembersResult.getUserLists()) {
  System.out.printf("%d email addresses were uploaded to user list with name '%s' and ID %d "
      + "and are scheduled for review.%n",
      EMAILS.size(), userListResult.getName(), userListResult.getId());
}

/**
 * Hash a string using SHA-256 hashing algorithm.
 *
 * @param str the string to hash.
 * @return the SHA-256 hash string representation.
 * @throws UnsupportedEncodingException If UTF-8 charset is not supported.
 */
private static String toSHA256String(String str) throws UnsupportedEncodingException {
  byte[] hash = digest.digest(str.getBytes("UTF-8"));
  StringBuilder result = new StringBuilder();
  for (byte b : hash) {
    result.append(String.format("%02x", b));
  }

  return result.toString();
}

/**
 * Removes leading and trailing whitespace and converts all characters to lower case.
 *
 * @param email the email address to normalize.
 * @return a normalized copy of the string.
 */
private static String toNormalizedEmail(String email) {
  return email.trim().toLowerCase();
}

/** Returns SHA-256 hashing algorithm. */
private static MessageDigest getSHA256MessageDigest() {
  try {
    return MessageDigest.getInstance("SHA-256");
  } catch (NoSuchAlgorithmException e) {
    throw new RuntimeException("Missing SHA-256 algorithm implementation.", e);
  }
}

カスタマー マッチのオプションは、キャンペーン タイプによって異なります。

検索ネットワークのみのキャンペーン
CrmBasedUserList を利用できます。広告は検索ネットワークに掲載されます。
ディスプレイ ネットワークのみのキャンペーン
CrmBasedUserListSimilarUserList を利用できます。広告は、Gmail プロモーション広告(GSP)クリエイティブがある場合にのみ、Gmail に掲載されます。
検索ネットワーク(ディスプレイ ネットワーク対応)のキャンペーン
CrmBasedUserList を利用できます。広告は、検索ネットワークと Gmail(Gmail プロモーション広告(GSP)クリエイティブがある場合のみ)に掲載されます。
動画キャンペーン
CrmBasedUserListSimilarUserList を利用できます。広告は、インストリーム TrueView 動画広告がある場合のみ、YouTube に表示されます。

  • API には、mutate リクエストあたりのメールアドレス数に制限があります。

  • MembershipLifeSpan の制限は、他のユーザーリストとは異なる場合があります。

  • リストにメンバーが追加されるまでには、最大数時間かかる場合があります。

  • メールアドレスは、Google アカウントに関連付けられている必要があります。

  • Gmail のターゲティングには、@gmail.com のアドレスのみを使用できます。

  • 個人情報保護の観点から、メンバー数が 1,000 人に達するまでは、リストサイズは 0 として表示されます。1,000 人を超えると、サイズは 100 の位に丸められます。

  • 広告の掲載を確実に開始するには、最低 5,000 件のメールアドレスをリストにアップロードします。

  • CrmBasedUserList は、LogicalUserList を使用している場合のみ、他の CrmBasedUserList と組み合わせることができます。組み合わせられたユーザーリストには、CrmBasedUserList のポリシーがすべて適用されます。

リマーケティングのターゲット設定

広告グループやキャンペーンに条件としてユーザーリストを追加すれば準備は整いますが、意図どおりのターゲット設定にはならない場合があります。ターゲット設定が意図どおりかどうか確認するには、新しいユーザーリストが使用される広告グループやキャンペーンについて getSettings メソッドを呼び出して TargetingSetting を確認します。

各種の条件タイプがターゲット設定にどのように使用されるかを詳細に設定するには、TargetingSettingDetail オブジェクトの配列を使用します。それぞれの TargetingSettingDetail で、条件タイプとして Bid only または Target and bid スキーマを選択できます。

Bid only を選択した場合の条件はトラフィックの制限に使用されませんが、ユーザーリストのユーザーごとに入札方法を変えることができます。Target and bid を選択した場合、広告グループのトラフィックがターゲティング リストのユーザーのみに制限される条件が有効になります。

リマーケティング リストのデフォルトのターゲット設定は、Target and bid です。リマーケティング リストをメインの検索キャンペーンに追加する際は、ターゲット設定を Bid only に変更することをおすすめします。検索広告向けリマーケティング リスト用に重複したキャンペーンを作成する場合は、ターゲット設定を Target and bid のままにします。

次に示すサンプルでは、Java クライアント ライブラリを使って、広告グループの TargetingSettingDetailBid only に設定しています。

AdGroup adGroup = ... // fetch the ad group relevant for this case

List<Setting> settings = Lists.newArrayList();
List<TargetingSettingDetail> details = Lists.newArrayList();
TargetingSetting targetingSetting = null;
if (adGroup.getSettings() != null) {
  // Find the existing TargetingSetting if it exists, and keep
  // track of all other settings.
  for (Setting setting : adGroup.getSettings()) {
    if (setting instanceof TargetingSetting) {
      targetingSetting = (TargetingSetting) setting;
    } else {
      settings.add(setting);
    }
  }

  if (targetingSetting != null) {
    // Copy all the existing TargetingSettingDetails except the one for
    // USER_INTEREST_AND_LIST.
    for (TargetingSettingDetail settingDetail : targetingSetting.getDetails()) {
      if (!CriterionTypeGroup.USER_INTEREST_AND_LIST.equals(
              settingDetail.getCriterionTypeGroup())) {
        details.add(settingDetail);
      }
    }
  }
}

if (targetingSetting == null) {
  targetingSetting = new TargetingSetting();
}

// Create a new USER_INTEREST_AND_LIST targeting setting detail and add
// it to the details list.
TargetingSettingDetail userListsSetting = new TargetingSettingDetail();
userListsSetting.setCriterionTypeGroup(CriterionTypeGroup.USER_INTEREST_AND_LIST);

// true = "Bid only"; false = "Target and bid"
userListsSetting.setTargetAll(true);
details.add(userListsSetting);

targetingSetting.setDetails(details.toArray(new TargetingSettingDetail[details.size()]));

// Add the new TargetingSetting for USER_INTEREST_AND_LIST to the settings list.
settings.add(targetingSetting);

adGroup.setSettings(settings.toArray(new Setting[settings.size()]));

キャンペーンに Bid onlyTarget and bid を設定する場合もほぼ同じです。Campaign オブジェクトの getSettings メソッドと setSettings メソッドを AdGroup の場合と同様に使用します。

パフォーマンス レポート

ユーザーリスト パフォーマンス レポートでは、ユーザーリストのパフォーマンス レポートを収集するために必要なフィールドを確認できます。たとえば、レポートの ConversionsCostPerConversion を確認すると、リストでターゲット設定されているメンバーが実際にコンバージョンを多く生み出しているかどうかを判断でき、それに応じて単価調整比を調整できます。また、各クリックのユーザーリストを確認するには、クリック パフォーマンス レポートUserListId フィールドを含めます。詳しくは、レポート機能のガイドをご覧ください。

ルール指定のユーザーリストを使ったリマーケティング

ルール指定のユーザーリストを使うと、事前に用意されているリマーケティング タグ パラメータまたはリマーケティング タグに追加するカスタム パラメータに基づいて、ユーザーリストを定義できます。ユーザーリストを用意して、リマーケティング タグをサイトまたはモバイルアプリに追加したら、ユーザーリストのユーザーをターゲットに設定できます。また、ターゲットに設定したユーザーには、異なる入札単価を設定できます。レポートを実行すると、ユーザーリストのメンバーを基に統計情報がまとめられ、フィルタを適用できます。

ここではルール指定のユーザーリストを中心に説明するため、サンプルには、ExpressionRuleUserList および DateSpecificRuleUserList の作成方法を示しています。

ユーザーに関するプライベートな情報を利用してリマーケティング リストを作成することはできません。リマーケティング キャンペーンを設定してウェブサイトやアプリにリマーケティング タグを挿入する前に、パーソナライズド広告を必ずご確認ください。

事前に用意されているリマーケティング タグ パラメータを使う

事前に用意されているリマーケティング パラメータ url__ を使って、ユーザーがアクセスしたウェブサイトの URL に基づいたユーザーリストをターゲットに設定できます。たとえば、次のコードでは、ウェブサイトの異なる 2 つのセクションのページにアクセスしたことがあるユーザーを対象に、ルール指定のユーザーリストを作成する方法を示しています。事前に用意されているリマーケティング パラメータを使う場合は、リマーケティング タグを編集する必要はありません。

StringKey urlKey = new StringKey("url__");

StringRuleItem urlStringRuleItem1 = new StringRuleItem();
urlStringRuleItem1.setKey(urlKey);
urlStringRuleItem1.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem1.setValue("example.com/section1/");

RuleItem urlRuleItem1 = new RuleItem();
urlRuleItem1.setStringRuleItem(urlStringRuleItem1);

StringRuleItem urlStringRuleItem2 = new StringRuleItem();
urlStringRuleItem2.setKey(urlKey);
urlStringRuleItem2.setOp(StringRuleItemStringOperator.CONTAINS);
urlStringRuleItem2.setValue("example.com/section2/");

RuleItem urlRuleItem2 = new RuleItem();
urlRuleItem2.setStringRuleItem(urlStringRuleItem2);

// Combine the two rule items into a RuleItemGroup so AdWords will AND their
// rules together. To instead OR the rules together, each RuleItem should be
// placed in its own RuleItemGroup.
RuleItemGroup ruleItemGroup = new RuleItemGroup();
ruleItemGroup.setItems(new RuleItem[] {urlRuleItem1, urlRuleItem2});

Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {ruleItemGroup});

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("Sections 1 and 2"));
expressionUserList.setDescription("Visitors to section1 or section2");
expressionUserList.setRule(rule);

カスタム リマーケティング タグ パラメータを使う

カスタム リマーケティング タグ パラメータをリマーケティング タグに追加すると、より詳細にカスタマイズしたユーザーリストを作成できます。

シナリオ

サイトに複数のカスタム リマーケティング タグ パラメータを設定して、次のようなユーザー属性を取得するとします。

  • ecomm_pagetype - サイトのページカテゴリ(購入手続き、カートなど)。
  • cartsize - ユーザーのショッピング カートに入れられた商品アイテムの数。
  • checkoutdate - ユーザーが購入手続きを行った日付。このパラメータは、ユーザーが実際に購入手続きを完了した場合にのみ設定します。

ユーザーがショッピング カートに複数の商品アイテムを入れ、購入手続きに進んだ場合に、広告の表示回数を増やすことにします。また、11 月と 12 月にサイトで大規模なセールを実施する予定があるため、セール期間中に購入手続きを行うユーザーもターゲットに設定します。

このようなユーザーをターゲットに設定するには、次のようなルールが考えられます。

  1. 購入手続きページにアクセスし、かつショッピング カートに複数の商品を入れていたユーザー
  2. 11 月または 12 月に購入手続きを行ったユーザー

ユーザーがカテゴリ 1 またはカテゴリ 2 に該当する場合に、特定の広告グループやキャンペーンの入札単価を 25% 引き上げることができます。

オブジェクトの概要

コードの詳細を説明する前に、ルール指定のユーザーリストの構造について確認しましょう。AdWords API では、ルール指定のユーザーリストに RuleBasedUserList を使います。下の図は、この使用例の設定完了後の RuleBasedUserList の構造を示しています。

ルール指定のユーザーリストの構造を示した図

1 つ目の RuleItemGroup を作成する

まず、次の 2 つの RuleItem を含む、1 つ目の RuleItemGroup(左側)を作成します。

  1. 購入手続きページにアクセスしたユーザー。
  2. ショッピング カートに複数の商品アイテムを入れたユーザー。

1 つ目のルール項目には、文字列値を含む ecomm_pagetype パラメータを使うため、先に StringRuleItem を作成します。

StringRuleItem checkoutStringRuleItem = new StringRuleItem(
    new StringKey("ecomm_pagetype"), StringRuleItemStringOperator.EQUALS, "checkout");
RuleItem checkoutRuleItem = new RuleItem();
checkoutRuleItem.setStringRuleItem(checkoutStringRuleItem);

2 つ目のルール項目には、数値を含む cartsize パラメータを使うため、ここで NumberRuleItem を使います。

NumberRuleItem cartSizeNumberRuleItem = new NumberRuleItem(
    new NumberKey("cartsize"), NumberRuleItemNumberOperator.GREATER_THAN, 1.0);
RuleItem cartSizeRuleItem = new RuleItem();
cartSizeRuleItem.setNumberRuleItem(cartSizeNumberRuleItem);

次に、2 つの RuleItem を 1 つの RuleItemGroup に組み合わせます。複数のルール項目を 1 つのルール項目に組み合わせると、AND 演算が適用されます。

RuleItemGroup checkoutMultipleItemGroup = new RuleItemGroup();
checkoutMultipleItemGroup.setItems(new RuleItem[] {checkoutRuleItem, cartSizeRuleItem});

2 つ目の RuleItemGroup を作成する

右側の RuleItemGroup には、次の 2 つの RuleItem オブジェクトが含まれます。

  1. 10 月 31 日より後に購入手続きを行ったユーザー。
  2. 1 月 1 日より前に購入手続きを行ったユーザー。

この 2 つのルール項目には、日付値を含む checkoutdate パラメータを使うため、ここでは DateRuleItem オブジェクトを作成します。

// Create the RuleItem for the start date.
DateRuleItem startDateDateRuleItem = new DateRuleItem(
    new DateKey("checkoutdate"),
    DateRuleItemDateOperator.AFTER, "20141031");
RuleItem startDateRuleItem = new RuleItem();
startDateRuleItem.setDateRuleItem(startDateDateRuleItem);

// Create the RuleItem for the end date.
DateRuleItem endDateDateRuleItem = new DateRuleItem(
    new DateKey("checkoutdate"),
    DateRuleItemDateOperator.BEFORE, "20150101");
RuleItem endDateRuleItem = new RuleItem();
endDateRuleItem.setDateRuleItem(endDateDateRuleItem);

左側のグループと同様に、この 2 つの RuleItem オブジェクトは RuleItemGroup に組み合わせられ、AND 演算が適用されます。

RuleItemGroup checkedOutNovDecItemGroup = new RuleItemGroup();
checkedOutNovDecItemGroup.setItems(new RuleItem[] {startDateRuleItem, endDateRuleItem});

ユーザーリストを作成する

残る手順は、以上のルール項目のグループを組み合わせて新しいユーザーリストを作成することです。

// Create the user list.
ExpressionRuleUserList expressionUserList = new ExpressionRuleUserList();
expressionUserList.setName("My expression rule user list");
expressionUserList.setDescription("Users who checked out in November or December "
    + "OR visited the checkout page with more than one item in their cart");

// OR the RuleItemGroups together into a Rule.
Rule rule = new Rule();
rule.setGroups(new RuleItemGroup[] {checkoutMultipleItemGroup, checkedOutNovDecItemGroup});
expressionUserList.setRule(rule);

// Set other optional attributes of the user list.
...

// Create an operation to ADD the user list.
UserListOperation operation = new UserListOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(expressionUserList);

// Submit the operation.
UserListReturnValue result =
    adwordsUserListService.mutate(new UserListOperation[] {operation});

サイト訪問期間による制限

上の ExpressionRuleUserList を使えば、目的のルールを設定できます。それに対し、リストのルールに合致し、かつ 10 月 1 日~12 月 31 日にサイトにアクセスしたユーザーのみをターゲットに設定するには、DateSpecificRuleUserList を使用します。

DateSpecificUserList を作成するには、ExpressionRuleUserList と同様の手順に従いますが、リストの startDateendDate も設定します。

DateSpecificRuleUserList dateRuleUserList = new DateSpecificRuleUserList();
dateRuleUserList.setStartDate(startDate.toString("20141001"));
dateRuleUserList.setEndDate(endDate.toString("20141231"));

// Set optional attributes of the user list, such as membershipLifeSpan or
// integration code.
...

// Use the same rule defined above.
dateRuleUserList.setRule(rule);

これで設定は終了です。この新しいユーザーリストには、上記のユーザーリストのルールに合致し、かつ startDate(指定日を含む)~endDate(指定日を含む)の間にサイトにアクセスしたすべてのユーザーが含まれます。オープン状態の開始日や終了日など、その他のオプションについては、DateSpecificRuleUserList ドキュメントをご覧ください。

リストに過去のユーザーを含める

v201702 からはユーザーリストの prepopulationStatusREQUESTED に設定することで、ルール指定のユーザーリストに過去のユーザーも含められます。また、このフィールドのステータスを定期的に確認することで、過去のユーザーを追加する非同期処理の進捗状況を確認できます。

ユーザーリストのユーザーの入札単価を変更する

ここまでに、ユーザーリストの作成と、サイトへのリマーケティング タグの設定について説明しました。次に、広告グループやキャンペーンのユーザーリストに含まれる特定のメンバーの入札単価を 25% 引き上げてターゲットに設定します。

複数の広告グループの入札単価を変更する方法を次に示します。

// Specify the ad group IDs.
List<Long> adGroupIds = Lists.newArrayList(
    // ad group ID 1,
    // ad group ID 2,
    // ...
    );

// Create a CriterionUserList that points to the user list created above.
CriterionUserList criterionUserList = new CriterionUserList();
criterionUserList.setUserListId(dateRuleUserList.getId());

List<AdGroupCriterionOperation> operations = Lists.newArrayList();
for(Long adGroupId : adGroupIds) {
  // Create a BiddableAdGroupCriterion for the CriterionUserList and set
  // its bid modifier to 1.25. Instead of specifying a bid modifier, you
  // could set the BiddableAdGroupCriterion's bidding strategy configuration
  // to a configuration with specific bids.
  BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
  biddableCriterion.setAdGroupId(adGroupId);
  biddableCriterion.setCriterion(criterionUserList);
  biddableCriterion.setBidModifier(1.25);

  // Create an operation to ADD the BiddableAdGroupCriterion.
  AdGroupCriterionOperation operation = new AdGroupCriterionOperation();
  operation.setOperand(biddableCriterion);
  operation.setOperator(Operator.ADD);
  operations.add(operation);
}

// Submit the operations.
AdGroupCriterionReturnValue result = adGroupCriterionService.mutate(
    operations.toArray(new AdGroupCriterionOperation[operations.size()]));

キャンペーンの入札単価を変更する場合もほぼ同じです。

// Specify the campaign ID.
Long campaignId = // ID of campaign

// Create a CriterionUserList that points to the user list created above.
CriterionUserList criterionUserList = new CriterionUserList();
criterionUserList.setUserListId(dateRuleUserList.getId());

CampaignCriterion campaignCriterion = new CampaignCriterion();
campaignCriterion.setCampaignId(campaignId);
campaignCriterion.setCriterion(criterionUserList);
campaignCriterion.setBidModifier(1.25);

CampaignCriterionOperation operation = new CampaignCriterionOperation();
operation.setOperand(campaignCriterion);
operation.setOperator(Operator.ADD);
operations.add(operation);

// Submit the operations.
CampaignCriterionReturnValue result = CampaignCriterionService.mutate(
    new AdGroupCriterionOperation[] {operation});

その他のユーザーリスト オプション

ルール指定のユーザーリストは、他のユーザーリストと組み合わせてさらに複雑なターゲット設定を作成できます。たとえば、特定のコンバージョンの種類をターゲットに設定する BasicUserList と、カスタム パラメータに基づいてユーザーをターゲットに設定する RuleBasedUserList がある場合は、LogicalUserList を作成して両方のリストのメンバーをターゲットに設定できます。例については、上の複数のユーザーリストをご覧ください。

リマーケティング タグをサイトに追加する

ルール指定のユーザーリストにユーザーを追加するには、アカウント単位のリマーケティング タグをサイトに追加する必要があります。タグを取得してサイトに設定する方法については、上の手順をご覧ください。

事前に用意されているリマーケティング タグ パラメータを使う場合は、リマーケティング タグを編集する必要はありません。カスタム パラメータを使う場合は、タグを編集してカスタム パラメータを含める方法について、タグ設定とリマーケティング リスト作成の高度な戦略をご覧ください。

コードサンプル

ルール指定のユーザーリストを追加するコードサンプルの全文は、各クライアント ライブラリRemarketing フォルダにあります。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。