Advertiser identity verification

  • Google requires advertisers to complete verification programs for a safe ad ecosystem and regulatory compliance.

  • Failure to complete required verification by the deadline can result in account pausing.

  • The IdentityVerificationService allows retrieving verification status, including deadlines, and starting the verification process.

  • When retrieving verification status, it is recommended to cache results and use a long polling interval due to rate limits.

  • To start the verification process, call StartIdentityVerification after confirming the account requires verification using GetIdentityVerification .

To provide a safe and trustworthy ad ecosystem for users and to comply with emerging regulations, Google now requires advertisers to complete one or more verification programs .

If you're required to complete a verification program, a deadline might be set for the verification process. If the deadline is passed without verification completion, your account could be paused.

You can also proactively undergo verification without being required to do so. The IdentityVerificationService offers methods to do the following:

  • Retrieve the status of the verification process for a customer account, including any deadlines
  • Start a verification process

Retrieve verification status

To retrieve the status of the advertiser identity verification process for a customer account, call the GetIdentityVerification method:

Java

 private 
  
 IdentityVerification 
  
 getIdentityVerification 
 ( 
  
 long 
  
 customerId 
 , 
  
 IdentityVerificationServiceClient 
  
 identityVerificationServiceClient 
 ) 
  
 { 
  
 GetIdentityVerificationResponse 
  
 response 
  
 = 
  
 identityVerificationServiceClient 
 . 
 getIdentityVerification 
 ( 
 Long 
 . 
 toString 
 ( 
 customerId 
 )); 
  
 if 
  
 ( 
 response 
 . 
 getIdentityVerificationCount 
 () 
  
 == 
  
 0 
 ) 
  
 { 
  
 return 
  
 null 
 ; 
  
 } 
  
 IdentityVerification 
  
 identityVerification 
  
 = 
  
 response 
 . 
 getIdentityVerification 
 ( 
 0 
 ); 
  
 String 
  
 deadline 
  
 = 
  
 identityVerification 
  
 . 
 getIdentityVerificationRequirement 
 () 
  
 . 
 getVerificationCompletionDeadlineTime 
 (); 
  
 IdentityVerificationProgress 
  
 progress 
  
 = 
  
 identityVerification 
 . 
 getVerificationProgress 
 (); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
  
 "Account %d has a verification completion deadline of '%s' and status '%s' for advertiser" 
  
 + 
  
 " identity verification.%n" 
 , 
  
 customerId 
 , 
  
 deadline 
 , 
  
 progress 
 . 
 getProgramStatus 
 ()); 
  
 return 
  
 identityVerification 
 ; 
 } 
  
  

C#

 private 
  
 static 
  
 IdentityVerification 
  
 GetIdentityVerification 
 ( 
  
 GoogleAdsClient 
  
 client 
 , 
  
 long 
  
 customerId 
 ) 
 { 
  
 IdentityVerificationServiceClient 
  
 identityVerificationService 
  
 = 
  
 client 
 . 
 GetService 
 ( 
 Services 
 . 
 V23 
 . 
 IdentityVerificationService 
 ); 
  
 try 
  
 { 
  
 GetIdentityVerificationResponse 
  
 response 
  
 = 
  
 identityVerificationService 
 . 
 GetIdentityVerification 
 ( 
  
 new 
  
 GetIdentityVerificationRequest 
 () 
  
 { 
  
 CustomerId 
  
 = 
  
 customerId 
 . 
 ToString 
 () 
  
 } 
  
 ); 
  
 if 
  
 ( 
 response 
 . 
 IdentityVerification 
 . 
 Count 
  
 == 
  
 0 
 ) 
  
 { 
  
 return 
  
 null 
 ; 
  
 } 
  
 IdentityVerification 
  
 identityVerification 
  
 = 
  
 response 
 . 
 IdentityVerification 
 [ 
 0 
 ]; 
  
 string 
  
 deadline 
  
 = 
  
 identityVerification 
 . 
 IdentityVerificationRequirement 
 . 
 VerificationCompletionDeadlineTime 
 ; 
  
 IdentityVerificationProgress 
  
 identityVerificationProgress 
  
 = 
  
 identityVerification 
 . 
 VerificationProgress 
 ; 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Account {customerId} has a verification completion " 
  
 + 
  
 $"deadline of {deadline} and status " 
  
 + 
  
 $"{identityVerificationProgress.ProgramStatus} for advertiser identity " 
  
 + 
  
 "verification." 
 ); 
  
 return 
  
 identityVerification 
 ; 
  
 } 
  
 catch 
  
 ( 
 GoogleAdsException 
  
 e 
 ) 
  
 { 
  
 Console 
 . 
 WriteLine 
 ( 
 "Failure:" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Message: {e.Message}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Failure: {e.Failure}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Request ID: {e.RequestId}" 
 ); 
  
 throw 
 ; 
  
 } 
 } 
  
  

