As solicitações para enviar eventos ou membros do público-alvo são processadas de forma assíncrona.
Uma resposta de ingestão bem-sucedida retorna um request_id e indica que a
solicitação atendeu a todos os requisitos e foi aceita para processamento. No entanto,
ele não indica se os registros na solicitação foram processados
com sucesso.
Use o request_id retornado com RetrieveRequestStatus para
verificar o status do upload e analisar os diagnósticos.
Confira o fluxo de trabalho recomendado para verificar o status das suas solicitações e a integridade dos uploads de eventos e públicos-alvo:
Emita solicitações para enviar eventos ou enviar ou remover membros do público-alvo.
Verifique o status geral de cada solicitação de ingestão. Uma solicitação bem-sucedida tem um
Statuscomcodeigual a0(valor de tipo enumeradoOK, resposta HTTP200 OK) e retorna umIngestEventsResponse,IngestAudienceMembersResponseouRemoveAudienceMembersResponse.Se uma solicitação não for bem-sucedida, modifique-a para corrigir o erro e envie-a novamente.
Se uma solicitação for bem-sucedida, capture o
request_idda resposta para usá-lo para verificar o status do processamento na próxima etapa.Aguarde 30 minutos e envie uma solicitação
RetrieveRequestStatuspara cadarequest_idbem-sucedido.Um
RetrieveRequestStatusRequestrequer um único valorrequest_id. Envie uma solicitação de status separada para cada ID de solicitação que você capturou de uma solicitação de ingestão bem-sucedida.Repita periodicamente essa etapa para cada
request_idaté que o status do destino de cada destino chegue aSUCCESS,PARTIAL_SUCCESSouFAILED. Siga a estratégia de sondagem recomendada para aguardar entre cada solicitação.Analise cada
RetrieveRequestStatusResponsepara confirmar se os uploads estão funcionando corretamente e identificar problemas com os dados.Corrija problemas de dados.
Volte para a etapa 1 e repita até resolver todos os problemas com os uploads.
Verificar o status geral do destino
O request_status_per_destination em um
RetrieveRequestStatusResponse contém uma entrada separada para
cada destino na solicitação de ingestão correspondente.
Por exemplo, se o IngestAudienceMembersRequest
contiver três entradas na lista destinations para enviar dados a três públicos-alvo
diferentes, a resposta de status vai conter três entradas em
request_status_per_destination (uma entrada por público-alvo).
Verifique o campo request_status em cada
RequestStatusPerDestination para determinar se a
API Data Manager terminou de processar os dados desse destino.
Estes são os valores possíveis de request_status:
PROCESSING: os dados do destino ainda estão sendo processados. Os avisos e erros não são preenchidos para o destino nesta etapa. Continue a sondagem até que o status chegue a um estado terminal.SUCCESS: o processamento da solicitação para o destino foi concluído sem erros. Verifique se há avisos sinalizados durante o processamento.FAILED: todos os registros do destino falharam devido a erros. Verifique se há avisos e erros para determinar por que todos os registros falharam. Verifique também se há avisos sinalizados durante o processamento.PARTIAL_SUCCESS: alguns dos registros do destino foram bem-sucedidos, mas outros falharam devido a erros. Verifique se há erros para determinar por que alguns registros falharam. Verifique também se há avisos sinalizados durante o processamento.
Revisar diagnósticos
Quando o request_status de um destino atingir SUCCESS, FAILED ou
PARTIAL_SUCCESS, revise os diagnósticos detalhados na resposta para verificar
as contagens e resolver problemas.
Verificar o status do evento ou do público-alvo por destino
Inspecione o campo de status que corresponde ao tipo de solicitação de ingestão. Apenas
um dos campos a seguir é definido em cada RequestStatusPerDestination:
Status de ingestão de eventos
O campo events_ingestion_status será preenchido se a solicitação for um
IngestEventsRequest.
Verifique o record_count do IngestEventStatus
para confirmar se o número total de registros recebidos corresponde às suas
expectativas. O record_count inclui registros bem-sucedidos e com falha.
Status de ingestão de membros do público-alvo
O campo audience_members_ingestion_status será preenchido se a solicitação for um
IngestAudienceMembersRequest. Este é o campo
IngestAudienceMembersStatus para verificar
cada tipo de dados de público-alvo. Apenas um desses campos é definido.
composite_data_ingestion_statusVerifique o
record_countdoIngestCompositeDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
data_type_countspara confirmar se o número de identificadores corresponde às suas expectativas. Essa lista detalha todos os identificadores recebidos (como endereço de e-mail, número de telefone, endereço físico e endereço IP) porDataType.Se a solicitação tiver um número suficiente de registros, o
upload_match_rate_rangevai conter o intervalo de taxa de correspondência para os registros na solicitação.google_user_id_data_ingestion_statusVerifique o
record_countdoIngestGoogleUserIdDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
google_user_id_countpara confirmar se o número de IDs de usuário do Google recebidos corresponde às suas expectativas.mobile_data_ingestion_statusVerifique o
record_countdoIngestMobileDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
mobile_id_countpara confirmar se o número de IDs digitais recebidos corresponde às suas expectativas.pair_data_ingestion_statusVerifique o
record_countdoIngestPairDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
pair_id_countpara confirmar se o número de IDs de PAIR recebidos corresponde às suas expectativas.partner_provided_id_data_ingestion_statusVerifique o
record_countdoIngestPartnerProvidedIdDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
partner_provided_id_countpara confirmar se o número de IDs fornecidos pelo parceiro recebidos corresponde às suas expectativas.ppid_data_ingestion_statusVerifique o
record_countdoIngestPpidDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
ppid_countpara confirmar se o número de PPIDs recebidos corresponde às suas expectativas.user_data_ingestion_statusVerifique o
record_countdoIngestUserDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
user_identifier_countpara confirmar se o número de identificadores de usuário recebidos corresponde às suas expectativas.Se a solicitação tiver um número suficiente de registros, o
upload_match_rate_rangevai conter o intervalo de taxa de correspondência para os registros na solicitação.user_id_data_ingestion_statusVerifique o
record_countdoIngestUserIdDataStatuspara confirmar se o número total de registros recebidos corresponde às suas expectativas. Orecord_countinclui registros bem-sucedidos e com falha.Verifique o
user_id_countpara confirmar se o número de IDs de usuário recebidos corresponde às suas expectativas.
Status de remoção de membros do público-alvo
O campo audience_members_removal_status será preenchido se a solicitação for um
RemoveAudienceMembersRequest. Confira o campo RemoveAudienceMembersStatus para verificar cada tipo de dados de público-alvo. Apenas um desses campos é definido.
composite_data_removal_status- Status de remoção de dados compostos
google_user_id_data_removal_status- Status de remoção dos dados do ID do usuário do Google
mobile_data_removal_status- Status de remoção de dados móveis.
pair_data_removal_status- Status de remoção dos dados da PAIR.
partner_provided_id_data_removal_status- Status de remoção dos dados de ID fornecidos pelo parceiro
ppid_data_removal_status- Status de remoção dos dados do PPID.
user_data_removal_status- Status de remoção dos dados do usuário.
user_id_data_removal_status- Status de remoção dos dados do ID do usuário
Verifique o record_count para confirmar se o número total de registros
recebidos corresponde às suas expectativas. O record_count inclui registros
bem-sucedidos e com falha.
Além disso, verifique user_identifier_count, mobile_id_count,
pair_id_count, ppid_count, user_id_count, google_user_id_count ou
partner_provided_id_count para confirmar a contagem total de
identificadores recebidos.
Para dados compostos, verifique o data_type_counts para confirmar se o número de identificadores corresponde às suas expectativas. Essa lista detalha todos os identificadores recebidos (como endereço de e-mail, número de telefone, endereço físico e endereço IP) pelo DataType.
Verificar avisos e erros
Além dos campos de status para o destino e o tipo de solicitação, o
RetrieveRequestStatusResponse contém um detalhamento de
avisos e erros para a solicitação.
Um erro indica que a API rejeitou completamente o registro.
Um aviso indica que a API não rejeitou o registro, mas teve que ignorar partes dos dados do registro.
Por exemplo, se um Event contiver dados criptografados de
UserIdentifier e
AdIdentifiers, como gclid, e os
dados de UserIdentifier não puderem ser descriptografados, a API Data Manager ainda vai processar o
registro usando o AdIdentifiers, mas vai retornar o aviso
PROCESSING_WARNING_REASON_USER_IDENTIFIER_DECRYPTION_ERROR.
No entanto, se o Event não contiver AdIdentifiers e os dados de UserIdentifier
não puderem ser descriptografados, a API Data Manager vai rejeitar todo o registro e
informar o erro PROCESSING_ERROR_REASON_USER_IDENTIFIER_DECRYPTION_ERROR,
porque um Event válido precisa ter pelo menos um de ad_identifiers ou
user_data.
Estes são os campos de resposta que contêm informações de aviso e erro. Esses
campos são preenchidos quando o status geral do destino
atinge SUCCESS, PARTIAL_SUCCESS ou FAILED.
warning_infoUm objeto
WarningInfo. O campowarning_countscontém uma lista de objetosWarningCount. CadaWarningCountcontém:reason: o tipo de aviso.record_count: o número de registros que tiveram esse tipo de aviso.record_indices: os índices dos registros na solicitação original que tinham esse tipo de aviso. Consulte Verificar registros afetados.
Verifique o
warning_infomesmo que o status geral do destino sejaSUCCESS.error_infoUm objeto
ErrorInfo. O campoerror_countscontém uma lista de objetosErrorCount. CadaErrorCountcontém:reason: o tipo de erro.record_count: o número de registros que falharam devido a esse tipo de erro.record_indices: os índices dos registros na solicitação original que falharam devido a esse tipo de erro. Consulte Verificar registros afetados.
Verificar registros afetados
Use o record_indices de cada WarningCount e ErrorCount para identificar
os registros exatos na solicitação de ingestão que tiveram avisos ou erros.
Cada valor em record_indices é a posição baseada em 0 de um registro na
solicitação original:
Para um
IngestEventsRequest, o índice se refere à posição do evento na listaeventsda solicitação.Para um
IngestAudienceMembersRequest, o índice se refere à posição do membro do público-alvo na listaaudience_membersda solicitação.
Por exemplo, um valor record_indices de 0 se refere ao primeiro evento ou membro do público-alvo na solicitação.
Lembre-se do seguinte ao analisar record_indices:
Os índices são informados por destino. Se a solicitação tiver vários destinos, cada
RequestStatusPerDestinationvai informar os índices dos registros com avisos ou erros para esse destino. O mesmo registro pode aparecer em mais de umRequestStatusPerDestination.Um registro pode aparecer em mais de um motivo. Por exemplo, um registro pode ter um erro e um aviso ou mais de um tipo de aviso. Para encontrar todos os problemas de um determinado registro, verifique cada
WarningCounteErrorCountdo destino.
Veja um exemplo de RetrieveRequestStatusResponse para um
IngestEventsRequest com cinco eventos e um destino. O primeiro evento
(índice 0) e o quarto evento (índice 3) falharam porque o
ID da transação já havia sido enviado, e o terceiro evento (índice 2) foi
processado, mas tinha um valor de variável personalizada que não é predefinido.
{
"requestStatusPerDestination": [
{
"destination": {
"operatingAccount": {
"accountType": "GOOGLE_ADS",
"accountId": "1234567890"
},
"productDestinationId": "123456789"
},
"requestStatus": "PARTIAL_SUCCESS",
"eventsIngestionStatus": {
"recordCount": "5"
},
"errorInfo": {
"errorCounts": [
{
"recordCount": "2",
"reason": "PROCESSING_ERROR_REASON_DUPLICATE_TRANSACTION_ID",
"recordIndices": [0, 3]
}
]
},
"warningInfo": {
"warningCounts": [
{
"recordCount": "1",
"reason": "PROCESSING_WARNING_REASON_CUSTOM_VARIABLE_NOT_PREDEFINED",
"recordIndices": [2]
}
]
}
}
]
}
Para corrigir os registros:
Para cada
ErrorCounteWarningCount, use orecord_indicespara procurar os registros correspondentes na solicitação original.Use o
reasonpara determinar como corrigir cada registro. Para descrições de cada motivo, consulteProcessingErrorReasoneProcessingWarningReason.Envie uma nova solicitação de ingestão que contenha apenas os registros corrigidos. Não reenvie registros que foram bem-sucedidos, porque isso pode resultar em dados duplicados ou erros adicionais.
Estratégia de sondagem
Envie periodicamente o RetrieveRequestStatusRequest
usando um algoritmo de espera exponencial até que o request_status alcance
SUCCESS, FAILED ou PARTIAL_SUCCESS para cada destino na solicitação
original. Isso pode levar até 24 horas, embora a API Data Manager possa concluir
o processamento de algumas solicitações em apenas 30 minutos.
Veja um exemplo de uma configuração razoável de tempo de espera inicial e nova tentativa que equilibra a atividade e o uso da cota:
| Configuração | Valor |
|---|---|
| Tempo de espera antes da primeira solicitação de diagnóstico (minutos) | 30 |
| Multiplicador de espera | 1.3 |
| Espera máxima (minutos) | 60 (1 hora) |
| Tempo total máximo (minutos) | 1440 (24 horas) |
Confira uma sequência de solicitações e o tempo decorrido com essa configuração:
Gráfico

