Meta-ExternalAgent (often logged as meta-externalagent) crawls the public web for Meta's generative models. That is a trainer. Paid Meta measurement still runs through the Conversions API, pixel, and Signals Gateway, all of which count humans.
Meta also uses a fetcher-style agent (Meta-ExternalFetcher / meta-externalfetcher) when a product retrieves a URL for a user. Split those in logs. isvisible.ai already treats meta-externalagent as a training crawler in the why we built isvisible.ai post.
How it shows up
Match Meta-ExternalAgent or meta-externalagent. Case varies by log pipeline. It will not appear as a Meta Ads "AI traffic" dimension in Ads Manager. GA4 will not see the crawl.
If your team already runs Hardal → Meta CAPI, do not add this bot as a CAPI event. You would be sending bot reads as conversions.
What to report
- Training crawl volume and top URLs
- Fetcher vs trainer, if both UAs appear
- robots.txt: whether you opted out of Llama-class training while still running Meta ads
Blocking the training crawler does not pause your campaigns, and it does not replace CAPI. You can (and often should) keep sending purchase events server-side to Meta while Disallowing Meta-ExternalAgent.
robots.txt
User-agent: Meta-ExternalAgent
Disallow: /
Confirm the exact token on Meta's current crawler documentation before you ship. Names have already split once.
How Hardal measures it
AI Visibility attributes crawlers to parent platforms including Meta, instead of one "bot" bucket. Continuous page lists live there. Point-in-time access: isvisible.ai.
Meta ads conversions: existing Hardal CAPI guides. ChatGPT ads: how to measure ChatGPT Ads.