PHP

 private static function getIdentityVerification( 
 int $customerId, 
 IdentityVerificationServiceClient $identityVerificationServiceClient 
 ) { 
 // Gets an identity verification response. 
 $response = $identityVerificationServiceClient->getIdentityVerification( 
 GetIdentityVerificationRequest::build($customerId) 
 ); 
 if (empty($response->getIdentityVerification())) { 
 return null; 
 } 
 // Prints some details about the retrieved identity verification. 
 /** @var IdentityVerification $identityVerification */ 
 $identityVerification = $response->getIdentityVerification()->getIterator()->current(); 
 $deadline = $identityVerification->getIdentityVerificationRequirement() 
 ->getVerificationCompletionDeadlineTime(); 
 $progress = $identityVerification->getVerificationProgress(); 
 printf( 
 "Account %d has a verification completion deadline of '%s' and status '%s' for" 
 . " advertiser identity verification.%s", 
 $customerId, 
 $deadline, 
 IdentityVerificationProgramStatus::name($progress->getProgramStatus()), 
 PHP_EOL 
 ); 
 return $identityVerification; 
 }  
 

Python

 def 
  
 get_identity_verification 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 ) 
 - 
> Optional 
 [ 
 IdentityVerification 
 ]: 
  
 """Retrieves the status of the advertiser identity verification process. 
 Args: 
 client: An initialized GoogleAdsClient instance. 
 customer_id: The client customer ID str. 
 Returns: 
 either an IdentityVerification instance, or None 
 """ 
 service 
 : 
 IdentityVerificationServiceClient 
 = 
 client 
 . 
 get_service 
 ( 
 "IdentityVerificationService" 
 ) 
 response 
 : 
 GetIdentityVerificationResponse 
 = 
 ( 
 service 
 . 
 get_identity_verification 
 ( 
 customer_id 
 = 
 customer_id 
 ) 
 ) 
 # Check if the response contains any indentity verifications. If not, then 
 # None will be returned. 
 if 
 response 
 . 
 identity_verification 
 : 
 identity_verification_data 
 : 
 IdentityVerification 
 = 
 ( 
 response 
 . 
 identity_verification 
 [ 
 0 
 ] 
 ) 
 deadline 
 : 
 str 
 = 
 ( 
 identity_verification_data 
 . 
 identity_verification_requirement 
 . 
 verification_completion_deadline_time 
 ) 
 # progress is an enum member 
 progress 
 : 
 ( 
 IdentityVerificationProgramStatusEnum 
 . 
 IdentityVerificationProgramStatus 
 ) 
 = 
 identity_verification_data 
 . 
 verification_progress 
 . 
 program_status 
 print 
 ( 
 f 
 "Account 
 { 
 customer_id 
 } 
 has a verification completion deadline " 
 "of 
 {deadline} 
 and status 
 {progress.name} 
 for advertiser identity " 
 # Use .name for string representation of enum 
 "verification." 
 ) 
 return 
 identity_verification_data  
 
 . 
 py 