Dados
| Tentativa | Tempo desde a solicitação de ingestão (hh:mm) | Atraso antes da tentativa | Observações |
|---|---|---|---|
| 1 | 00:30 | 30 min | Primeiro, verifique se o status está disponível |
| 2 | 01:09 | 39 min | |
| 3 | 01:59 | 50,7 min | |
| 4 | 02:59 | 60 min | O atraso agora é limitado a 1 hora |
| 5 | 03:59 | 60 min | |
| 6 | 04:59 | 60 min | |
| 7 | 05:59 | 60 min | |
| 8 | 06:59 | 60 min | |
| 9 | 07:59 | 60 min | |
| 10 | 08:59 | 60 min | |
| 11 | 09:59 | 60 min | |
| 12 | 10:59 | 60 min | |
| 13 | 11:59 | 60 min | Marca de 12 horas |
| 14 | 12:59 | 60 min | |
| 15 | 13:59 | 60 min | |
| 16 | 14:59 | 60 min | |
| 17 | 15:59 | 60 min | |
| 18 | 16:59 | 60 min | |
| 19 | 17:59 | 60 min | |
| 20 | 18:59 | 60 min | |
| 21 | 19:59 | 60 min | |
| 22 | 20:59 | 60 min | |
| 23 | 21:59 | 60 min | |
| 24 | 22:59 | 60 min | |
| 25 | 23:59 | 60 min | Última solicitação antes do tempo total máximo de 24 horas |
Adicione uma pequena quantidade aleatória de jitter aos atrasos de espera para evitar o problema de "rebanho estrondoso", em que muitos clientes tentam novamente ao mesmo tempo.
Requisitos de autorização
Um RetrieveRequestStatusRequest não aceita contas de destino ou cabeçalhos da solicitação. Em vez disso, a API Data Manager identifica os destinos da solicitação de ingestão original associada ao request_id e verifica se o autor da chamada tem acesso ao operating_account em cada Destination.
Para verificar o status de uma solicitação, as credenciais usadas em um
RetrieveRequestStatusRequest precisam atender aos seguintes
requisitos para o operating_account de cada destino da solicitação de ingestão
original:
Caminho de acesso idêntico: as credenciais precisam ter acesso a cada
operating_accountusando o mesmo caminho de acesso especificado na solicitação de ingestão original.Por exemplo, se uma solicitação de ingestão para um
operating_accountdo Google Ads especificou uma conta de administrador principal comologin_account, as credenciais também precisam ter acesso aooperating_accountpor meio dessa mesma conta de administrador. Mesmo que a Conta do Google associada às credenciais tenha acesso direto aooperating_accountsecundário, a solicitação vai falhar com um erroPERMISSION_DENIEDse essa conta não tiver acesso pela conta de administrador dologin_accountespecificada durante a ingestão.Nível de acesso suficiente: a Conta do Google associada às credenciais precisa ter um nível de acesso ou uma função com permissão para ingerir dados no
operating_account.Por exemplo, no Google Ads, a Conta do Google precisa ter o nível de acesso Administrador ou Padrão. Uma solicitação com credenciais para uma conta com o nível de acesso Somente leitura falha com um erro
PERMISSION_DENIED.