Skip to main content
Glama

PixelFlow

Server Details

Server-side conversion tracking for Meta, TikTok, etc. Set up tracking and ask about events.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
PixelFlow-org/mcp
GitHub Stars
3
Server Listing
PixelFlow
ChatGPT
–
Claude
–

TDQS

A4.2/5.0

Scored across 25 tools

Disambiguation4/5

Most tools are cleanly separated by resource and action, with detailed descriptions that clarify analytics vs. setup vs. trigger lifecycle use cases. Minor overlap exists around setup state and checklist updates (get_site_status, close_get_started, update_site, verify_tracking), but the intended boundaries are still recoverable.

Naming Consistency5/5

All names use snake_case and consistently start with a clear action verb such as list_, get_, create_, update_, delete_, save_, or verify_. Even less common operations like close_get_started and suggest_triggers follow the same convention.

Tool Count4/5

The 25-tool surface is large, but the domain is broad: sites, events, triggers, integrations, pixels, blocking rules, attribution, and setup all need coverage. It is somewhat heavy and could likely be consolidated in places, but most tools have a distinct purpose.

Completeness4/5

Coverage is strong across the tracking lifecycle: site setup, trigger management, integrations, pixels, blocking rules, verification, and several analytics views. Minor gaps remain, such as no explicit delete_site operation and limited direct pixel/integration management outside dashboard links.

Publisher details

Operator
PixelFlow
Operator website
https://pixelflow.so
Vendor relationship
First-party
Trust center
Not available
Restrictions
Not applicable

Available Tools

25 tools
close_get_startedUpdate Get Started checklistA
Idempotent
Inspect

Check the site's Get Started checklist and mark as done the items PixelFlow can confirm from its data. The setup item is marked done when any event was received. The old pixel item is marked done when the last page check found no native ad platform pixel. The UTM item is marked done when an event came from a paid source. The consent banner item is marked done when a banner was detected or consent blocked an event. Items are only marked done, never undone. Returns the items this call marked done and the items not done yet, each with the update_site field that marks it done once the user confirms. Use it at the end of setup.

Inputs: site_id (required), extra_events_declined. Returns: remaining, marked_done, has_conversion_event

create_siteCreate siteAInspect

Add a new website to a PixelFlow workspace and return the saved site with its site_id. If the workspace is at its site limit or its plan is canceled, the site is not created and the error says why. The result includes next_action, the same as get_site_status. Use it when the user wants to track a website that list_sites does not show.

Inputs: platform (required), domain, currency, workspace_id, +2 more. Returns: domain, site_id, currency, platform, +11 more

create_triggerCreate triggerA
Idempotent
Inspect

Create a trigger that sends an event to the site's ad platforms when a visitor submits a form, clicks an element, or loads a page, and return the saved trigger with its trigger_id. Build the selector, text_match, and data_extraction fields from one of these, never guess: the site's code open in this chat; a site builder's element data when that builder is connected in this chat; or the live page loaded in a browser tool the agent controls, where the agent runs the selector and confirms it matches only the elements the trigger should fire on. A page fetched as text, view-source, or a screenshot is not a source. Use what is rendered in the page: an element's id, a class, the control's visible label, or an input's name attribute. When none of these yields the selector, do not create a click or submit trigger: call get_connect_link with target visual_tagger and the page path, so the user picks the element and its fields. Call list_triggers first: a click or submit trigger on the same element may already exist, such as one the Visual Tagger saved. Nothing is added to the website code. Repeating an idempotency_key returns the same trigger. Refused until site setup has passed verify. Use it after the user approves a trigger, such as one proposed by suggest_triggers. Ask for approval in the user's words: the event, when it fires, and the fields it sends by their labels, if any.

Inputs: type (required), event (required), site_id (required), idempotency_key (required), +8 more. Returns: trigger, next_step

delete_blocking_ruleDelete blocking ruleA
DestructiveIdempotent
Inspect

Delete the blocking rule for one event on a site, such as Purchase, or the AllEvents rule. Rules for other events stay. After an event's own rule is deleted, the AllEvents rule applies to that event again. After the AllEvents rule is deleted, events without their own rule are no longer blocked. If the event has no rule, the call is refused and nothing changes. Returns the events that still have a rule, including AllEvents. Repeating an idempotency_key deletes once. Use it when the user wants events that a rule blocks to reach ad platforms again.

