Suba públicos de Segmentación por clientes

Puedes crear públicos de Segmentación por clientes con la información de contacto del cliente o los ID de dispositivos móviles subidos mediante la API de Display & Video 360. En esta página, se describe cómo crear un público inicial de Segmentación por clientes y agregar datos de clientes nuevos al público existente mediante la API de Display & Video 360.

Prepara los datos del usuario

Los datos del usuario que se utilizan para propagar los públicos de Segmentación por clientes son sensibles y deben prepararse correctamente antes de subirlos.

Genera datos sensibles de hash

Algunos públicos de Segmentación por clientes se crean utilizando información de contacto sensible de los clientes. Display & Video 360 requiere que se genere un hash para los datos sensibles mediante el algoritmo SHA256 antes de subirlos. Se debe generar un hash para los siguientes campos de datos antes de la carga:

  • Nombre
  • Apellido
  • Direcciones de correo electrónico
  • Números de teléfono

No se debe generar un hash para los códigos postales y los códigos de país antes de la carga. Si intentas subir datos de clientes sin codificación hash, se mostrará un error.

Antes de generar un hash para los datos, asegúrese de que se cumplan las siguientes condiciones:

  • Se debe quitar cualquier espacio en blanco de los valores de nombre, apellido y dirección de correo electrónico.
  • Todos los valores se deben escribir en minúscula.
  • Todos los números de teléfono deben seguir el formato E.164 y deben incluir el código de llamada de país.

Cuando subas datos del usuario, usa los campos consent en los objetos ContactInfoList o MobileDeviceIdList proporcionados para pasar los indicadores de consentimiento otorgados por los usuarios incluidos.

Si configuras cualquiera de los campos del objeto Consent en CONSENT_STATUS_DENIED, se generará un error.

Los indicadores de consentimiento se establecen para todos los usuarios agregados en una sola solicitud firstAndThirdPartyAudiences.create o firstAndThirdPartyAudiences.editCustomerMatchMembers. Los usuarios con diferentes indicadores de consentimiento se deben subir en solicitudes separadas.

Cómo crear un público de Segmentación por clientes

Se puede crear un público de Segmentación por clientes con el método firstAndThirdPartyAudiences.create. El público se debe declarar como público propio y debe tener un audienceType de CUSTOMER_MATCH_CONTACT_INFO o CUSTOMER_MATCH_DEVICE_ID. Los datos de Segmentación por clientes se deben proporcionar a través del campo apropiado dentro del campo de unión members.

A continuación, se muestra un ejemplo de cómo crear un público nuevo de información de contacto de Segmentación por clientes con una duración de membresía ilimitada mediante una lista proporcionada de números de teléfono con codificación hash:

Java

// Create Customer Match audience object.
FirstAndThirdPartyAudience customerMatchAudience =
    new FirstAndThirdPartyAudience()
        .setDisplayName(display-name)
        .setFirstAndThirdPartyAudienceType(
            "FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY"
        )
        .setAudienceType("CUSTOMER_MATCH_CONTACT_INFO")
        .setMembershipDurationDays(10000L);

// 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.
FirstAndThirdPartyAudience response =
    service
        .firstAndThirdPartyAudiences()
        .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,
    'firstAndThirdPartyAudienceType':
        'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY',
    'audienceType': 'CUSTOMER_MATCH_CONTACT_INFO',
    'membershipDurationDays': 10000,
    'contactInfoList': {
        'contactInfos': [
            contact_infos
        ],
        'consent': {
            'adUserData': ad-user-data-consent,
            'adPersonalization': ad-personalization-consent
        }
    }
}

# Build and execute request.
audience = service.firstAndThirdPartyAudiences().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- and third-party audience object.
$audience = new Google_Service_DisplayVideo_FirstAndThirdPartyAudience();
$audience->setDisplayName(display-name);
$audience->setFirstAndThirdPartyAudienceType(
    'FIRST_AND_THIRD_PARTY_AUDIENCE_TYPE_FIRST_PARTY'
);
$audience->setAudienceType('CUSTOMER_MATCH_CONTACT_INFO');
$audience->setMembershipDurationDays(10000);

// 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->firstAndThirdPartyAudiences->create(
    $audience,
    array('advertiserId' => advertiser-id)
);

// Display name of new audience.
printf('Customer Match audience %s was created.', $result['name']);

Cómo actualizar la membresía de un público de Segmentación por clientes

Si identificaste más clientes para los que deseas segmentar los anuncios, necesitas renovar sus membresías de público existentes o si deseas quitar clientes de un público, puedes actualizar los datos del cliente de un público existente de Segmentación por clientes con el método firstAndThirdPartyAudiences.editCustomerMatchMembers. Puedes agregar clientes a una lista con el campo de unión added_members y quitar clientes de una lista con el campo de unión removed_members.

Con una sola solicitud firstAndThirdPartyAudiences.editCustomerMatchMembers, solo se pueden agregar o quitar miembros de una lista. Si una sola solicitud intenta realizar ambas acciones, se mostrará un error INVALID_ARGUMENT.

A continuación, se muestra un ejemplo de cómo agregar un solo cliente como miembro a un público de información de contacto existente de Segmentación por clientes con los datos de las direcciones de correo postal proporcionados:

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
        .firstAndThirdPartyAudiences()
        .editCustomerMatchMembers(
            audience-id,
            editCustomerMatchMembersRequest
        )
        .execute();

// Display ID of updated audience.
System.out.printf(
    "The membership of Customer Match audience ID %s was edited.",
    response.getFirstAndThirdPartyAudienceId()
);

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.firstAndThirdPartyAudiences().editCustomerMatchMembers(
    firstAndThirdPartyAudienceId=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["firstAndThirdPartyAudienceId"])

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
    ->firstAndThirdPartyAudiences
    ->editCustomerMatchMembers(
        audience-id,
        $editMemberRequest
    );

// Display ID of updated audience.
printf(
    'The membership of Customer Match audience ID %s was edited',
    $result['firstAndThirdPartyAudienceId']
);