Stay organized with collectionsSave and categorize content based on your preferences.
As a Google Ads administrator, you can manage user access invitations to a Google Adss
account.
Invite users
You can send an email invitation to a new user as part ofmanaging access to a
Google Ads account.
This is done by creating a newCustomerUserAccessInvitationusing theMutateCustomerUserAccessInvitationmethod of theCustomerUserAccessInvitationService.
The email invitation needs to be manually
accepted by the user who received the invitation. The invitation can also be
accepted by the user using an alternate email address. It can take up to 24
hours for the status to change from pending once the invitation is accepted.
This code snippet shows how to send an invitation:
// Creates a customer user access invitation.$customerUserAccessInvitation = new CustomerUserAccessInvitation(['email_addres>s' = $emailAddress,'ac>cess_role' = AccessRole::value($accessRole)]);// Creates a customer user access invitation operation.$customerUserAccessInvitationOperation = new CustomerUserAccessInvitationOperation();$customerUserAccessInvi>tationOperation-setCreate($customerUserAccessInvitation);// Issues a mutate request to send the customer user access invitation and prints its// information.$customerUserAccessInvitationServiceClient =$>googleAdsClient-getCustomerUserAccessInvitationServiceClient();$response = $customerUserAccessInvitati>onServiceClient-mutateCustomerUserAccessInvitation(MutateCustomerUserAccessInvitationRequest::build($customerId,$customerUserAccessInvitationOperation));printf("Customer user access invitation with resource name '%s' was sent from customer ". "ID %d to email address '%s>' with a>ccess role '%s'.%s",$response-getResult()-getResourceName(),$cu
invitation_operation:CustomerUserAccessInvitationOperation=(client.get_type("CustomerUserAccessInvitationOperation"))invitation:CustomerUserAccessInvitation=invitation_operation.createinvitation.email_address=email_address# The access_role field in the CustomerUserAccessInvitation message expects# an AccessRoleEnum value (which is an int).invitation.access_role=client.enums.AccessRoleEnum[access_role].valueresponse:MutateCustomerUserAccessInvitationResponse=(service.mutate_customer_user_access_invitation(customer_id=customer_id,operation=invitation_operation))print("Customer user access invitation was sent for "f"customer ID: '{customer_id}', "f"email address{email_address}, and "f"access role{access_role}. The invitation resourc
operation=client.operation.create_resource.customer_user_access_invitationdo|inv|inv.email_address=email_addressinv.access_role=access_roleend# Issues a mutate request to get the response.response=client.service.customer_user_access_invitation.mutate_customer_user_access_invitation(customer_id:customer_id,operation:operation,)# Prints out information of the created invitation.puts"Customer user access invitation was sent for customerId =#{customer_id}"\"email address = '#{email_address}', "\"
subinvite_user_with_access_role{my($api_client,$customer_id,$email_address,$access_role)=@_;# Create the user access invitation.my$user_access_invitation=Google::Ads::GoogleAds::V21::Resources::CustomerUserAccessInvitation->new({emailAddress=>$email_address,accessRole=>$access_role});# Create the user access invitation operation.my$invitation_operation=Google::Ads::GoogleAds::V21::Services::CustomerUserAccessInvitationService::CustomerUserAccessInvitationOperation->new({create=>$user_access_invitation});# Send the user access invitation.my$invitation_response=$api_client->CustomerUserAccessInvitationService()->mutate({customerId=>$customer_id,operation=>$invitation_operation});printf"Customer user access invitation was sent for customerId = %d "."to email address = '%s' and access role = '%s'. "."The invitation resource name is '%s'.\n",$customer_id,$>email_address,$access_role,$invi
You can revoke an invitation by removing aCustomerUserAccessInvitationusing
theMutateCustomerUserAccessInvitationmethod of theCustomerUserAccessInvitationService.
You can add additional filtering conditions to retrieve subsets of invitations.
For example, a common use case is to retrieve the list of pending user
invitations. This can be achieved by filtering forcustomer_user_access_invitation.invitation_status = PENDING:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-03 UTC."],[[["\u003cp\u003eGoogle Ads admins can manage user access invitations, including sending, revoking, and retrieving them.\u003c/p\u003e\n"],["\u003cp\u003eSending invitations involves creating a \u003ccode\u003eCustomerUserAccessInvitation\u003c/code\u003e and using the \u003ccode\u003eMutateCustomerUserAccessInvitation\u003c/code\u003e method, with email acceptance required.\u003c/p\u003e\n"],["\u003cp\u003eRevoking invitations is done by removing the \u003ccode\u003eCustomerUserAccessInvitation\u003c/code\u003e via the \u003ccode\u003eMutateCustomerUserAccessInvitation\u003c/code\u003e method.\u003c/p\u003e\n"],["\u003cp\u003eRetrieving invitations uses Google Ads Query Language to query \u003ccode\u003eCustomerUserAccessInvitation\u003c/code\u003e entities, allowing filtering by status or other criteria.\u003c/p\u003e\n"]]],[],null,[]]