Here's the recommended workflow to verify the health of your event and audience uploads and identify issues with your data.
- Issue requests to send events or send or remove audience members.
- Capture the
request_id
from eachIngestEventsResponse
,IngestAudienceMembersResponse
, orRemoveAudienceMembersResponse
. - Send a
RetrieveRequestStatus
request for eachrequest_id
. - Review each
RetrieveRequestStatusResponse
to confirm your uploads are working properly and identify any issues with your data. - Correct data issues.
- Go back to step 1 and repeat until you've addressed all issues with your uploads.
Construct requests
A RetrieveRequestStatusRequest
has a single request_id
field. Send one request for each request ID you captured when sending ingestion
requests.
Review responses
The request_status_per_destination
in a
RetrieveRequestStatusResponse
contains a separate entry for
each destination in the corresponding ingestion request.
For example, if your IngestAudienceMembersRequest
contained 3 entries in the destinations
list to send data to 3 different
audiences, then the status response would contain 3 entries in
request_status_per_destination
(one entry per audience).
Check overall destination status
As a first step, check the request_status
field to determine if the
Data Manager API has finished processing the data for the destination
of the
RequestStatusPerDestination
. Here are the possible values
of request_status
:
PROCESSING
: The data for the destination is still being processed.SUCCESS
: Request processing for the destination completed without any errors.FAILURE
: All of the records for the destination failed due to errors.PARTIAL_SUCCESS
: Some of the records for the destination succeeded, but others failed due to errors.
Check event or audience status per destination
Inspect the status field that corresponds to the type of ingestion request. Only
one of the following fields is set on each RequestStatusPerDestination
:
Events ingestion status
The events_ingestion_status
field is populated if the request was an
IngestEventsRequest
.
Check the record_count
of the IngestEventStatus
to confirm that the total number of records received matches your
expectations. The record_count
includes both successful and failed
records.
Audience members ingestion status
The audience_members_ingestion_status
field is populated if the request was an
IngestAudienceMembersRequest
. Here's the
IngestAudienceMembersStatus
field to check for
each type of audience data. Only one of these fields is set.
user_data_ingestion_status
Check the
record_count
of theIngestUserDataStatus
to confirm that the total number of records received matches your expectations. Therecord_count
includes both successful and failed records.Check the
user_identifier_count
to confirm the number of user identifiers received matches your expectations.If the request had a sufficient number of records, the
upload_match_rate_range
contains the match rate range for records in the request.mobile_data_ingestion_status
Check the
record_count
of theIngestMobileDataStatus
to confirm that the total number of records received matches your expectations. Therecord_count
includes both successful and failed records.Check the
mobile_id_count
to confirm the number of mobile IDs received matches your expectations.pair_data_ingestion_status
Check the
record_count
of theIngestPairDataStatus
to confirm that the total number of records received matches your expectations. Therecord_count
includes both successful and failed records.Check the
pair_id_count
to confirm the number of PAIR IDs received matches your expectations.
Audience members removal status
The audience_members_removal_status
field is populated if the request was a
RemoveAudienceMembersRequest
. Here's the
RemoveAudienceMembersStatus
field to check for each
type of audience data. Only one of these fields is set.
user_data_removal_status
- Removal status for user data.
mobile_data_removal_status
- Removal status for mobile data.
pair_data_removal_status
- Removal status for PAIR data.
Check the record_count
to confirm that the total number of records
received matches your expectations. The record_count
includes both
successful and failed records.
In addition, check the user_identifier_count
, mobile_id_count
, or
pair_id_count
to confirm the total count of user identifiers, mobile IDs,
or PAIR IDs received.
Check warnings and errors
In addition to the status fields for the destination and request type, the
RetrieveRequestStatusResponse
contains a breakdown of
warnings and errors for the request.
- An error indicates that the API completely rejected the record.
- A warning indicates that the API didn't reject the record, but it had to ignore portions of the record's data.
For example, if an Event
contains encrypted
UserIdentifier
data and
AdIdentifiers
such as gclid
, and the
UserIdentifier
data can't be decrypted, the Data Manager API still processes the
record using the AdIdentifiers
but returns the warning
PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR
.
However, if the Event
doesn't contain AdIdentifiers
and the UserIdentifier
data can't be decrypted, the Data Manager API rejects the entire record and
reports the error PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR
because a valid Event
must have at least one of ad_identifiers
or
user_data
.
Here are the response fields that contain warning and error information.
warning_info
- A list of
WarningCount
objects. EachWarningCount
contains areason
with the type of warning, and arecord_count
indicating the number of records that had warnings of that type. error_info
- A list of
ErrorCount
objects. EachErrorCount
contains areason
with the type of error, and arecord_count
indicating the number of records that failed due to that type of error.