Inputs: target (required), site_id (required), idempotency_key (required). Returns: rules_left

delete_triggerDelete triggerA
DestructiveIdempotent
Inspect

Delete a trigger of type url, click, or submit and return the id and type of the removed trigger. Its event stops being sent from that trigger once visitors' browsers pick up the new site configuration. Repeating an idempotency_key deletes once. Use it when the user wants to stop sending an event from that trigger.

Inputs: type (required), site_id (required), trigger_id (required), idempotency_key (required). Returns: type, saved, deleted, trigger_id

disconnect_integrationDisconnect integrationA
DestructiveIdempotent
Inspect

Disconnect an integration such as Stripe or Calendly from a site and return which one was removed. Its webhook is removed and its events stop being sent to ad platforms. Reconnecting is done from the dashboard. Use it when the user asks to stop sending conversions from that integration.

Inputs: site_id (required), integration_id (required). Returns: type, disconnected, integration_id

get_attributionGet attributionA
Read-onlyIdempotent
Inspect

Get revenue and conversions for one site over a date range, broken down by traffic source, campaign, ad set, or ad, using PixelFlow's website attribution (the UTM tags and referrer of the converting visit). Each row has its event counts, revenue, unique visitors, and sessions. To drill down, pass the parent levels: campaign needs source; adset needs source and campaign; ad needs all three. Ranges before the plan's analytics lookback are refused, and a range too large to read at once is refused as range_too_wide with the largest range that fits. Use it for "which campaigns or ads drove conversions" questions.

Inputs: to (required), from (required), site_id (required), adset, +4 more. Returns: rows, window, group_by, timezone, +4 more

get_blocked_eventsGet blocked eventsA
Read-onlyIdempotent
Inspect

List the events PixelFlow did not send to ad platforms on one site because of consent or bot detection, up to 100 per call. Blocked events are stored without visitor data and by the hour, not the exact time. Each row is one blocked event with its hour, event, reason, consent tool, and consent regime. Events stopped by the site's blocking rules are not included. Ranges before the plan's analytics lookback are refused. Use it to find out why a conversion did not reach an ad platform, such as a purchase made at 3:15 today.

Inputs: to (required), from (required), site_id (required), sort, +5 more. Returns: rows, window, timezone, next_cursor

get_event_payloadsGet event detailsA
Read-onlyIdempotent
Inspect

Get the payload (request body) PixelFlow sent to each ad platform for up to 25 events by id. Each event lists every pixel it was sent to, with that payload and any error. IP addresses in the payload are partly hidden. Pass include_ip true to see them in full. Name, email and phone are hashed, as the ad platforms receive them. Use it to see exactly what was sent for an event from list_events, or why an ad platform rejected it.

Inputs: ids (required), site_id (required), timezone, include_ip. Returns: events, timezone

get_install_instructionsGet install instructionsA
Read-onlyIdempotent
Inspect

Get step-by-step instructions the user follows on their website or in their ad platform's ads manager, for one task: installing PixelFlow, adding UTM parameters to ad links, removing an ad platform's own pixel code (such as the Facebook pixel) that was added before PixelFlow and would count events twice, or removing PixelFlow. Steps are written for the site's platform, and install steps include this site's code snippet, ready to paste. Use it when the user is ready to install PixelFlow, or asks how to add UTM parameters, remove a duplicate pixel, or uninstall.

Inputs: task (required), site_id (required), phase, other_platform. Returns: docs, task, steps, snippet, +7 more

get_journeysGet journeysA
Read-onlyIdempotent
Inspect

Get visitor journeys on one site, one row per visitor with an event in the date range. A journey covers that visitor's events in the lookback_days up to their last event in the range. Each row has the journey's value per currency, the count of each event, its last 50 events with their times, and the first and last touch credited (source and UTM tags). Events with no visitor id are their own rows. Ranges before the plan's journey lookback are refused. Use it when the user asks about customer, user, or conversion journeys: what visitors did on the site before they converted, and which first and last touch the conversion is credited to.

Inputs: to (required), from (required), site_id (required), page, +9 more. Returns: sort, total, window, journeys, +3 more

get_overviewGet tracking overviewA
Read-onlyIdempotent
Inspect

