Skip to main content
Open Dashboard to compare arrivals and paid-account performance with stored platform activity. Use Signals for installation, collection health, destination settings and cookie scans. Before the workspace’s first arrival, Dashboard shows installation instructions instead of reports. Follow the first-arrival checks if you have already deployed the snippet. Once reporting is available, use Last 7 days, Last 30 days, or Last 90 days to select a completed reporting window. The dates and timezone shown above the metrics define the actual period; retention can shorten it. Today so far is a separate, incomplete local-day count. Opening this page or choosing Export reads stored data. It does not trigger a live Meta Marketing API request.

How do I read paid-account performance?

Select the Meta ad account on Dashboard. The account view combines retained Meta spend and link clicks with Plainrouter arrivals and eligible observed purchases. Campaign, ad set and ad rows show the available breakdown; they do not replace Signals delivery checks. Use the dates and account timezone shown for paid figures. The window can differ from the broader workspace report. Unknown or unavailable figures stay unknown; a dash is not zero.

Why do some ads have no arrivals or observed purchases?

Ads need the Plainrouter URL tags. Ads created by Plainrouter carry them; for other ads, add this to their URL parameters:
Meta must resolve its dynamic placeholders on a real ad click. A manually opened URL containing literal {{ad.id}} is not an ad ID and cannot establish an ad-level conversion join. Existing ad IDs and eligible consented visitor context are also required for observed purchase attribution. Landing click IDs remain separate from these tags. Inspect any partial-coverage note: it compares tagged-ad spend with total account spend. Account-level Meta totals include untagged ads, while Plainrouter ad-level measurements cover tagged ads. A missing tag or partial coverage is not evidence that Meta lost the purchase.

Why is the available history shorter than my selected range?

Check Workspace settings → Read window for the effective number of days. Identity retention is shown separately. Choose a shorter range and check the actual report dates; the label does not guarantee N complete days of source data. Plan history allows 30 days on Free and 12 calendar months on paid plans. An explicit shorter workspace retention setting can reduce that window. A newly created workspace has no shorter event-read setting; the separate default for visitor identity retention does not impose a fixed 90-day event-read limit. Available source data can still be incomplete. Billing and history explains the distinction. Dashboard’s third arrival total uses its displayed reporting-window label, such as Last 30 days or Last 12 months. It is not an unlimited lifetime count. Event history, visitor identity, payloads, and delivery records have separate read or retention limits; an older event may no longer have its original payload or delivery details.

Which reporting windows can I select?

Dashboard offers Last 7 days, Last 30 days, Last 90 days, and Last 12 months only when the window fits the workspace’s plan and any explicit shorter setting. The month option means 12 calendar months, not a fixed 365-day request. Completed days and Today so far remain separate. Requests beyond the available window are refused rather than silently shortened. A stale Signals page link returns to the default window with a refusal message; CSV and MCP callers receive an error. Choose an offered window and retry. A refusal saying this workspace plan keeps points to the plan allowance; this workspace is set to keep points to a shorter workspace setting. Check the named limit before changing the request. This window policy does not extend get_performance, whose reconciliation range remains 1–90 days.

Can I read the arrival comparison through MCP?

Use get_arrivals_comparison with a production Read workspace key. Pass days as 7, 30, or 90, or use months: 12 instead when the workspace allows it. With neither input, the default is 7 days. This reads the workspace’s stored comparison without selecting an ad account or triggering a live provider read. Check the returned workspace, period, status, and data availability, and keep Today so far separate from completed days.

What do you need to check?

You need an active Signal for arrival collection and a connected Meta destination for platform and delivery diagnostics. Missing platform history does not mean zero activity.

Summary metrics

Events received

The arrival total counts dedicated arrival records sent once per document load. A consented PageView, purchase, or other conversion does not add another arrival. Arrivals confirm collection; they never create Meta deliveries. Arrivals stay aggregate-only and do not appear in event-level lists or detail APIs. Their records contain no page URL, referrer, platform or channel source, visitor identity, IP address, user agent, or commerce details. Event time is rounded down to the UTC hour. Invalid traffic, synthetic events, and legacy exposure rows do not enter the arrival total. The total remains a complete number, including when it is below five. A strict-EU severed subtotal from one to four is withheld separately. In that case, the page and CSV say Complete total; one small cell is withheld. The partial marker refers to the withheld component; it does not subtract arrivals from the total or the difference calculation.

