>-
data-manager-api-setup skill.account_type
field of the operating_account in the Destination.[!IMPORTANT] If writing or updating an ingestion script, ALWAYS retrieve the relevant code sample to use as a reference:
| Language | Sample |
|---|---|
| Python | ingest_audience_members.py |
| Java | IngestAudienceMembers.java |
| PHP | ingest_audience_members.php |
| Node | ingest_audience_members.ts |
| .NET | IngestAudienceMembers.cs |
[!CRITICAL] If refactoring code to upgrade from another Google API, ALWAYS extract the full contents of the relevant field mapping guide.
IngestionServiceClient).Destination object using the
product_destination_id and the appropriate account configurations:
operating_account (target account receiving data), login_account (if
authenticating using a manager account or a data partner account), and
linked_account (if you're a data partner accessing the account via a
partner link to a manager account). STRONGLY RECOMMENDED: Refer to
the Configure destinations and headers
guide for more details on configuring destinations.IngestAudienceMembersRequest) containing the destinations, formatted
members, and consent permissions.validate_only boolean
option on the IngestAudienceMembersRequest to allow developers to validate
schemas without actually uploading data.ingest_audience_members and record the
returned request ID for logging/troubleshooting.request_id) only
indicates the payload was received. To check if the records actually
succeeded, partially succeeded, or failed to process, query
client.retrieve_request_status using the request_id. Skipping this
step is a common user mistake.from google.ads.datamanager_util import Formatter
from google.ads.datamanager_util.format import Encoding
formatter: Formatter = Formatter()
processed_email: str = formatter.process_email_address(
email, Encoding.HEX
)
address field on UserIdentifier if all required fields
(postal_code, family_name, given_name, region_code) are present;
incomplete address fields will cause the API request to fail.product_destination_id must be a numeric string. It is NOT a resource
name.ConsentStatus are CONSENT_GRANTED and
CONSENT_DENIED. Do not use the values GRANTED and DENIED.UserIdentifier are email_address and phone_number. Do
not use the Google Ads API field names hashed_email and
hashed_phone_number.retrieve_request_status) if
validate_only is set to true.[!IMPORTANT] Refer to Understand API Errors for a detailed guide on how to understand the structure of errors returned by the API.
IngestAudienceMembersRequest.client.retrieve_request_status using
RetrieveRequestStatusRequest(request_id=...).request_status_per_destination in the response to inspect
each target's request_status.request_status is SUCCESS,
PARTIAL_SUCCESS, or FAILED, inspect diagnostic values:
audience_members_ingestion_status (for example,
composite_data_ingestion_status).
record_count (includes both success and
failure).data_type_counts for composite_data_ingestion_status or
user_identifier_count for user_data_ingestion_status; see the
Diagnostics Guide
for other status types).user_data and composite_data uploads,
check upload_match_rate_range.FAILED or PARTIAL_SUCCESS, inspect
each error's reason and record_count under
error_info.error_counts.reason and record_count
under warning_info.warning_counts (even if the destination status is
SUCCESS).