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

# Connect and manage ad accounts

> Connect your Meta and Google ad accounts to the Ad Agent, accept Meta's custom audience terms, and manage connected accounts.

The Ad Agent needs two things to work: your ad accounts connected so it can read spend, and the tracking pixel installed so it can compare that spend against real site behaviour. This page covers the ad account side, including Meta's custom audience terms.

Everything here lives under **Agents → Advertising** in [app.dash.fi](https://app.dash.fi). The **Configure** tab is always available, even before setup is finished.

## The setup flow

Setup runs in four steps. You can leave and come back — progress is saved, and **Configure** is where you finish anything outstanding.

<Steps>
  <Step title="Add your landing pages">
    Add every URL your ads point to — your homepage, product pages, and any dedicated landing pages. The agent only audits traffic to pages it knows about.
  </Step>

  <Step title="Connect ad accounts">
    One-click OAuth with read-only access. The agent starts scanning historical spend as soon as you connect.
  </Step>

  <Step title="Install tracking pixel">
    Add the pixel to each landing page via Google Tag Manager, Shopify, or raw HTML. See [Install pixel](/integrations/ad-pay-protection/install-pixel).
  </Step>

  <Step title="Verify pixel install">
    Dash.fi pings each landing page to confirm the pixel is firing. Events usually register within two to three minutes, but can take up to 24 hours on cached or low-traffic sites.
  </Step>
</Steps>

## Connect an ad account

1. Go to **Agents → Advertising → Configure**
2. Open **Websites & Accounts**
3. Find the landing page you want to cover and click **Connect**
4. Sign in to Meta or Google and approve read-only access
5. Pick the ad account to connect when you're returned to Dash.fi

Accounts are connected per landing page, so one list shows you which sites are covered and by which ad accounts.

<Note>
  Connect with a user who has access to the ad account in question. Read-only access to Dash.fi is enough for reporting, but Meta permission checks fail for a user who isn't on the ad account — see [Still showing TOS pending](#still-showing-tos-pending).
</Note>

## Accept Meta's custom audience terms

Meta ad accounts need one extra step. To exclude invalid traffic from your campaigns, Dash.fi builds a Meta custom audience — and Meta requires you to accept its **Custom Audience Terms of Service** before any account can use one.

Until you do, the account shows **TOS pending** in Configure, or a prompt reading "Accept the custom audience terms to start excluding traffic" during setup. The agent still audits your spend, but [exclusions](#traffic-exclusions) can't be applied.

<Steps>
  <Step title="Open the terms link in Dash.fi">
    Click the **TOS pending** link next to the account. It opens Meta's terms page for that specific ad account.
  </Step>

  <Step title="Accept the terms on Meta">
    Review and accept. This happens on Meta, not in Dash.fi.
  </Step>

  <Step title="Come back and click Re-check">
    Return to Dash.fi and click **Re-check** next to the account. Dash.fi asks Meta whether the terms are now accepted and updates the status.
  </Step>
</Steps>

<Warning>
  **The status doesn't update on its own.** Dash.fi stores the result of the last check rather than asking Meta continuously, so an account you've just accepted terms for keeps showing **TOS pending** until you click **Re-check**. Reloading the page won't clear it.
</Warning>

Custom audience terms apply to Meta only. Google ad accounts have no equivalent step.

### Still showing TOS pending

If the status hasn't changed after accepting, work through these in order.

| Check                                                   | What's happening                                                                                                                                                                         | Fix                                                                                                                                                        |
| ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Did you click **Re-check**?                             | Dash.fi is still showing the result of the last check                                                                                                                                    | Click **Re-check** next to the account. This resolves most cases.                                                                                          |
| Does the ad account ID match?                           | Terms are accepted per ad account, so accepting for one account doesn't cover the others                                                                                                 | Compare the ID shown under the account name in Dash.fi with the `act=` value in the Meta URL. Accept the terms for each connected Meta account separately. |
| Does the connected user have access to that ad account? | Meta refuses the permission check for a user who isn't on the account, and Dash.fi reads that refusal as "not accepted" — so the status never flips, no matter how many times you accept | Reconnect the account with a Meta user who has access to it, then click **Re-check**.                                                                      |

If it still shows pending after all three, ask support to check it against Meta directly — they can see how Meta is answering for your account.

## Traffic exclusions

Once terms are accepted, the agent can proactively block invalid traffic sources — bots, click farms, and competitor clicks — before they spend your budget, rather than only reporting them after the fact.

Go to **Agents → Advertising → Exclusions** to see every campaign with an exclusion applied, along with the savings each one is accruing. Each campaign has a toggle: turning it off disables that campaign's exclusion and stops it accruing savings.

Exclusions work on both Meta and Google campaigns. Only the Meta side depends on the custom audience terms.

## Manage connected accounts

**Agents → Advertising → Configure → Websites & Accounts** lists every landing page with the ad accounts auditing it. From here you can connect another account, accept outstanding terms, re-check a status, or remove an account with the trash icon.

Removing an account stops the agent auditing that account's spend. Your existing findings and claims aren't deleted.

## Where to find everything

| Tab            | What it's for                                                   |
| -------------- | --------------------------------------------------------------- |
| **Overview**   | Invalid traffic findings, savings, and the audit log            |
| **Exclusions** | Per-campaign exclusion toggles and the savings they're accruing |
| **Credits**    | Claims filed with Meta and Google, and their status             |
| **Configure**  | Landing pages, connected ad accounts, and pixel installation    |

Overview, Exclusions, and Credits stay empty until setup is finished and traffic is flowing. Configure is always available.

## FAQ

<AccordionGroup>
  <Accordion title="I accepted the custom audience terms but Dash.fi still says I haven't">
    Click **Re-check** next to the account in **Configure → Websites & Accounts**. Dash.fi stores the result of its last check rather than polling Meta, so the status stays as it was until you re-check. If it still shows pending afterwards, see [Still showing TOS pending](#still-showing-tos-pending) — the usual causes are accepting on a different ad account, or the connected Meta user not having access to the one you're accepting for.
  </Accordion>

  <Accordion title="Do I need to accept the terms for every ad account?">
    Yes. Meta ties custom audience terms to each ad account individually, so accepting for one doesn't carry over. Each connected Meta account shows its own **TOS pending** status until you accept for that account and re-check.
  </Accordion>

  <Accordion title="Does the agent still work without the custom audience terms?">
    Partly. Auditing, invalid traffic detection, and credit recovery all run without them. Only exclusions need the terms — without them the agent can report invalid traffic but can't block it before it spends your budget.
  </Accordion>

  <Accordion title="What access does Dash.fi get to my ad accounts?">
    Read-only. The agent reads spend and campaign data to audit it. The one thing it writes is the custom audience used for exclusions, which is why Meta asks you to accept its terms first.
  </Accordion>

  <Accordion title="Why is my Overview empty after connecting an account?">
    Overview, Exclusions, and Credits need setup finished and traffic flowing. Confirm the pixel is installed and verified on each landing page, then give it time — pixel events usually register within two to three minutes but can take up to 24 hours on cached or low-traffic sites.
  </Accordion>
</AccordionGroup>