Match quality

Event Match Quality shows a stored Meta score and its capture date when available. A missing score is not zero. Follow the displayed notice if capture is pending, Meta returns no score, or the connection needs ads_read access. Match quality alone does not prove successful delivery or improved advertising results.

Arrivals vs platform-claimed clicks

The Arrivals and platform activity panel compares observed arrivals with account-level Meta data for the displayed period. claimed_clicks and platform_claimed_clicks retain their API field names but now mean Meta outbound clicks. The response includes claimed_clicks_caveat and claimed_clicks_outbound_since. Days before June 29, 2026, or days not re-read by the daily sync since September 27, 2026, may still contain Meta link clicks or all clicks. Keep the returned caveat with historical comparisons; do not treat this as a uniform historical series. These platform metrics describe the ad account, which may advertise more than this website. They do not match individual clicks to individual arrivals or establish attribution, incrementality, or return on ad spend.

Platform read state

The panel shows the last platform read time and counts days in three states: A completed read with no reported row is different from a missing read. Missing or incomplete platform evidence stays unavailable; do not turn a dash into zero. An actual zero-spend result can show This account reported no spend in this period.

Channel details and export

Channel details read consented, attributed conversion-event data separately from arrival totals. They include global consent rows and full-consent strict-EU rows. Portfolio-scoped, legitimate-interest, severed-measurement, and source-less rows do not appear in the channel view. Because arrival records carry no channel identity, channel rows do not allocate or sum to the arrival total. Choose Export to download the stored comparison as CSV with its reporting period and total-basis labels. The export preserves the distinction between unavailable data and zero.

Verified revenue

Verified revenue shows eligible settled revenue grouped by currency. Connect Stripe verified revenue from Connections → Revenue sources → Stripe. Revenue, arrivals, and platform spend are different measurements; do not combine currencies or infer attribution from their proximity on the page.

How do I compare Meta-reported purchases?

The Signals panel and the purchases block in get_arrivals_comparison and get_performance put two counts side by side: Connect the intended Meta destination and check the account timezone, attribution details, and returned window_start_date and window_end_date. The purchase window uses completed account-local days anchored to the latest stored purchase read; it can end earlier than the arrival window. It is not the UTC-day Meta recovery panel. A dash or null Meta total means evidence is unavailable or incomplete, not zero. Inspect daily[].read_at and the daily values to distinguish missing reads from reported zero. Missing account timezone makes this comparison unavailable. Opening Signals or requesting an MCP read does not refresh Meta data. The comparison supplies no purchase gap, alignment score, or health verdict. The two counts have different measurement rules; their difference does not establish missed purchases, attribution accuracy, or incremental revenue. Stripe verified revenue remains a separate measurement. The existing reconciliation meta_reported field is not renamed or replaced by purchases.meta_reported_purchases.

Why numbers differ

Plainrouter arrivals, ad clicks, pageviews, sessions and visitors count different things. A difference between them does not, by itself, measure lost visitors or failed conversion delivery.

Meta clicks

Compare against the connected Meta ad account’s outbound clicks, not all clicks, link clicks, or landing-page views. Plainrouter arrivals can include traffic from other sources, and the ad account may advertise other websites. The totals do not pair individual clicks with individual arrivals. Match the account, complete dates and timezone shown in the comparison. Check the stored data’s availability before treating a missing value as zero. Keep this arrival comparison separate from Verified gap, which compares conversion counts.

GA4

Choose one GA4 metric and record the report settings. Users and sessions are not arrival counts. For collection troubleshooting, compare web page_view events for the same domain, then check tag triggers, filters and consent settings. GA4 can record pageviews on browser-history changes as well as page loads; test these separately. See Google’s page-view definition.

Plausible

