Why does Meta show Website events when I only send CRM events through Zapier, GoHighLevel and CAPI?
Short answer
The action source field decides how Meta labels an event. Set it to match where the action happened and check one event in Test Events.
Meta labels the channel by how the event is sent, and an event sent through the Conversions API can carry an action source of website even if the sale happened in a CRM. If your automation sets the action source to website, or if it is left at a default, Meta will list the events as website events.
The action source is a field on each Conversions API event. Its values include website, email, phone call, chat, physical store, system generated and others. It tells Meta where the action took place. If your workflow does not set it, or sets it to website, the report will show website.
Does it matter? Partly. It affects how Meta reads the event and how it appears in reports, and for website events it expects some browser details, such as a source URL, which CRM events do not have. Missing details on a 'website' event can lower match quality or trigger warnings.
Choose the value that matches reality. For a stage change inside a CRM, 'system generated' or 'other' is usually closer. For a phone call or chat outcome, there are specific values. Check Meta's current documentation for the options and what each requires.
Check the other fields too. For CRM events you generally send the event name, the time of the event, hashed email and phone, and where you can, the click ID. Do not add a fake website URL just to satisfy a warning.
Then confirm in Events Manager. Open the dataset, filter by event, and look at the action source and the match keys shown. You can also use Test Events with a test event code to send one CRM event and read exactly what Meta received.
If you use GoHighLevel, look at which action sends the event. Its built-in Meta action has its own rules, and a Zapier step sending a separate event can duplicate it. Make sure the same stage is sent once, by one route.
DataCops sends CRM stages through the Conversions API from HighLevel natively or any CRM by webhook, matched by click ID or hashed email and phone and counted once, and its log shows what was sent for each event. Check the action source against Meta's documentation for your setup.
Which tool sets the action source in your flow today, if any?
DataCops in short
For this question: DataCops sends CRM stages through the Conversions API, matched by click ID or hashed email and phone and counted once, and its log shows what was sent for each event.
DataCops is a tool that counts every paid order once on every ad platform: the DataCops Shopify app reads the paid order from Shopify's own order webhook and a Web Pixel reports the shopping steps, with a bot verdict on every visit and a log of every send.
How DataCops does it
- The paid order from the server. It comes from Shopify's order webhook, so Shop Pay, Apple Pay and closed tabs still count.
- Counted once. The pixel and the server share an event ID, and the same order ID twice counts once.
- Every ad platform. Meta, Google Ads, TikTok and LinkedIn are live, with more connectable.
- Real people only. A bot verdict on every visit, with a switch per platform, off by default.
- A log you can read. Each send as sent, held, skipped or failed, with the reason.
Best for: Shopify and other online stores that want paid orders counted once on every ad platform, and CRM or phone sales counted too.
Ads Warmup: tell the ads who pays
Ads Warmup, DataCops' flagship feature, sends customers you already have to Meta, Google Ads and TikTok before a new campaign spends: upload a CSV (only email is required, up to 20,000 rows), see a 0 to 10 match score per person, pick the event, and send. Rows are dated when you send, and Google Ads credits only people who clicked a Google ad. Preview is free; sending needs a paid plan. Check your own consent basis for the list first. See Ads Warmup.
Ways to do this job
| Option | Best for |
|---|---|
| DataCops | Paid orders to every ad platform, with a bot verdict and a log |
| Shopify's Facebook and Instagram app | One Meta pixel and server events on Shopify, Meta only |
| A store tracking app (such as Elevar) | A managed data layer for a Shopify store |
| Hosted server GTM (such as Stape) | A team that already owns a GTM container |
When not to use DataCops
- Your only ad platform is Meta and your store is small. Shopify's own Facebook and Instagram app at Maximum data sharing may be enough.
- You need custom tag logic. DataCops sends to ad platforms and is not a Google Tag Manager container.
Sources and further reading
More on this: GoHighLevel conversion tracking, and the complete guide to offline conversion tracking.
Send one test event with a test code and read it in Test Events. It shows exactly how Meta classified it.