Get tracking totals for one site over a date range: the count of each event, such as Purchase or Lead, revenue, events delivered and failed per pixel, events blocked by consent or bot detection, event counts per day or week, and, for the newest 500 conversions in the range, how many carried a hashed email or phone. Ranges before the plan's analytics lookback are refused, and a range too large to read at once is refused as range_too_wide with the largest range that fits. Use it for "how is tracking doing" and weekly report questions.

Inputs: to (required), from (required), site_id (required), group_by, +1 more. Returns: failed, pixels, series, window, +9 more

get_site_statusGet site statusA
Read-onlyIdempotent
Inspect

Get the setup and health state of one site: its settings (domain, platform, currency, ecommerce flags), whether the PixelFlow script or plugin is installed, connected pixels and integrations, blocking rules, consent mode, the last event received of each type, which Get Started checklist items are done, and the plan, limits, and usage of its workspace. It also returns the next setup step, until setup and the Get Started checklist are complete. Use it before any setup or troubleshooting step, or when the user asks about their plan or limits.

Inputs: site_id (required). Returns: docs, domain, pixels, site_id, +18 more

list_eventsList eventsA
Read-onlyIdempotent
Inspect

List the tracked events on one site as rows, up to 100 per call. Each row has the time, event, page URL, traffic source, value, visitor and session ids, UTM tags with first and last touch, consent, and send status per pixel with any ad platform error. For an event's full payload, pass its id to get_event_payloads. Use it to answer questions about tracked events, such as what one visitor did, which conversions failed to send, or which pages purchases came from.

Inputs: to (required), from (required), site_id (required), sort, +11 more. Returns: events, window, timezone, event_count, +2 more

list_sitesList sitesA
Read-onlyIdempotent
Inspect

List the websites the signed-in user can access in PixelFlow: each site's site_id, domain, platform, currency, whether the user can edit it, and the workspace it belongs to with the user's role there. Plan, limits, and usage are in get_site_status. Use it to find the site_id for a website the user names, or to ask which site they mean when there are several.

Inputs: no named parameters. Returns: sites

list_supported_valuesList supported valuesA
Read-onlyIdempotent
Inspect

List the names PixelFlow supports and other tools accept: the platforms a site can run on, the ad platforms events can be sent to, the integrations that report conversions, the supported events, and the traffic sources events are attributed to. Use it when the user asks whether PixelFlow supports a platform, ad platform, integration, event, or traffic source, or before passing one of these names to another tool.

Inputs: no named parameters. Returns: events, sources, platforms, ad_platforms, +1 more

list_triggersList triggersA
Read-onlyIdempotent
Inspect

List every conversion trigger on one site, including integrations such as Stripe. Each trigger has its type, the event it sends, its page URL, selector, value and data extraction. It also shows when the trigger last sent an event and whether that send succeeded. Use it to check what is tracked, or to find a trigger_id before changing a trigger or an integration.

Inputs: site_id (required), timezone. Returns: timezone, triggers, checked_from

save_blocking_ruleSave blocking ruleA
DestructiveIdempotent
Inspect

Save the blocking rule for one event on a site, such as Purchase, or for all events (AllEvents). It replaces the rule already saved for that event, if any. Rules for other events stay. A blocking rule stops matching events from being sent to ad platforms, such as a second Purchase when the confirmation page is refreshed. A rule for one event, such as Purchase, replaces the AllEvents rule for that event, so include any AllEvents conditions it should keep. The current rules are in get_site_status. Returns the saved rule. Repeating an idempotency_key applies the change once. Use it when the user wants to stop duplicate or unwanted events reaching ad platforms, or to save a rule proposed by suggest_triggers.

Inputs: rule (required), site_id (required), idempotency_key (required). Returns: rule

suggest_triggersSuggest triggersA
Read-onlyIdempotent
Inspect

Suggest the conversion triggers a site still needs: which events are tracked today, and one proposal per gap. It uses what PixelFlow knows about the site and the observations passed in; it does not load the website or read code. A url proposal carries arguments ready for create_trigger. An integration proposal carries connect arguments for get_connect_link. A click or submit proposal carries no create_trigger arguments: the agent builds them from the site's code, a connected builder's element data, or the live page in its own browser tool. When none of these yields the selector, call get_connect_link with the proposal's connect arguments, so the user picks the element on the website with the Visual Tagger. Refused until site setup has passed verify. Use it when setting up conversion tracking, or when the user asks what else they could track.

