> **For coding agents and LLMs:** This is one page from the Social Fetch docs (markdown export). For curated orientation and workflow guidance, start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for agent onboarding and crawl rules, use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for the full endpoint list with links to pages like this one, use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt); for one platform's parameters and curls, use [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt); use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need structured JSON for tool registration.

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/docs/tools/ad-tracker/troubleshooting>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/docs/tools/ad-tracker/troubleshooting.mdx>

## API base URL and authentication

- **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev`
- **Authentication:** send `x-api-key: sfk_...` on `/v1/**` and `/v2/**` routes unless the operation is explicitly anonymous (check OpenAPI `security`, the [API reference hub](https://www.socialfetch.dev/docs/api.mdx), [`/llms.txt`](https://www.socialfetch.dev/llms.txt), or [`/llms.json`](https://www.socialfetch.dev/llms.json) for each route).
- **OpenAPI JSON:** <https://www.socialfetch.dev/openapi.json>

## Recommended docs entrypoints (this site)

- [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown).
- [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope.
- [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`.
- [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — every operation with identifiers, pagination, outcomes, media download, credits, and its SDK method. Generated from OpenAPI, so use it for route selection instead of scanning individual pages.
- [Recipes](https://www.socialfetch.dev/docs/recipes.mdx) — copyable workflows (brand monitoring, transcripts, Ad Library, creator scoring, Reddit research) with credit callouts and SDK examples.
- [Integrations](https://www.socialfetch.dev/docs/integrations.mdx) — MCP for AI clients, n8n verified node, Apify Store Actors, Make custom app, SDK, and REST API connection paths.
- [MCP product page](https://www.socialfetch.dev/mcp) — hosted MCP overview, OAuth, Skills install.
- [MCP integration](https://www.socialfetch.dev/docs/integrations/mcp.mdx) — hosted `/mcp` server, OAuth, Cursor/VS Code/Claude install snippets, 264 endpoint tools, plus docs_search/docs_read for implementation help.
- [n8n integration](https://www.socialfetch.dev/docs/integrations/n8n.mdx) — install `n8n-nodes-socialfetch`, credentials, and workflow examples.
- [Apify integration](https://www.socialfetch.dev/docs/integrations/apify.mdx) — Store Actors under @social-fetch, PPE billing, dataset export, and quick start.
- [Make integration](https://www.socialfetch.dev/docs/integrations/make.mdx) — custom app modules for Make scenarios, API key credentials, and module catalog.
- [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt) — every documented operation with a direct link to that route's agent-readable markdown page (prefer this over parsing OpenAPI).
- [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt) — per-platform endpoint files generated from OpenAPI (parameters, credits, curls).
- [`/agents.txt`](https://www.socialfetch.dev/agents.txt) — agent crawl/onboarding file with capabilities, auth rules, and allowlist.
- [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping.
- [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages.
- [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance.
- [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs.
- Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract.

## Markdown docs convention

- Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`).
- Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`).
- Published blog posts use the same convention: `/blog/{slug}` → `/blog/{slug}.mdx`, or `Accept: text/markdown` on the HTML URL (`Vary: Accept`).

---
# Ad Tracker troubleshooting (https://www.socialfetch.dev/docs/tools/ad-tracker/troubleshooting)

Find the message you see, or the problem you have, below.

## Finding a brand

### Couldn't search Meta just now

That library didn't answer this time (the message names the library). Click **Search again** in a minute. You can carry on without that library and add it later from the competitor's page, with **Add a library**.

### Not enough credits to search Meta

Your workspace doesn't have the credits for the search. Finding a brand costs about 10 credits. [Add credits](https://app.socialfetch.dev/billing), then click **Search again**.

### No advertiser found

Nothing on that library matches the name. The brand may not advertise there, or it may advertise under another name. Click **Search** on that row and try the brand's website (such as `duolingo.com`), its company name or a handle. If it still finds nothing, leave the library out.

### No advertiser called "…"

The library has advertisers whose ads mention the name, but none with that name. Click **Choose** to see them. Pick one only if it's really the brand, for example its local company; otherwise leave the library out.

### Not tracking TikTok

The tracker found accounts but wasn't sure enough that any of them is the brand, so it didn't pick one. Click **Choose** and tick the brand's accounts, or leave it out. Accounts with **No ads in the library** won't add anything.

### The wrong brand was matched

Before you start, click **Change** on that library's row and pick the right account, or search for it by its website.

After you've started, open the competitor's page and, under **Ad libraries**, click **Change** on that library's row. Search for the brand, pick the right account and click **Use this account**. The wrong account's saved ads are deleted, and the right one's first check starts within a few minutes, costing credits like any first check. See [Add a library or change an account](/docs/tools/ad-tracker/read-your-results#add-a-library-or-change-an-account).

### Still looking. LinkedIn's company search can take up to half a minute.

LinkedIn's search is slow. Wait for it; the other libraries' results are already in.

### We couldn't work out the cost just now

The cost table didn't load. Click **Retry**. You can still start tracking; the costs are the same as in [Costs and limits](/docs/tools/ad-tracker/costs-and-limits).

### Your role in this workspace can't spend credits

Finding a brand, adding a competitor, adding a library or changing an account, resuming a competitor and switching a library back on all spend the workspace's credits, and your role doesn't allow that. Ask a workspace owner or admin to change your role, or to do it for you.

### Tools isn't part of your role

Billing-only users can't open the Ad Tracker. Ask a workspace owner or admin to change your role. See [Teams and workspaces](/docs/teams).

### The first check will stop short

The set-up panel says this when your balance is lower than the first check's estimate. You can still start: the first check keeps the ads it can pay for, and carries on within a few minutes of you adding credits. See [When credits run out](/docs/tools/ad-tracker/costs-and-limits#when-credits-run-out).

## Collecting ads

### Waiting for the first check to start

The tracker starts new checks every few minutes, so the first one can take a few minutes to begin. If it says **This is taking longer than usual** after that, leave it: it carries on in the background, and the page updates when results arrive. If nothing has happened after an hour, [contact support](https://app.socialfetch.dev/support).

### Saving Duolingo's ads takes a long time

After the libraries, the tracker saves a copy of every image and video and tags each ad. For a brand with hundreds of ads this takes a while. You can use the tracker while it runs.

### Out of credits. We couldn't finish collecting … ads

The competitor shows **Needs credits**: the workspace ran out of credits during a library's first check. The ads it read before then are saved. [Add credits](https://app.socialfetch.dev/billing), and the check runs again within a few minutes. See [When credits run out](/docs/tools/ad-tracker/costs-and-limits#when-credits-run-out).

### Out of credits. We couldn't check … for new … ads

The same, for a competitor whose first check has finished: the workspace ran out of credits during a later check. [Add credits](https://app.socialfetch.dev/billing), and the check runs again within a few minutes. The library's row under **Ad libraries** says when it ran out.

### A library shows Retrying

That library's first check failed: the library didn't answer, or can't find the account any more. It's tried again on its next scheduled check. If it keeps failing, check the match under **Ad libraries** and [change the account](#the-wrong-brand-was-matched) if it's wrong.

### Needs attention

Hover over the status, or open the competitor, to see why:

* **A library's last check failed. We'll keep retrying.** The library didn't answer, or can't find the account any more. The next check usually clears it. If it keeps failing, check the account under **Ad libraries** and change it if it's wrong.
* **Every library is switched off, so nothing is being checked.** Switch a library on under **Ad libraries**, or remove the competitor.

### Off after repeated failed checks

A library switches itself off after seven failed checks in a row, so it stops spending credits on a check that doesn't work. Often the library can no longer find the brand's account. Running out of credits never counts as a failed check. Change the account if it's wrong, or switch the library back on under **Ad libraries**.

### A competitor has fewer ads than I expected

* The libraries only show recent ads, so the first check can't collect a brand's whole history.
* The brand may advertise under several accounts, especially on TikTok, or under a local company name on Google. Add another TikTok account with **Add a library** on the competitor's page, or **Change** the Google account; the new account's first check costs credits.
* Check the matches on the competitor's page under **Ad libraries**. If one is the wrong account, see [The wrong brand was matched](#the-wrong-brand-was-matched).

### New this week shows old ads, or misses ones I've seen

**New this week** counts ads by the start date the library gives. An older ad the tracker has only just found is saved, but doesn't count as new.

## Ads and their files

### This ad is text only

The ad has no image or video, such as a Google search ad or a LinkedIn text ad. Its copy is on the page.

### The Meta ad library doesn't share a preview of this ad

Some libraries don't publish the creative for every ad (Google often doesn't for video and shopping ads). Click **See it in the library** to view it there.

### We haven't saved a copy of this file yet

The tracker hasn't been able to save the file, and the library's link to it has expired. It tries again on the next check, when the library gives a fresh link.

### No proven ads yet

No ad has run for 30 days yet. A competitor's ads earn the **Proven** mark as they keep running, so check back later.

### No ads match these filters

Click **Clear filters**, or switch off a filter at a time to see which one hides everything.

## Monthly briefs

### A brief needs at least 5 ads from the last 30 days

The competitor hasn't run enough ads recently to write about. A brief is written on the 1st of the month once it has.

### This competitor already has a brief

**Generate brief** only works before a competitor's first brief. After that, a new one is written on the 1st of each month.

### A brief was already requested today

It usually appears within a minute. Reload the page.

### We couldn't write a brief this time

Writing the brief failed. Ask again tomorrow, or wait for the next one on the 1st.

## Exports

### No ads match these filters, so the file is empty

Change or clear the filters on the feed, then click **Export CSV** again.

### Exported the first 5,000 ads

A file holds up to 5,000 ads. Narrow the filters, for example to one library or to **Running**, and export each part.

## Emails and webhooks

### I'm not getting new-ad emails

* Check the tracker's settings (the gear button): **New ads** must be on, and **Send when a competitor launches** may be holding emails until there are more ads.
* Only launches count: ads that started within a week of being found. A first check full of older ads sends one "collected" email, not a launch email.
* There's at most one email per competitor a day.
* In a shared workspace, emails go to the person who added the competitor.
* Look in your spam folder for mail from Social Fetch.

### The endpoint refused the test event

Your endpoint answered with an error, shown after the message. Check its URL, and that it accepts data sent to it (a POST request with JSON). Zapier and Make catch hooks do.

### We couldn't reach the endpoint

The endpoint's address didn't answer. Check the URL, and that it's on the public internet, not an address that only works on your own computer.

### Not receiving tracker events

The endpoint is switched off for the Ad Tracker. Switch it on in the tracker's settings under **Webhooks**.

## Team and access

### I can't see a colleague's competitors or boards

Members see the competitors and boards they added. Owners and admins see everything in the workspace. Ask an owner or admin to change your role if you need to see everything.

### Your role can't change the workspace's Ad Tracker emails

Only owners and admins can change the tracker's email and webhook settings. Other roles can see them.

### This board isn't shared, or the link was turned off

The board's owner switched off **Share by link**, which breaks the link for good. Ask them for a new link.

### This competitor isn't tracked any more

The competitor was removed. Its ads left the tracker and its boards when it was removed, and they're deleted for good after 30 days. Removing can't be undone; add the brand again to start a new collection.

### I want to rename a competitor

Open the competitor's page and click the pencil beside its name. Type the new name and click **Save**. Emails and webhooks use the new name from then on.

### This is the only account tracked. Remove the competitor instead.

A competitor keeps at least one account, so its last one can't be removed. To stop tracking it, pause or remove the competitor, or change the account for the right one.

### A competitor can track up to 12 accounts

Each competitor has at most 12 accounts across its libraries. Stop tracking an account you don't need (click **Change** on its row, then **Stop tracking it**) before adding another.

- [Costs and limits](/docs/tools/ad-tracker/costs-and-limits) — What uses credits, and what happens when they run out.

- [Contact support](https://app.socialfetch.dev/support) — For anything this page doesn't cover.