Ruby

 def 
  
 get_identity_verification 
 ( 
 client 
 , 
  
 customer_id 
 ) 
  
 response 
  
 = 
  
 client 
 . 
 service 
 . 
 identity_verification 
 . 
 get_identity_verification 
 ( 
  
 customer_id 
 : 
  
 customer_id 
  
 ) 
  
 return 
  
 nil 
  
 if 
  
 response 
 . 
 nil? 
  
 || 
  
 response 
 . 
 identity_verification 
 . 
 empty? 
  
 identity_verification 
  
 = 
  
 response 
 . 
 identity_verification 
 . 
 first 
  
 deadline 
  
 = 
  
 identity_verification 
 . 
  
 identity_verification_requirement 
 . 
  
 verification_completion_deadline_time 
  
 progress 
  
 = 
  
 identity_verification 
 . 
 verification_progress 
  
 puts 
  
 "Account 
 #{ 
 customer_id 
 } 
 has a verification completion deadline " 
  
 \ 
  
 "of 
 #{ 
 deadline 
 } 
 and status 
 #{ 
 progress 
 . 
 program_status 
 } 
 for advertiser " 
  
 \ 
  
 "identity verification." 
  
 identity_verification 
 end  
 
 . 
 rb 
  

Perl

 sub 
  
 get_identity_verification 
  
 { 
  
 my 
  
 ( 
 $api_client 
 , 
  
 $customer_id 
 ) 
  
 = 
  
 @_ 
 ; 
  
 my 
  
 $response 
  
 = 
  
 $api_client 
 - 
> IdentityVerificationService 
 () 
 - 
> get 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
  
 }); 
  
 if 
  
 ( 
 ! 
 defined 
  
 $response 
 - 
> { 
 identityVerification 
 }) 
  
 { 
  
 printf 
  
 "Account %s does not require advertiser identity verification." 
 , 
  
 $customer_id 
 ; 
  
 return 
 ; 
  
 } 
  
 my 
  
 $identity_verification 
  
 = 
  
 $response 
 - 
> { 
 identityVerification 
 }[ 
 0 
 ]; 
  
 my 
  
 $deadline 
  
 = 
  
 $identity_verification 
 - 
> { 
 identityVerificationRequirement 
 } 
  
 { 
 verificationCompletionDeadlineTime 
 }; 
  
 my 
  
 $identity_verification_progress 
  
 = 
  
 $identity_verification 
 - 
> { 
 verificationProgress 
 }; 
  
 printf 
  
 "Account %s has a verification completion deadline of %s and status " 
  
 . 
  
 "%s for advertiser identity verification." 
 , 
  
 $customer_id 
 , 
  
 $deadline 
 , 
  
 $identity_verification_progress 
 - 
> { 
 programStatus 
 }; 
  
 return 
  
 $identity_verification 
 ; 
 } 
  
  

curl

If the customer account is enrolled in the mandatory advertiser identity verification program, the service returns a non-empty response containing a list of IdentityVerification objects. An empty response indicates that the customer account is not required to undergo advertiser identity verification.

The Google Ads API only supports the ADVERTISER_IDENTITY_VERIFICATION program, so that would be the only item in the list.

An IdentityVerification object contains the following properties:

Start verification process

If a customer account is enrolled in the mandatory advertiser identity verification program — GetIdentityVerification returned a non-empty response with a deadline for the verification process completion, you can start a verification session by calling StartIdentityVerification :

Java

 private 
  
 void 
  
 startIdentityVerification 
 ( 
  
 long 
  
 customerId 
 , 
  
 IdentityVerificationServiceClient 
  
 identityVerificationServiceClient 
 ) 
  
 { 
  
 // Sends a request to start the identity verification process. 
  
 identityVerificationServiceClient 
 . 
 startIdentityVerification 
 ( 
  
 Long 
 . 
 toString 
 ( 
 customerId 
 ), 
  
 IdentityVerificationProgram 
 . 
 ADVERTISER_IDENTITY_VERIFICATION 
 ); 
 } 
  
  