Inputs: site_id (required), goal, events, observations. Returns: goal, coverage, question, proposals, +2 more

update_integrationUpdate integrationA
DestructiveIdempotent
Inspect

Change the settings of an integration connected to a site, such as Stripe or Calendly. Returns the saved settings. Every integration has a label and a fixed value sent with every event. Integrations that report payments also have a product list and a minimum payment amount. When they are set, events are sent only for those products and for payments of at least that amount. Fields left out stay unchanged. null clears a field. A setting the integration does not support is refused. Use it when the user wants to change which events an integration sends or the value sent with them.

Inputs: site_id (required), integration_id (required), label, fixed_value, +2 more. Returns: type, label, fixed_value, product_ids, +2 more

update_pixelUpdate pixelA
DestructiveIdempotent
Inspect

Change the label or the test event code of a connected ad platform pixel. Returns the pixel's label and test event code after the change. A test event code sends events to the ad platform's test events view, for debugging. An empty test event code turns test mode off. Test mode also turns off by itself at test_mode_ends_at. Fields left out stay unchanged. The pixel id and access token can only be changed in the dashboard. Use it when the user wants to rename a pixel or check events in the ad platform's test view.

Inputs: site_id (required), pixel_id (required), label, test_event_code. Returns: label, pixel_id, test_event_code, test_mode_ends_at

update_siteUpdate siteA
DestructiveIdempotent
Inspect

Change settings on a site (domain, platform, currency, ecommerce flags, or Get Started checklist items) and return the saved site. Omitted fields stay unchanged; provided fields overwrite the stored value. The result includes next_action, the same as get_site_status. Use it when the user changes a site setting or confirms that a Get Started item is done.

Inputs: site_id (required), domain, currency, platform, +6 more. Returns: domain, site_id, currency, platform, +11 more

update_triggerUpdate triggerA
DestructiveIdempotent
Inspect

Change an existing trigger of type url, click, or submit and return the saved trigger. type and event are always required. type can change only between submit and click; a url trigger keeps its type. Other omitted fields stay unchanged; provided fields overwrite the stored value. Build a new selector, text_match, or data_extraction from one of these, never guess: the site's code open in this chat; a site builder's element data when that builder is connected in this chat; or the live page loaded in a browser tool the agent controls, where the agent runs the selector and confirms it matches only the elements the trigger should fire on. A page fetched as text, view-source, or a screenshot is not a source. Use what is rendered in the page: an element's id, a class, the control's visible label, or an input's name attribute. When none of these yields the selector, do not change a click or submit selector: call get_connect_link with target visual_tagger and the page path, so the user picks the element and its fields. Repeating an idempotency_key applies the change once. Use it when the user wants to change a trigger's page, element, event, value, or data extraction. Ask for approval in the user's words: the event, when it fires, and the fields it sends by their labels, if any.

Inputs: type (required), event (required), site_id (required), trigger_id (required), +9 more. Returns: trigger, next_step

verify_trackingVerify trackingAInspect

Check that tracking works on one site by loading one of its pages in a headless browser and reading the events received since checked_from. Returns whether tracking works, the first failing step with its cause and fix, whether the page could be loaded, and any ad platform pixel added to the site outside PixelFlow that double counts events. A passing check marks site setup as complete. The result includes next_action, the same as get_site_status. Refused until an ad platform is connected. Rate limited per site. Use it after installing PixelFlow, after connecting a pixel, or when the user reports missing events.

Inputs: site_id (required), url. Returns: fix, docs, cause, domain, +9 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables an AI assistant to set up and manage server-side conversion tracking by connecting ad platforms like Google Ads, Meta, and GA4, building and publishing conversion flows that fire when forms are submitted, installing tracking snippets, and reviewing conversion events. It also supports diagnosing missing conversions and excluding internal traffic, all through a hosted connector authorized against the user's own account.
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI agents to send server-side conversion events such as leads, signups, purchases, and subscriptions to ad platforms using a user-supplied API key, with normalization, hashing, deduplication, Meta CAPI test events, and usage statistics.
      3
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.