Manage User Access InvitationsStay organized with collectionsSave and categorize content based on your preferences.
Page Summary
Google Ads administrators can manage user access invitations to a Google Ads account.
Invitations are sent by creating a newCustomerUserAccessInvitationusing theMutateCustomerUserAccessInvitationmethod.
Sent invitations must be manually accepted by the user, and the status can take up to 24 hours to update after acceptance.
Invitations can be revoked by removing theCustomerUserAccessInvitationusing theMutateCustomerUserAccessInvitationmethod.
Pending user invitations can be retrieved by queryingcustomer_user_access_invitationentities using Google Ads Query Language, potentially filtering byinvitation_status = PENDING.
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.
If Google determines that a multi-party approval is required:
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))ifresponse.result.multi_party_auth_review:# A multi-party auth review was triggered. See# FetchAndApprovePendingMultiPartyAuthReviews.cs for an example on how# to fetch and approve an MPA auth review.print("A multi-party auth review was triggered. The MPA review resource "f"name is{response.result.multi_party_auth_review}. Ask a second ""administrator to approve this request to send user access invitation. ""See advanced_operations/fetch_and_approve_pending_multi_party_auth_reviews.py ""for an example on how to approve an MPA auth review using the API.")else:# A multi-party auth review was not triggered.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 resource name is: "f"{response.result.resource_name}")
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}', "\"access role = '#{access_role}'."
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::V24::Resources::CustomerUserAccessInvitation->new({emailAddress=>$email_address,accessRole=>$access_role});# Create the user access invitation operation.my$invitation_operation=Google::Ads::GoogleAds::V24::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});if(not$invitation_response->{result}{multiPartyAuthReview}){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,$invitation_response->{result}{resourceName};}else{printf"A multi-party auth review was triggered. The MPA review "."resource name is '%s'. Ask a second administrator to approve this "."request to send user access invitation. See "."fetch_and_approve_pending_multi_party_auth_reviews.pl for an example "."on how to approve an MPA auth review using the API.\n",$invitation_response->{result}{multiPartyAuthReview};}return1;}
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 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 2026-06-24 UTC."],[],[]]