Ad Tracker events

Get the Competitor Ad Tracker's new ads, stopped ads, briefs and weekly digest as signed webhooks: payloads, typing and Slack.

The Competitor Ad Tracker can send its alerts to the same webhook endpoints monitors use. Pick the endpoints in the app under Tools → Ad Tracker → Settings → Webhooks. Each endpoint you pick gets all four event types.

Delivery works exactly like monitor events: the same signature, the same retries and idempotency, and the same delivery log on the endpoint's page. Dedupe on socialfetch-event-id.

When they're sent

TypeSent when
ad_tracker.ads.launchedA daily check of one competitor on one library finds new ads. One event per competitor per library per check.
ad_tracker.ads.stoppedThe same check finds ads that stopped running.
ad_tracker.brief.readyA competitor's monthly brief is written.
ad_tracker.digest.weeklyMonday morning, when the workspace's week had any launches, stops or new countries.

Webhooks don't follow the email settings. There's no daily cap and no "only once N new ads" minimum: every check that finds something sends an event. A competitor's first check (which collects its existing ads) sends no ads.launched, because those ads aren't new launches.

The envelope

An Ad Tracker event is a monitor event's envelope without monitor, source and billing. Tracker events cost nothing beyond the checks themselves.

json

Every data has summary, one plain sentence, and url, the matching page in the app. Missing values are null, never left out, and times are ISO strings.

  • ads.launched / ads.stopped: count is every ad found; ads lists up to 10, newest first, and truncated says whether there were more. mediaUrl is the library's own link and can expire, so open the ad's url for the archived copy.
  • brief.ready: brief has periodStart, periodEnd, adsConsidered and pointCount. The brief is an AI summary, so it stays in the app; open url to read it.
  • digest.weekly: periodStart, periodEnd, totals (newAdCount, stoppedAdCount), competitors (busiest first, each with its counts, countriesStarted and longestRunning), and more for the competitors left out of the list.

A test event from Send test event is a real ad_tracker.ads.launched with sample data and "sample": true on the envelope.

Typed in the SDK

typescript

WebhookEvent covers monitor and Ad Tracker events. Use AdTrackerEvent if the endpoint only gets tracker events. AD_TRACKER_EVENT_TYPES lists the four types.

Slack, Teams and spreadsheets

Endpoints receive signed JSON, which Slack's and Teams' incoming webhooks don't accept as it is. Use Zapier or Make in between:

  1. Create a Catch Hook (Zapier's Webhooks trigger) or a Custom webhook (Make) and copy its URL.
  2. Add it as a webhook endpoint in SocialFetch and turn it on under the Ad Tracker's webhook settings.
  3. Click Send test event so Zapier or Make can see the fields.
  4. Post data.summary and data.url to a Slack or Teams channel, or add a row per ad from data.ads to a sheet.

Build on it with the API

Each ad library the tracker reads is also an API endpoint, billed in the same credits: Meta company ads, LinkedIn ad library search, Google company ads and TikTok ad library search. Call them yourself, or create a monitor on any watchable endpoint.

On this page