> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connecting Google Search Console to your app

> Connect Base44 to Google Search Console to access search performance data, sitemaps, URL inspection, and indexing status for your sites.

Connect your Base44 app to Google Search Console to access search performance data, sitemaps, URL inspection, and indexing status for your sites. Use Search Console to build dashboards on top of clicks, impressions, and CTR, to check whether pages are indexed, and to list and submit sitemaps, either from one Search Console account for the whole app or from each person's own account.

<Tip>
  **Which type should you use?** Use a **connector for app builders** when your app reads Search Console data from one Google account for everyone, for example a dashboard that tracks your own site. Use a **connector for app users** when each person connects their own Google account and sees their own verified sites.
</Tip>

<Note>
  You need a [**Builder plan**](https://base44.com/pricing) or higher to use connectors in your app.
</Note>

***

## What you can do

<CardGroup cols={3}>
  <Card title="Track search performance" icon="chart-line">
    Pull clicks, impressions, CTR, and average position into dashboards and reports inside your app.
  </Card>

  <Card title="Check indexing status" icon="magnifying-glass">
    Inspect URLs to see whether pages are indexed, and surface coverage issues as they appear.
  </Card>

  <Card title="Manage sitemaps" icon="sitemap">
    List and submit sitemaps for your verified sites so Google can discover your pages faster.
  </Card>
</CardGroup>

**Example prompts for the AI chat**

```text theme={null}
Sync search performance data from Google Search Console into my app.
```

```text theme={null}
Show top queries and pages from Search Console in a dashboard.
```

```text theme={null}
Check indexing status for URLs and surface issues.
```

```text theme={null}
List and manage sitemaps for my verified sites.
```

```text theme={null}
Export search analytics (clicks, impressions, CTR) to my app.
```

***

## At a glance

<Card>
  <div className="b44-spec">
    <div className="b44-spec-row"><div className="b44-spec-key">Type identifier</div><div className="b44-spec-val"><code>google\_search\_console</code></div></div>
    <div className="b44-spec-row"><div className="b44-spec-key">Auth model</div><div className="b44-spec-val">OAuth</div></div>
    <div className="b44-spec-row"><div className="b44-spec-key">Connector types</div><div className="b44-spec-val">For app builders, For app users</div></div>
    <div className="b44-spec-row"><div className="b44-spec-key">Connection config</div><div className="b44-spec-val">None</div></div>
    <div className="b44-spec-row"><div className="b44-spec-key">Permissions guide</div><div className="b44-spec-val"><a href="#google-search-console-scopes-and-permissions">Google Search Console scopes and permissions</a></div></div>
  </div>
</Card>

***

## Connect it

<Check>
  **Before you begin:** your site must already be verified as a property in Google Search Console. Search Console only returns data for verified properties, so connecting an account that does not own the property returns nothing. If you have not verified your site yet, see [Getting your app found in search](/Performance-and-SEO/SEO-and-search-visibility).
</Check>

<Tabs>
  <Tab title="For app builders">
    Connect one Google account that all flows in your app use. Start from the AI chat, or from **Integrations → Browse** in your app's dashboard.

    **To connect Google Search Console:**

    1. Go to your app editor.
    2. Describe what you want to do with Search Console in the AI chat, for example: `Sync search performance data from Google Search Console into my app.`
    3. Review what the AI chat asks for under **We need your permission to access**.
    4. Click **Connect to Google Search Console**.
    5. In the Google window, select the account that has access to your Search Console property, review the permissions, and click **Allow**.
    6. Return to the editor and let the AI finish creating the flows that use Search Console.

    <Frame caption="Connecting Google Search Console from the AI chat">
      <img src="https://mintcdn.com/base44/czW6VK2TZHpa4Mv8/images/connectinggscfromai.jpg?fit=max&auto=format&n=czW6VK2TZHpa4Mv8&q=85&s=e5df98a4e7b8cecafaaa186ade6d4a30" alt="Connecting Google Search Console from the AI chat" width="2320" height="1908" data-path="images/connectinggscfromai.jpg" />
    </Frame>

    <Tip>
      After connecting, test the connector by asking the AI chat about your search data, for example your top queries from the last 7 days, and confirm the answer matches what you see in Search Console.
    </Tip>
  </Tab>

  <Tab title="For app users">
    Let each person using your app connect their own Google account. An admin sets up the connector once at the workspace level, then each person connects their own account inside your app.

    <Warning>
      Treat your Client Secret like a password. Do not share it or include it in screenshots. Only enter it when Base44 asks for it during setup.
    </Warning>

    ### Prepare your connector

    Set up a Google OAuth app and gather its details before you add the connector in Base44.

    **To prepare your connector:**

    1. Create a Google OAuth app in [Google Cloud](https://cloud.google.com/) to get a **Client ID** and a **Client Secret**.
    2. Enable the Google Search Console API for that Google Cloud project.
    3. Note the scopes your app needs. See [Google Search Console scopes and permissions](#google-search-console-scopes-and-permissions).
    4. Register your callback URL with the OAuth app. See the card below.

    <Card title="Register your callback URL" icon="link">
      Register this callback URL with your Google OAuth app. It works for every app in your workspace, including your live, preview, share, and custom domain URLs:

      `https://connectors.base44.com/api/oauth/callback`

      If you set this connector up before Base44 moved to a single callback URL, it still uses a separate URI for each app host. Open **Workspace Settings → Connectors**, click **View redirect URIs for your apps** under **Connectors For App Users**, select your app, and register every URI listed under **Per-app URLs (for legacy connectors)**. Base44 uses the URI for whichever host a person is on when they authorize, so skipping one breaks the connection for anyone on that host.
    </Card>

    ### Add the connector

    **To add the connector:**

    1. Click your workspace name at the bottom left.
    2. Click **Settings**.
    3. Click **Connectors** under **Plugins**.
    4. Under **Connectors For App Users**, click **Add Connector**.
    5. Click **Google Search Console**.
    6. In the connector details, click **Add Connector**.
    7. Enter a **Connector name**, then the **Client ID** and **Client Secret** from your Google OAuth app.
    8. Under **Scopes**, open the suggested scopes drop-down and select the scopes your app needs. Use **Additional scopes** only for scopes that are not listed.
    9. Click **Add Connector**.

    ### Let people connect

    Each person connects their own Google account inside your app. Prompt the AI chat to add a feature where people connect Search Console, then each person connects their own account when they use it. Each person sees only the properties their own Google account is verified for.
  </Tab>
</Tabs>

***

## Use it in a backend function

Once Google Search Console is connected, your backend functions can retrieve an access token and call the Search Console API directly. Base44 handles the OAuth flow and token storage.

* For a shared connection, use `getConnection()` to retrieve the token.
* For an app user connection, use `getCurrentAppUserConnection()` so each request uses the signed-in person's token.

```javascript theme={null}
// Shared connection: one account the whole app uses
const connection = await base44.asServiceRole.connectors.getConnection("google_search_console");
// Use the connection's access token to call the Search Console API.
```

<CardGroup cols={2}>
  <Card title="Shared connectors" icon="code" href="/developers/backend/resources/connectors/shared-connectors">
    Configure, deploy, and call a shared connection from a backend function.
  </Card>

  <Card title="App user connectors" icon="user" href="/developers/backend/resources/connectors/app-user-connectors">
    Retrieve a per-user token and call the API as the signed-in person.
  </Card>
</CardGroup>

***

## Google Search Console scopes and permissions

When you connect Google Search Console, the connector requests permissions (scopes) that control what your app can do with your Search Console data. Below is the current list of Google Search Console scopes the connector may request.

<Card title="Google Search Console scopes" icon="shield">
  * `email`: Identify the Google account being connected.
  * `https://www.googleapis.com/auth/webmasters`: View and manage Search Console data, including sitemaps.
  * `https://www.googleapis.com/auth/webmasters.readonly`: View Search Console data without making changes.
</Card>

<Note>
  `email` is added for you and appears under **Always included**, so you do not need to enter it. Select the `webmasters` scopes your app needs from the suggested scopes drop-down.
</Note>

<Note>
  Scope lists may change over time. Always review the permissions shown during the connection flow. If you need a scope that is not listed here, [share your feedback with us](https://feedback.base44.com/?b=67cf45295430bd6b6434b68c).
</Note>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="My Search Console data is not showing up">
    Check that:

    * The connector is listed under **My integrations** and shows as connected.
    * The Google account you used has access to the Search Console property for your app's domain.
    * Your app's domain is verified in Search Console.

    If the issue continues, try disconnecting and reconnecting the connector.
  </Accordion>

  <Accordion title="The connection fails with a redirect URI error">
    Check that `https://connectors.base44.com/api/oauth/callback` is registered in your Google OAuth app, exactly as shown. If the connector still uses per-app URLs, the URI in your OAuth app must instead match one shown under **Per-app URLs (for legacy connectors)** in **View redirect URIs for your apps**, so register every URI listed there for the app you are connecting.
  </Accordion>

  <Accordion title="Some people cannot connect their account">
    If your Google OAuth app is in testing mode, only approved test users can connect. Publish or move your OAuth app out of testing mode so anyone using your app can connect their own account.
  </Accordion>

  <Accordion title="The connector returns an empty result for a site">
    Search Console only returns data for properties the connected account is verified for, and new properties can take a few days to collect data. Confirm the property is verified, then check the same date range directly in Search Console.
  </Accordion>
</AccordionGroup>

***

## FAQs

<AccordionGroup>
  <Accordion title="Which Google account should I use to connect?">
    Use the Google account that has owner or full access to the Search Console property for your app's domain. If you are not sure which account has access, check the users list in Search Console under **Settings > Users and permissions**.
  </Accordion>

  <Accordion title="Can I connect more than one Search Console property?">
    Each app connects to one Google account at a time. If you manage multiple properties under the same Google account, the AI chat can query data across them when you specify which property you want.
  </Accordion>

  <Accordion title="Where is my app's sitemap?">
    Base44 generates your sitemap at `/sitemap.xml`. When you describe sitemap tasks in the AI chat, you can reference this path directly.
  </Accordion>

  <Accordion title="Can each person using my app connect their own Search Console property?">
    Yes. Use a **connector for app users** so each person connects their own Google account. See the [connectors overview](/Integrations/Connectors).
  </Accordion>

  <Accordion title="How do I change which Google account is connected?">
    1. Go to your app's dashboard.
    2. Click **Integrations**.
    3. Click the **My integrations** tab.
    4. Find **Google Search Console** and click the **More Actions** icon <Icon icon="ellipsis" />, then **Switch account**.
  </Accordion>

  <Accordion title="How do I manage the Google Search Console connector in my app?">
    Click the **More actions** icon on the connector in your app's **Integrations** tab, then choose an option such as switch account, reconnect, or disconnect. [Learn more about managing connectors](/Integrations/Connectors#managing-your-connectors).
  </Accordion>
</AccordionGroup>
