[{"data":1,"prerenderedAt":36},["ShallowReactive",2],{"$f19j9kc8yt1f5r":3},{"href":4,"title":5,"description":6,"kind":7,"mark":8,"planned":9,"contributors":10,"provenance":8,"express":9,"html":11,"headings":12},"\u002Fdocs\u002Ftools\u002Fgoogle","Google Search Console and GA4","Search performance, index status, sessions and key events, read-only, by signing in with Google.","integrates",null,false,[],"\u003Ch2 id=\"what-a-member-can-do\">What a member can do\u003C\u002Fh2>\n\u003Cp>With Google connected, a member can read the Search Console sites and the GA4 properties of the Google account it\nwas connected with. It has eight tools:\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it reads\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_console_sites_list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The Search Console sites the account can read\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_console_search_analytics\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Clicks, impressions, CTR and average position for one site over a date range, by query, page, country, device and date\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_console_url_inspect\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Whether one URL is indexed, how Google crawled it, and its canonical\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>search_console_sitemaps_list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A site's sitemaps, and when Google last read each\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ga4_properties_list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>The Google Analytics accounts the account can read, with their GA4 properties\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ga4_run_report\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A GA4 report over a date range, such as \u003Ccode>sessions\u003C\u002Fcode> and \u003Ccode>keyEvents\u003C\u002Fcode> by \u003Ccode>date\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ga4_run_realtime_report\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>What is happening on a property in the last 30 minutes\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ga4_custom_definitions_list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>A property's custom dimensions and metrics, under the names a report takes\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>It is read-only. The sign-in asks Google for only two permissions, and neither can change anything: Zero Human reads\nonly your Search Console data and your Google Analytics data. Google's own names for the two, which its screens may\nshow, are:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fwebmasters.readonly\u003C\u002Fcode>, to read Search Console;\u003C\u002Fli>\n\u003Cli>\u003Ccode>https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fanalytics.readonly\u003C\u002Fcode>, to read Google Analytics.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>No tool adds, changes or removes anything in Search Console or Google Analytics.\u003C\u002Fp>\n\u003Cp>A call returns 100 rows unless it asks for more, and at most 1000. To read further, it pages on with \u003Ccode>startRow\u003C\u002Fcode>\n(Search Console) or \u003Ccode>offset\u003C\u002Fcode> (a GA4 report). A call that asks for more than 1000 is refused and told how to page.\u003C\u002Fp>\n\u003Cp>Name each Google tool a task needs, such as \u003Ccode>google.search_console_search_analytics\u003C\u002Fcode> and \u003Ccode>google.ga4_run_report\u003C\u002Fcode>,\nor \u003Ccode>google\u003C\u002Fcode> for all eight. A tool the task does not name is refused, whatever the connection allows.\u003C\u002Fp>\n\u003Ch2 id=\"who-connects-it\">Who connects it\u003C\u002Fh2>\n\u003Cp>A Google connection acts as \u003Cstrong>the Google account that signed in\u003C\u002Fstrong> when it was connected. It reads the sites and\nproperties that account can reach in Search Console and Google Analytics, and no others. A member names the site or\nproperty on each call, after listing them; you can also fix one on the connection, so that every call reads it.\u003C\u002Fp>\n\u003Cp>Connecting it uses Zero Human's own Google app. There is no server to run, no key, and no Google Cloud project of\nyour own.\u003C\u002Fp>\n\u003Cp>A connection can sit on the enterprise, a team, a member, a role or a task, and the one further down replaces the\none above. A connection on anything but a task also reaches the \u003Ca href=\"\u002Fdocs\u002Fwork\u002Fchat\">chat\u003C\u002Fa> of every member it covers.\u003C\u002Fp>\n\u003Ch2 id=\"what-waits-for-you\">What waits for you\u003C\u002Fh2>\n\u003Cp>Nothing. Every Google tool only reads, and each is marked read-only, so a chat does not ask you before one runs.\nYou can still put a gate on any of them on a task, so that you approve each call before it is made. See\n\u003Ca href=\"\u002Fdocs\u002Fcontrol\u002Fgates\">Gates and tool scopes\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"setup\">Setup\u003C\u002Fh2>\n\u003Ch3 id=\"connect-it\">Connect it\u003C\u002Fh3>\n\u003Cp>Google is an Express tool: one you connect by signing in, with nothing to set up. Work in one browser window\nthroughout: Google returns to the portal in the window you started from.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Until Google approves Zero Human's app.\u003C\u002Fstrong> Google reviews apps that read Search Console or Google Analytics data.\nUntil it has approved Zero Human's, Google's sign-in may show a screen saying Google hasn't verified the app,\nor stop the sign-in for your account. That is Google's review, not a fault in your account or your settings. If you\nsee either, write to \u003Ca href=\"mailto:hello@zerohuman.com\">hello@zerohuman.com\u003C\u002Fa> before you go on.\u003C\u002Fp>\n\u003Col>\n\u003Cli>In the portal, open \u003Cstrong>Tools\u003C\u002Fstrong> in the sidebar, or a member's page → \u003Cstrong>Tools\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>Under \u003Cstrong>Express\u003C\u002Fstrong>, find \u003Cstrong>Google\u003C\u002Fstrong> and choose \u003Cstrong>Connect\u003C\u002Fstrong>. You are asked who uses it: one member, a team or the\nwhole enterprise.\u003C\u002Fli>\n\u003Cli>Google's sign-in opens: \u003Cstrong>Sign in with Google\u003C\u002Fstrong>, choosing the account that can see your Search Console sites and\nGA4 properties.\u003C\u002Fli>\n\u003Cli>Google lists the two read-only permissions. Allow both.\u003C\u002Fli>\n\u003Cli>You are back on \u003Cstrong>Tools\u003C\u002Fstrong>, and Google shows as connected.\u003C\u002Fli>\n\u003Cli>Name the tools on the task, \u003Ccode>google\u003C\u002Fcode> for all of them or each by name.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Check it.\u003C\u002Fstrong> Run a task that lists your Search Console sites and your GA4 properties\n(\u003Ccode>search_console_sites_list\u003C\u002Fcode> and \u003Ccode>ga4_properties_list\u003C\u002Fcode>). The run page shows the sites and properties Google\nreturned.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The connection keeps working in the background: the sign-in asks Google for access that renews itself.\u003C\u002Fp>\n\u003Cp>To disconnect Google, delete the connection on \u003Cstrong>Tools\u003C\u002Fstrong> in the portal, or remove Zero Human OS from your Google\nAccount's list of connected apps. Either takes the access back. \u003Cstrong>Reconnect\u003C\u002Fstrong> is different: it keeps the connection\nand has you sign in with Google again.\u003C\u002Fp>\n\u003Ch3 id=\"give-the-account-access\">Give the account access\u003C\u002Fh3>\n\u003Cp>The connection reads only what the Google account that signed in can read. To read another site or property, an\nowner of it adds that account: in Search Console under \u003Cstrong>Settings\u003C\u002Fstrong> → \u003Cstrong>Users and permissions\u003C\u002Fstrong>, and in Google\nAnalytics under \u003Cstrong>Admin\u003C\u002Fstrong> → \u003Cstrong>Property access management\u003C\u002Fstrong>. Viewer access is enough.\u003C\u002Fp>\n\u003Ch2 id=\"troubleshooting\">Troubleshooting\u003C\u002Fh2>\n\u003Cp>What a call returns shows on the run page. The quoted words are taken from each message, so you can search this page\nfor the words on your screen.\u003C\u002Fp>\n\u003Cdiv class=\"prose__table\">\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>What you see\u003C\u002Fth>\n\u003Cth>Why\u003C\u002Fth>\n\u003Cth>What to do\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>The result says this Google account has no access to this property or site, and names it: &quot;…refused: this Google account has no access to the GA4 property…&quot; or &quot;…to the Search Console site…&quot;\u003C\u002Ftd>\n\u003Ctd>The account that signed in is not a user of that site or property, or the name is wrong\u003C\u002Ftd>\n\u003Ctd>Ask an owner of it to add the account (see \u003Cstrong>Give the account access\u003C\u002Fstrong>), or list the account's own sites and properties (\u003Ccode>search_console_sites_list\u003C\u002Fcode>, \u003Ccode>ga4_properties_list\u003C\u002Fcode>) and pick one\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>A URL inspection says &quot;…or&quot; the URL &quot;is not part of that site&quot;\u003C\u002Ftd>\n\u003Ctd>The URL does not start exactly as the site does in the sites list: for a site added as a URL, \u003Ccode>http\u003C\u002Fcode> and \u003Ccode>https\u003C\u002Fcode>, or \u003Ccode>www\u003C\u002Fcode> and no \u003Ccode>www\u003C\u002Fcode>, are different sites. Or the account has no access to the site\u003C\u002Ftd>\n\u003Ctd>Inspect a URL that starts exactly as the site does in the sites list, or ask an owner of the site to add the account\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;This Google account has no Search Console sites&quot; or &quot;This Google account has no GA4 properties&quot;\u003C\u002Ftd>\n\u003Ctd>The account that signed in owns or shares none\u003C\u002Ftd>\n\u003Ctd>Add the account to a site or property, or choose \u003Cstrong>Reconnect\u003C\u002Fstrong> and sign in as an account that has them\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>The run stops and asks you to sign in again\u003C\u002Ftd>\n\u003Ctd>Google no longer accepts the sign-in: the access was removed, or the account's password or security settings changed\u003C\u002Ftd>\n\u003Ctd>Choose \u003Cstrong>Reconnect\u003C\u002Fstrong> and sign in again\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>The result says the Google sign-in &quot;did not grant read access to Search Console&quot; (or to Google Analytics)\u003C\u002Ftd>\n\u003Ctd>One of the two permissions was not allowed when the account signed in\u003C\u002Ftd>\n\u003Ctd>Choose \u003Cstrong>Reconnect\u003C\u002Fstrong>, sign in with Google again and allow both permissions\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>API not enabled: the result says an API &quot;is not enabled in the Google Cloud project this connection signs in through&quot;\u003C\u002Ftd>\n\u003Ctd>One of Google's APIs is switched off in Zero Human's Google project, which the connection signs in through. It is not about your account's access\u003C\u002Ftd>\n\u003Ctd>Write to \u003Ca href=\"mailto:hello@zerohuman.com\">hello@zerohuman.com\u003C\u002Fa>: it is fixed on our side, and the same call then works\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>The result says &quot;the quota for this account or project is used up for now&quot;\u003C\u002Ftd>\n\u003Ctd>Google limits how many calls an account or project makes in a period, and that limit was reached\u003C\u002Ftd>\n\u003Ctd>Try again later\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>The result says a call asked for &quot;more than the 1000 rows one call returns&quot;\u003C\u002Ftd>\n\u003Ctd>One call returns at most 1000 rows\u003C\u002Ftd>\n\u003Ctd>Ask for 1000 or fewer, and page on with \u003Ccode>startRow\u003C\u002Fcode> or \u003Ccode>offset\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>The run stops and says no Google connection reaches it (\u003Ccode>tool_not_bound:google\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd>Google is not connected anywhere this run reaches\u003C\u002Ftd>\n\u003Ctd>Connect it at a layer the run reaches: its task, its member or the member's roles, its team, or the enterprise\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Google says it hasn't verified the app, or stops the sign-in\u003C\u002Ftd>\n\u003Ctd>Google has not finished reviewing Zero Human's app yet\u003C\u002Ftd>\n\u003Ctd>Write to \u003Ca href=\"mailto:hello@zerohuman.com\">hello@zerohuman.com\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Google says your organisation has blocked the app\u003C\u002Ftd>\n\u003Ctd>Your Google Workspace admin limits which apps may reach its accounts\u003C\u002Ftd>\n\u003Ctd>Ask the admin to allow Zero Human OS, then choose \u003Cstrong>Connect\u003C\u002Fstrong> again\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n",[13,17,20,23,26,30,33],{"id":14,"text":15,"level":16,"planned":9},"what-a-member-can-do","What a member can do",2,{"id":18,"text":19,"level":16,"planned":9},"who-connects-it","Who connects it",{"id":21,"text":22,"level":16,"planned":9},"what-waits-for-you","What waits for you",{"id":24,"text":25,"level":16,"planned":9},"setup","Setup",{"id":27,"text":28,"level":29,"planned":9},"connect-it","Connect it",3,{"id":31,"text":32,"level":29,"planned":9},"give-the-account-access","Give the account access",{"id":34,"text":35,"level":16,"planned":9},"troubleshooting","Troubleshooting",1792919145343]