Uploading to User Lists

You can use the bulk uploader described below to upload various ad IDs to Google user lists for targeting. You can also upload user lists like those for Programmatic Guaranteed deals.

Bulk uploader

Google user lists can be used in targeting, and Authorized Buyers allows buyers to update these user lists through HTTPS POST requests. They need to provide the ad IDs, user lists, and update type (add or delete). The maximum size of such a request is 100KB and the request URL is as follows:

https://cm.g.doubleclick.net/upload?nid=GoogleNetworkId

GoogleNetworkId is an Authorized Buyers ID, which can be retrieved through the Buyer API Accounts resource's cookieMatchingNid field.

For the HTTPS POST request's payload, buyers provide an encoded protocol buffer, which describes the lists or cookies to be modified.

Authorized Buyers supports uploading the following identifiers to Google servers:

  • Google user ID
  • iOS IDFA
  • Android advertising ID
  • Roku ID
  • Amazon Fire TV ID
  • Xbox/Microsoft ID

as indicated by the following enum and message fields in cookie-bulk-upload-proto.txt.

Example: Add IDFAs to user list

To add IDFAs to a user list with ID 123, create the following UpdateUsersDataRequest protocol buffer:

UpdateUsersDataRequest {
  ops {
    user_id: "2024D65F-EBBD-11FF-23AB-823FC255913A"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
  ops {
    user_id: "3024D65F-EBBD-11FF-23AB-823FC255913A"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
  ops {
    user_id: "4024D65F-EBBD-11FF-23AB-823FC255913A"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
  ops {
    user_id: "5024D65F-EBBD-11FF-23AB-823FC255913A"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
}

Then, send an HTTPS POST request with the UpdateUsersDataRequest protocol buffer as the payload to Authorized Buyers. If the request is successful, you'll get the following response:

UpdateUsersDataResponse {
  status = NO_ERROR
}

If the request is unsuccessful, you'll get this response:

UpdateUsersDataRequest {
  ops {
    user_id: "2024D65F-EBBD-11FF-23AB-823FC255913A"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
  ops {
    user_id: "INVALID_FORMAT"
    user_list_id: 123
    time_added_to_user_list: 2132132132
  }
}

If the first user_id is valid, but the second is invalid, you'll get a response like this:

UpdateUsersDataResponse {
{
  status: PARTIAL_SUCCESS
  errors: {
    user_id     : "INVALID_FORMAT"
    error_code  : BAD_COOKIE
    time_added_to_user_list: 2132132132
  }
}