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

# Custom Data Manager App

> Connect Google Data Manager through your own Google Cloud app (white-label) by pasting your client ID, client secret, and a refresh token.

Markifact supports two ways to connect Google Data Manager: using the built-in **Markifact app** (Quick Connect) or connecting through your own **Google Cloud app** (Custom App). With a custom app, every request Markifact makes runs under your app as the uploader in Google Ads, so your clients never see Markifact.

<Note>
  Custom app connections are available on the **Team** plan. See [White-label Connections](/core-concepts/white-label-connections) for the overview.
</Note>

***

## What You Need

| Item                             | Value                                                                              |
| :------------------------------- | :--------------------------------------------------------------------------------- |
| **Scope**                        | `https://www.googleapis.com/auth/datamanager`                                      |
| **APIs to enable**               | Data Manager API                                                                   |
| **Google account for the token** | a Google account with access to the Google Ads accounts or audiences you upload to |

Data Manager only ingests data, so verification checks the token and its scope. Make sure the Data Manager API is enabled on your project as well, otherwise the first upload fails with an API-disabled error.

<Card title="Create the app and mint the refresh token" icon="google" href="/core-concepts/custom-google-app">
  The Google Cloud setup (project, consent screen, OAuth client, OAuth Playground) is the same for every Google channel and lives on one page.
</Card>

***

## Connect to Markifact

<Steps>
  <Step title="Open the Custom App tab">
    Go to the [Connections](https://app.markifact.com/connections) page, click **Connect** on **Google Data Manager**, and select the **Custom App (White-label)** tab.
  </Step>

  <Step title="Name the connection">
    Enter a **Connection Name** (for example "Acme Agency Data Manager"). This is how the connection appears in nodes, agents, and MCP.
  </Step>

  <Step title="Paste your credentials">
    Paste the **Client ID**, **Client Secret**, and **Refresh Token** from your Google Cloud app.
  </Step>

  <Step title="Verify & Connect">
    Markifact refreshes an access token with your client and makes one read-only call to the Data Manager API. Nothing is saved unless both succeed.
  </Step>
</Steps>

Custom app connections show a **Custom app** badge on the Connections page and work everywhere a Quick Connect connection works.

***

## Rotating or Replacing the Token

Add the connection again with the **same connection name** and the new refresh token. Markifact replaces the stored credentials in place, so workflows and agents bound to the connection keep working.

***

## Troubleshooting

<Accordion title="An upload fails with 'API has not been used in project'">
  Enable the Data Manager API under APIs & Services > Library in the project that owns your client ID and retry the upload.
</Accordion>

<Accordion title="Client, token or scope errors">
  See the shared [Custom Google Cloud App](/core-concepts/custom-google-app#troubleshooting) troubleshooting for `invalid_client`, `invalid_grant`, missing scopes and APIs that are not enabled.
</Accordion>

***

## Related

<CardGroup cols={2}>
  <Card title="Custom Google Cloud App" icon="google" href="/core-concepts/custom-google-app">
    Create the app and mint a refresh token
  </Card>

  <Card title="Upload Offline Conversions" icon="upload" href="/nodes/data_manager/data_manager_upload_offline_conversions">
    Send conversions to Google Ads
  </Card>
</CardGroup>
