С помощью API Display & Video 360 вы можете создавать аудитории Customer Match, используя загруженную контактную информацию клиентов или идентификаторы мобильных устройств. На этой странице описано, как создать исходную аудиторию Customer Match и добавить новые данные о клиентах к существующей аудитории с помощью API Display & Video 360.
Подготовка пользовательских данных
Пользовательские данные, используемые для формирования целевых аудиторий Customer Match, являются конфиденциальными и требуют надлежащей подготовки перед загрузкой.
Хеш-конфиденциальные данные
Некоторые аудитории Customer Match создаются с использованием конфиденциальной контактной информации клиентов. Display & Video 360 требует, чтобы конфиденциальные данные были хешированы с использованием алгоритма SHA256 перед загрузкой. Перед загрузкой необходимо хешировать следующие поля данных:
- Имя
- Фамилия
- Адреса электронной почты
- Номера телефонов
Почтовые индексы и коды стран не следует хешировать перед загрузкой. Попытка загрузки нехешированных данных о клиентах приведет к ошибке.
Перед хешированием данных необходимо убедиться в соблюдении следующих условий:
- Из значений имени, фамилии и адреса электронной почты необходимо удалить все пробелы.
- Все значения должны быть написаны строчными буквами.
- Все телефонные номера должны быть отформатированы в формате E.164 и включать код страны.
Установить согласие пользователя
При загрузке пользовательских данных используйте поля consent в предоставленных объектах ContactInfoList или MobileDeviceIdList для передачи сигналов согласия, предоставленного включенными пользователями.
Установка значения CONSENT_STATUS_DENIED в любом из полей объекта Consent приводит к ошибке.
Сигналы согласия устанавливаются для всех пользователей, добавленных в одном запросе firstPartyAndPartnerAudiences.create или firstPartyAndPartnerAudiences.editCustomerMatchMembers . Пользователи с другими сигналами согласия должны быть загружены в отдельных запросах.
Создайте целевую аудиторию Customer Match.
Аудиторию Customer Match можно создать с помощью метода firstPartyAndPartnerAudiences.create . Аудитория должна быть объявлена как собственная аудитория и иметь audienceType равный CUSTOMER_MATCH_CONTACT_INFO или CUSTOMER_MATCH_DEVICE_ID . Данные Customer Match должны быть предоставлены с использованием соответствующего поля в рамках объединения полей members .
Вот пример того, как создать новую аудиторию Customer Match с контактной информацией и сроком членства 540 дней, используя предоставленный список хешированных телефонных номеров:
Java
// Create Customer Match audience object. FirstPartyAndPartnerAudience customerMatchAudience = new FirstPartyAndPartnerAudience() .setDisplayName(display-name) .setFirstPartyAndPartnerAudienceType( "FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY" ) .setAudienceType("CUSTOMER_MATCH_CONTACT_INFO") .setMembershipDurationDays(540L); // Build list of contact information objects. ContactInfoList contactInfoList = new ContactInfoList(); ArrayList<ContactInfo> contactInfos = new ArrayList<ContactInfo>(); for (String hashedPhoneNumber : list-of-hashed-phone-numbers) { ContactInfo contactInfo = new ContactInfo(); ArrayList<String> phoneNumberList = new ArrayList<String>(); phoneNumberList.add(hashedPhoneNumber); contactInfo.setHashedPhoneNumbers(phoneNumberList); contactInfos.add(contactInfo); } contactInfoList.setContactInfos(contactInfos); // Build consent object for passing consent if granted by the end user. Consent consent = new Consent() .setAdUserData(ad-user-data-consent) .setAdPersonalization(ad-personalization-consent); ContactInfoList.setConsent(consent); // Assign contact info list to Customer Match audience. customerMatchAudience.setContactInfoList(contactInfoList); // Create Customer Match audience. FirstPartyAndPartnerAudience response = service .firstPartyAndPartnerAudiences() .create(customerMatchAudience) .setAdvertiserId(advertiser-id) .execute(); // Display name of new audience. System.out.printf( "Customer Match audience %s was created.", response.getName() );
Python
# Build list of Contact Info objects contact_infos = [] for hashed_phone_number in list-of-hashed-phone-numbers: contact_infos.append({'hashedPhoneNumbers': [hashed_phone_number]}) # Create a Customer Match first- and third-party audience object. audience_obj = { 'displayName': display-name, 'firstPartyAndPartnerAudienceType': 'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY', 'audienceType': 'CUSTOMER_MATCH_CONTACT_INFO', 'membershipDurationDays': 540, 'contactInfoList': { 'contactInfos': [ contact_infos ], 'consent': { 'adUserData': ad-user-data-consent, 'adPersonalization': ad-personalization-consent } } } # Build and execute request. audience = service.firstPartyAndPartnerAudiences().create( advertiserId=advertiser-id, body=audience_obj ).execute() # Display name of new audience. print('Customer Match audience %s was created.' % audience["name"])
PHP
// Create a Customer Match first-party and partner audience object. $audience = new Google_Service_DisplayVideo_FirstPartyAndPartnerAudience(); $audience->setDisplayName(display-name); $audience->setFirstPartyAndPartnerAudienceType( 'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY' ); $audience->setAudienceType('CUSTOMER_MATCH_CONTACT_INFO'); $audience->setMembershipDurationDays(540); // Build list of contact information objects. $contactInfoList = new Google_Service_DisplayVideo_ContactInfoList(); $contactInfos = array(); foreach (list-of-hashed-phone-numbers as $hashedPhoneNumber) { $contactInfo = new Google_Service_DisplayVideo_ContactInfo(); $contactInfo->setHashedPhoneNumbers(array($hashedPhoneNumber)); $contactInfos[] = $contactInfo; } $contactInfoList->setContactInfos($contactInfos); // Build consent object for passing consent if granted by the end user. $consent = new Google_Service_DisplayVideo_Consent(); $consent->setAdUserData(ad-user-data-consent); $consent->setAdPersonalization(ad-personalization-consent); $contactInfoList->setConsent($consent); // Assign contactInfoList to audience object. $audience->setContactInfoList($contactInfoList); // Call the API, creating the audience. $result = $this->service->firstPartyAndPartnerAudiences->create( $audience, array('advertiserId' => advertiser-id) ); // Display name of new audience. printf('Customer Match audience %s was created.', $result['name']);
Обновите состав аудитории Customer Match.
Если вы определили дополнительных клиентов, на которых хотите ориентироваться, вам необходимо продлить членство клиентов в существующих аудиториях или удалить клиентов из аудитории, вы можете обновить данные клиентов существующей аудитории Customer Match с помощью метода firstPartyAndPartnerAudiences.editCustomerMatchMembers . Вы можете добавлять клиентов в список, используя объединенное поле added_members , и удалять клиентов из списка с помощью объединенного поля removed_members .
Один запрос firstPartyAndPartnerAudiences.editCustomerMatchMembers может только добавлять или удалять участников из списка. Один запрос, пытающийся выполнить оба действия, приведет к ошибке INVALID_ARGUMENT .
Вот пример того, как добавить отдельного клиента в качестве участника в существующую аудиторию Customer Match, используя предоставленные данные почтового адреса:
Java
// Create an edit members request object. EditCustomerMatchMembersRequest editCustomerMatchMembersRequest = new EditCustomerMatchMembersRequest() .setAdvertiserId(advertiser-id); // Build contact information object to add to audience. ContactInfoList contactInfoList = new ContactInfoList(); ArrayList<ContactInfo> contactInfos = new ArrayList<ContactInfo>(); ContactInfo contactInfo = new ContactInfo() .setHashedFirstName(hashed-customer-first-name) .setHashedLastName(hashed-customer-last-name) .setZipCodes(customer-zip-codes-list) .setCountryCode(customer-country-code); contactInfos.add(contactInfo); contactInfoList.setContactInfos(contactInfos); // Build consent object for passing consent if granted by the end user. Consent consent = new Consent() .setAdUserData(ad-user-data-consent) .setAdPersonalization(ad-personalization-consent); ContactInfoList.setConsent(consent); // Assign contact info list to request body. editCustomerMatchMembersRequest.setAddedContactInfoList(contactInfoList); // Edit Customer Match audience membership. EditCustomerMatchMembersResponse response = service .firstPartyAndPartnerAudiences() .editCustomerMatchMembers( audience-id, editCustomerMatchMembersRequest ) .execute(); // Display ID of updated audience. System.out.printf( "The membership of Customer Match audience ID %s was edited.", response.getFirstPartyAndPartnerAudienceId() );
Python
# Create an edit members request object. edit_member_request_obj = { 'advertiserId': advertiser-id, 'addedContactInfoList': { 'contactInfos': [ { 'hashedFirstName': hashed-customer-first-name, 'hashedLastName': hashed-customer-last-name, 'countryCode': customer-country-code, 'zipCodes': customer-zip-codes-list } ], 'consent': { 'adUserData': ad-user-data-consent, 'adPersonalization': ad-personalization-consent } } } # Build and execute request. response = service.firstPartyAndPartnerAudiences().editCustomerMatchMembers( firstPartyAndPartnerAudienceId=audience-id, body=edit_member_request_obj ).execute() # Display ID of updated audience. print('The membership of the Customer Match audience ID %s was updated.' % response["firstPartyAndPartnerAudienceId"])
PHP
// Create an edit members request object. $editMemberRequest = new Google_Service_DisplayVideo_EditCustomerMatchMembersRequest(); $editMemberRequest->setAdvertiserId(advertiser-id); // Build contact information object to add to audience. $contactInfoList = new Google_Service_DisplayVideo_ContactInfoList(); $contactInfos = array(); $contactInfo = new Google_Service_DisplayVideo_ContactInfo(); $contactInfo->setHashedFirstName(hashed-customer-first-name); $contactInfo->setHashedLastName(hashed-customer-last-name); $contactInfo->setCountryCode(customer-country-code); $contactInfo->setZipCodes(array(customer-zip-codes-list)); $contactInfos[] = $contactInfo; $contactInfoList->setContactInfos($contactInfos); // Build consent object for passing consent if granted by the end user. $consent = new Google_Service_DisplayVideo_Consent(); $consent->setAdUserData(ad-user-data-consent); $consent->setAdPersonalization(ad-personalization-consent); $contactInfoList->setConsent($consent); // Assign contactInfoList to edit members request body. $editMemberRequest->setAddedContactInfoList($contactInfoList); // Call the API, editing the audience membership. $response = $this ->service ->firstPartyAndPartnerAudiences ->editCustomerMatchMembers( audience-id, $editMemberRequest ); // Display ID of updated audience. printf( 'The membership of Customer Match audience ID %s was edited', $result['firstPartyAndPartnerAudienceId'] );