C#

 private 
  
 static 
  
 void 
  
 StartIdentityVerification 
 ( 
 GoogleAdsClient 
  
 client 
 , 
  
 long 
  
 customerId 
 ) 
 { 
  
 IdentityVerificationServiceClient 
  
 identityVerificationService 
  
 = 
  
 client 
 . 
 GetService 
 ( 
 Services 
 . 
 V23 
 . 
 IdentityVerificationService 
 ); 
  
 StartIdentityVerificationRequest 
  
 request 
  
 = 
  
 new 
  
 StartIdentityVerificationRequest 
 () 
  
 { 
  
 CustomerId 
  
 = 
  
 customerId 
 . 
 ToString 
 (), 
  
 VerificationProgram 
  
 = 
  
 IdentityVerificationProgram 
 . 
 AdvertiserIdentityVerification 
  
 }; 
  
 try 
  
 { 
  
 identityVerificationService 
 . 
 StartIdentityVerification 
 ( 
 request 
 ); 
  
 } 
  
 catch 
  
 ( 
 GoogleAdsException 
  
 e 
 ) 
  
 { 
  
 Console 
 . 
 WriteLine 
 ( 
 "Failure:" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Message: {e.Message}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Failure: {e.Failure}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Request ID: {e.RequestId}" 
 ); 
  
 throw 
 ; 
  
 } 
 } 
  
  

PHP

 private static function startIdentityVerification( 
 int $customerId, 
 IdentityVerificationServiceClient $identityVerificationServiceClient 
 ): void { 
 // Sends a request to start the identity verification process. 
 $identityVerificationServiceClient->startIdentityVerification( 
 StartIdentityVerificationRequest::build( 
 $customerId, 
 IdentityVerificationProgram::ADVERTISER_IDENTITY_VERIFICATION 
 ) 
 ); 
 }  
 

Python

 def 
  
 start_identity_verification 
 ( 
 client 
 : 
 GoogleAdsClient 
 , 
 customer_id 
 : 
 str 
 ) 
 - 
> None 
 : 
  
 """Starts the identity verification process. 
 Args: 
 client: An initialized GoogleAdsClient instance. 
 customer_id: The client customer ID str. 
 """ 
 service 
 : 
 IdentityVerificationServiceClient 
 = 
 client 
 . 
 get_service 
 ( 
 "IdentityVerificationService" 
 ) 
 # Sends a request to start the identity verification process. 
 # The verification_program argument expects an IdentityVerificationProgramEnum value (int). 
 service 
 . 
 start_identity_verification 
 ( 
 customer_id 
 = 
 customer_id 
 , 
 verification_program 
 = 
 client 
 . 
 enums 
 . 
 IdentityVerificationProgramEnum 
 . 
 ADVERTISER_IDENTITY_VERIFICATION 
 . 
 value 
 , 
 ) 
  

Ruby

 def 
  
 start_identity_verification 
 ( 
 client 
 , 
  
 customer_id 
 ) 
  
 client 
 . 
 service 
 . 
 identity_verification 
 . 
 start_identity_verification 
 ( 
  
 customer_id 
 : 
  
 customer_id 
 , 
  
 verification_program 
 : 
  
 :ADVERTISER_IDENTITY_VERIFICATION 
 , 
  
 ) 
 end  
 
 . 
 rb 
  

Perl

 sub 
  
 start_identity_verification 
  
 { 
  
 my 
  
 ( 
 $api_client 
 , 
  
 $customer_id 
 ) 
  
 = 
  
 @_ 
 ; 
  
 my 
  
 $request 
  
 = 
  
 Google::Ads::GoogleAds::V23::Services::IdentityVerificationService:: 
 StartIdentityVerificationRequest 
  
 - 
> new 
 ({ 
  
 customerId 
  
 = 
>  
 $customer_id 
 , 
  
 verificationProgram 
  
 = 
>  
 ADVERTISER_IDENTITY_VERIFICATION 
  
 }); 
  
 $api_client 
 - 
> AdvertiserIdentityVerificationService 
 () 
  
 - 
> start_identity_verification 
 ( 
 $request 
 ); 
 } 
  
  

curl

This will only succeed if there isn't another verification session in progress; once you have started a verification session, subsequent calls to GetIdentityVerification will return the action URL for the user to complete the verification process and the expiration time of the action URL.

After the expiration time has passed, you can call StartIdentityVerification again to start a new verification session.

Design a Mobile Site
View Site in Mobile | Classic
Share by: