Signals Gateway Pixel is business-deployed and managed code, operating in the business's website and is not reliant on third-party cookies or code from Meta’s servers. Signals Gateway enables businesses to use the Signals Gateway Pixel to share web events from their Signals Gateway to the Conversions API endpoint and other destinations, such as Google BigQuery and more.
This document covers configuring Signals Gateway (if you have not already) and integrating Signals Gateway Pixel on your website.
Follow this guide to enable CDN.
If you selected “Yes” for “Does your website have a Meta Pixel?” in the previous step, the “Use event code such as fbq(...) from Meta Pixel” feature has been automatically enabled, and you can directly go to Step 2.4, Verification.
Otherwise, here are several ways to set up Signals Gateway Pixel events:
Standard Events
You can use the Signals Gateway Pixel's cbq('track') function to track the following standard events, for example, cbq('track', 'Purchase', {currency: "USD", value: 30.00});. Standard events also support parameter objects with specific object properties, which allow you to include detailed information about an event.
| Event Name | Event Description | Object Properties |
|---|---|---|
| When payment information is added in the checkout flow. A person clicks on a save billing information button. | content_ids, contents, currency, value Optional. |
| When a product is added to the shopping cart. A person clicks on an add to cart button. | content_ids, content_type, contents, currency, value Optional. Required for Advantage+ catalog ads: contents |
| When a product is added to a wishlist. A person clicks on an add to wishlist button. | content_ids, contents, currency, value Optional. |
| When a registration form is completed. A person submits a completed subscription or signup form. | currency, value Optional. |
| When a person initiates contact with your business via telephone, SMS, email, chat, etc. A person submits a question about a product. | |
| When a person customizes a product. A person selects the color of a t-shirt. | |
| When a person donates funds to your organization or cause. A person adds a donation to the Humane Society to their cart. | |
| When a person searches for a location of your store via a website or app, with an intention to visit the physical location. A person wants to find a specific product in a local store. | |
| When a person enters the checkout flow prior to completing the checkout flow. A person clicks on a checkout button. | content_ids, contents, currency, num_items, value Optional. |
| When a signup is completed. A person clicks on pricing. | currency, value Optional. |
| When a purchase is made or checkout flow is completed. A person has finished the purchase or checkout flow and lands on thank you or confirmation page. | content_ids, content_type, contents, currency, num_items, value Required: currency and value Required for Advantage+ catalog ads: contents or content_ids |
| When a person books an appointment to visit one of your locations. A person selects a date and time for a tennis lesson. | |
| When a search is made. A person searches for a product on your website. | content_ids, content_type, contents, currency, search_string, value Optional. Required for Advantage+ catalog ads: contents or content_ids |
| When a person starts a free trial of a product or service you offer. A person selects a free week of your game. | currency, predicted_ltv, value Optional. |
| When a person applies for a product, service, or program you offer. A person applies for a credit card, educational program, or job. | |
| When a person applies to a start a paid subscription for a product or service you offer. A person subscribes to your streaming service. | currency, predicted_ltv, value Optional. |
| A visit to a web page you care about (for example, a product page or landing page). ViewContent tells you if someone visits a web page's URL, but not what they see or do on that page. A person lands on a product details page. | content_ids, content_type, contents, currency, value Optional. Required for Advantage+ catalog ads: contents or content_ids |
| Property Key | Value Type | Parameter Description |
|---|---|---|
| String | Category of the page/product. |
| Array of integers or strings | Product IDs associated with the event, such as SKUs. Example: ['ABC123', 'XYZ789'] |
| String | Name of the page/product. |
| String | Either product or product_group based on the content_ids or contents being passed. If the IDs being passed in content_ids or contents parameter are IDs of products, then the value should be product. If product group IDs are being passed, then the value should be product_group. |
| Array of objects | An array of JSON objects that contains the quantity and the International Article Number (EAN) when applicable, or other product or content identifier(s). ID and quantity are the required fields. Example: [{'id': 'ABC123', 'quantity': 2}, {'id': 'XYZ789', 'quantity': 2}] |
| String | The currency for the value specified. |
| Integer | The number of items. |
| Integer, float | Predicted lifetime value of a subscriber as defined by the advertiser and expressed as an exact value. |
| String | Used with the Search event. The string entered by the user for the search. |
| Boolean | Used with the CompleteRegistration event, to show the status of the registration. |
| Integer, float | The value of a user performing this event to the business. |
You can track custom events by calling the Signals Gateway Pixel's cbq('trackCustom') function, with your custom event name and (optionally) a JSON object as its parameters. Just like standard events, you can call the cbq('trackCustom') function anywhere between your webpage's opening and closing <body> tags, either when your page loads, or when a visitor performs an action like clicking a button.
For example, let's say you wanted to track visitors who share a promotion in order to get a discount. You could track them using a custom event like this:
cbq('trackCustom', 'ShareDiscount', {promotion: 'share_discount_10%'});If you have already implemented fbq() tracking calls on your website, you can let the fbq() calls send events to both your Meta Pixel and Signals Gateway Pixel by enabling the “Use event code such as fbq(...) from Meta Pixel” config.
If you're using Shopify for your website, Signals Gateway Pixel can automatically record events such as purchase, add to cart, and more. You can deploy this through the "Customer Events" feature on the admin page of your Shopify website. Follow the Shopify pixels and customer events guidance for step-by-step instructions.
You can install a Signals Gateway Pixel in Google Tag Manager using "Custom HTML". Here are the steps:
Deduplication setup is needed if the Meta Pixel is connected and the Conversions API Gateway pipeline is also receiving the same user events from other channels (having a “redundant” setup).
When you use a redundant setup, you must set up a deduplication method to ensure that the ad delivery system is able to differentiate between distinct and overlapping events. If you do not send the same event twice via both Signals Gateway Pixel and another channel, you do not need to set up deduplication for those events.
Depending on how you set up Signals Gateway Pixel events, here are the deduplication options:
If you have implemented cbq() pixel tracking calls on your website manually, or if you also send events through the Conversions API directly, you need to add dedupe keys to your Signals Gateway Pixel, Meta Pixel, and Conversions API events. Acceptable dedupe keys include Event ID, FBP, and External ID. Follow the instructions here (replace fbq with cbq for Signals Gateway Pixel setup).
Dedupe handling differs between partners:
cbq('track', 'PageView', {}, {eventID: {{Event ID}}});), and added to the event parameter list of the Conversions API eventsIf you set up Signals Gateway Pixel events by enabling “Use event code such as fbq(...) from Meta Pixel”, or migrating EST rules from the existing Meta Pixel, dedupe is handled automatically.
Use the Test Event tool on Signals Gateway to verify that events are fired from your website and sent to Signals Gateway. The Test Event tab within the Signals Gateway Pixel detail modal is a tool for users to test inbound events. You can input and launch the website that has the Signals Gateway Pixel installed, trigger events from the launched website, and then verify that your pipeline is receiving test events in real-time.
If test events don’t show up as expected, you can follow the steps below to debug:
Upon loading your front-end website, open your browser inspector to inspect your website. Verify that your webpage downloads the script from <Signals Gateway host>/sdk/events.js and runs it. Clicking on the url will also show the minimized script. The status code should be 200 in the request headers.
Open your browser inspector to inspect your front-end website. For example, if you have added tracking code cbq(‘track’,‘Purchase’); upon clicking the button that triggers the ‘Purchase’ event, then when you click the button, there should be a request in the Network tab with a normal 200 response from <Signals Gateway host>/events. Verify the conversion_value and custom_data (if has been set up) in request payload, including the currency, value, and other product content parameters.
You can also use Signals Gateway Pixel Helper Chrome Extension to verify your Signals Gateway Pixel’s events configuration.
Once verified that events are firing from the website, open your Signals Gateway dashboard found at <Signals Gateway host>/hub/capig/pipeline. As an example, assume you have a total of 2 ‘Purchase’ events received already. Looking back at the dashboard, it updates automatically from 2 to 3 ‘Purchase’ events.
Events are also viewable in Meta Events Manager under the business that was registered with your Meta Pixel. Events in Events Manager may take up to a few hours to show up.
There are detectors running periodically on Signals Gateway to detect issues with your Signals Gateway Pixel setup and event configurations (for example, event missing parameters). You can follow this guide to check the diagnostics.