Keep unique visitors, visits, pageviews and custom-event goals separate. Start with pageviews when checking collection, with the same website, dates, timezone and filters. Repeated pageviews need not represent different visitors. See Plausible’s metric definitions.

Check the collection difference

  1. Match the metric, website and reporting period before comparing totals.
  2. Check your consent configuration and any privacy-limited values shown by Plainrouter. Arrivals and their bounded campaign dimensions do not wait for consent; conversion-event identity and advertising delivery do. Check each report’s metric and available breakdown rather than treating a campaign label as a visitor join or attributed conversion. Keep these counts separate.
  3. Test one page load and one in-app navigation with your actual consent choices. Confirm which requests reach each collector using the installation checks.
  4. Inspect duplicate tags, redirects and blocked requests. Record the settings and request outcomes needed to reproduce an unexplained change.
Compare GA4 and Plausible using their own reports alongside Plainrouter. The platform-claimed-clicks panel reads stored Meta data; it does not reconcile those analytics reports.

Health states

Account-scoped health remains available through get_signal_health. These diagnostic states are separate from the Signals overview’s collection status.

Delivery acceptance

The account-scoped health response reports the percentage of non-test destination deliveries from events received in the last 24 hours that reached an accepted state:
Pending includes queued, sent, and retrying deliveries. Inspect an individual conversion through the event API or the CLI to check its delivery trace.

Verified gap

get_performance reads stored reconciliation counts:
A positive gap means the gateway count is higher; a negative gap means Meta’s count is higher. Alignment uses the larger total as the denominator and is unavailable when both are zero. This is a conversion-count comparison, separate from arrivals versus clicks.

Gateway vs Meta chart

The daily rows in the stored performance response identify gateway-verified conversions, Meta-reported conversions, and the observed gap for each report date. Use those rows or the reconciliation report API when investigating a conversion-count difference. The Signals overview no longer presents the old gateway chart.

Why is Event Match Quality blank?

Event Match Quality in Signals reads the latest stored Meta composite score for the workspace’s active destination. A dash means the score is unavailable; it does not mean zero. Read the accompanying notice and UTC date before comparing scores. EMQ is match-quality evidence, not confirmation of an individual conversion’s acceptance, attribution, or revenue impact. Use the event delivery trace to investigate a purchase and the EMQ guide for matching concepts.

What does Meta recovery evidence show?

The Meta recovery panel groups eligible server-side Meta Purchase deliveries by UTC day and separates their browser-pixel observations. It includes non-test, accepted deliveries for consented, observed, joined, attributed purchase events. It does not count identity-free arrivals or every purchase recorded in Plainrouter. Expand a day to inspect event_id, Provenance, observed_browser, and Source: Daily totals can exceed the inspection list, which shows at most 100 events per day. These rows use UTC delivery-record dates; do not assume they align with the overview’s local-day arrival windows. For a disputed event, copy its non-secret event_id, open its delivery trace, and compare the matching event in Meta Events Manager. Keep browser observation, server acceptance, and Meta reporting as separate evidence. An empty panel means no eligible delivery evidence is available for that period; it does not establish that the website had no purchases. These counts do not measure incremental conversions, recovered revenue, or a guaranteed performance improvement.

Diagnostics

Use get_signal_health for account-scoped delivery, match-quality, and reconciliation diagnostics. An arrival proves collection but cannot satisfy every health check. A missing Meta destination, failed deliveries, missing snapshots, stale reports, and a reconciliation gap require different follow-up actions.

Measurement freshness

Reconciliation normally runs daily. History older than 48 hours is stale. When get_performance returns not_measurable, its quantitative values cannot support an Actions proposal. Check the response’s reporting period, data source, and generation time before using it.

Troubleshoot by symptom

Delete a Signal

The Signals overview no longer has the old health-header delete control. During collection-domain setup, workspace owners can use the domain’s delete control to reset Signals. This removes its collection configuration and related data; accepted events already held by Meta are not retracted. Deleting the entire workspace is a separate permanent action in workspace settings and also removes its linked accounts and workspace data.