- Delivery
- Meta Conversions API, sent from SignalBridge servers
- Connect with
- Facebook login (ad account and dataset), or a Pixel ID plus a Conversions API access token
- Deduplication
- A shared event ID on the browser and server copy of each event
- Match data
- Hashed email, phone, name, address and external ID; fbc, fbp, IP address and user agent unhashed
- Action source
- Website
- Consent
- Events are held back when marketing consent is denied, or required and not yet granted
- Failures
- Automatic retries, and a reconnect alert when Meta rejects the token
- Testing
- Optional Meta Test Events code on the connection test
How it works
The browser event is captured
The SignalBridge script (or the Shopify Web Pixel) records the event together with the fbclid from the landing URL, the _fbp cookie and any email or phone the visitor has entered. If your site loads the SignalBridge script and already runs the Meta Pixel, SignalBridge wraps the fbq call and adds an event ID to it, or reuses the ID your own code already set. The Shopify Web Pixel runs in a sandbox and cannot do this to the Pixel that Shopify's Facebook & Instagram channel loads.
It reaches your tracking domain
The event is posted to your SignalBridge tracking domain, a subdomain you can point at SignalBridge with a CNAME, and is stored durably before anything else happens. A page change or a dropped connection after this point does not lose it.
Consent and traffic quality are checked
If the visitor denied marketing consent, or your site requires consent and it has not been granted, the event is not sent to Meta. Traffic excluded as automated is not sent either.
Match data is prepared
Email, phone, name and address fields are normalised to Meta's formatting rules and hashed with SHA-256. If the Meta cookie is missing but an fbclid is present, SignalBridge builds the fbc value from it. The event time is the visitor's own timestamp, unless it is more than 15 minutes in the future or older than 48 hours, in which case the server time is used.
The event is delivered to Meta
SignalBridge posts it to the Conversions API for your dataset. Rate limits and temporary Meta errors are retried automatically. If Meta rejects the access token, delivery pauses and the dashboard asks you to reconnect.
Which events are sent
Standard events keep their Meta names. Lead-type events can be routed to the one event you optimise for.
| SignalBridge event | Sent to Meta as | Notes |
|---|---|---|
| PageView | PageView | If your site already fires a Pixel PageView, SignalBridge reuses that event's ID instead of sending a second one. |
| ViewContent, AddToCart, InitiateCheckout, AddPaymentInfo | Same name | Value, currency and product IDs are included when the page or Shopify provides them. |
| Purchase | Purchase | Carries value, currency, order ID, item count and product contents. Value is only sent together with a currency. |
| Lead, CompleteRegistration, SubmitApplication, Contact, Subscribe, SignUp, StartTrial, Schedule | The event chosen under Lead event routing | Pick the event that matches the conversion you optimise for. Without a choice, the original name is kept. |
| Custom events from sb_track() | Their own name | Sent as custom events with the data you pass. |
What match data is sent
Meta uses these fields to connect a server event to a person and an ad click. More fields, collected correctly, generally means a higher Event Match Quality.
| Parameter | How it is prepared | Where it comes from |
|---|---|---|
| Email (em) | Trimmed, lowercased, SHA-256 | Checkout, forms, sb_track user_data, Shopify customer data |
| Phone (ph) | Converted to digits with country code, without the +, SHA-256 | The same sources as email |
| First and last name (fn, ln) | Lowercased, letters only, SHA-256 | Checkout and forms |
| City, state, ZIP, country (ct, st, zp, country) | City letters only, US states as two-letter codes, country as an ISO two-letter code, SHA-256 | Checkout shipping or billing details |
| External ID | SHA-256 of the ID you supply; otherwise a hashed visitor identifier scoped to your pixel | Your customer ID, or SignalBridge's visitor ID |
| fbc | Not hashed. Built as fb.1.<click time>.<fbclid> when only the fbclid is available | _fbc cookie, or the fbclid in the landing URL |
| fbp | Not hashed | _fbp cookie |
| IP address and user agent | Not hashed | The visitor's request to your tracking domain |
Requirements
- A Meta dataset (Pixel) in Events Manager for the site.
- Access to the Meta ad account, or a Conversions API access token generated in Events Manager.
- The SignalBridge script on your site, or the SignalBridge Shopify app. Your store platform decides which one; see the guides below.
- Optional: a custom tracking domain, so the SignalBridge script and endpoint load from your own subdomain.
Set up Facebook Ads
Open the Facebook integration
In SignalBridge, open your pixel's settings and find Facebook Ads under Integrations.
Connect with Facebook
Choose Connect with Facebook, approve the permissions, then pick the ad account and the Pixel (dataset). To use a token instead, choose Manual setup with token and enter the Pixel ID and a Conversions API access token. Both come from Events Manager: Datasets, your Pixel, Settings, then Generate access token under Conversions API.
Install SignalBridge on the site
Add the SignalBridge snippet to the site header, or install the Shopify app. Keep your existing Meta Pixel in place.
Choose the lead event
Under Lead event routing, pick the Meta event your lead campaigns optimise for, such as Lead or CompleteRegistration. Skip this for stores that only track purchases.
Check the connection
Use Test on the Facebook card. Paste your current Test Events code first if you want the check to appear in Meta's Test Events tab.
Verify it works
See the event in SignalBridge
Open the event stream, trigger an event on your site, and confirm it appears with the Facebook destination marked as delivered.
See it in Meta Test Events
In Events Manager, open Test Events, enter the test code, and perform an action on your site. Server events show with the Server label. If your Pixel also fires and the SignalBridge script wraps it, the browser and server copies should be reported as one deduplicated event.
Review match quality after a day
Event Match Quality in Events Manager is based on recent server events and updates with a delay. SignalBridge reads Meta's figures and alerts you when an event scores below 6 and has dropped by at least a point from its recent median.
Troubleshooting
Purchases show twice in Events Manager
Another tool is sending the same purchase to the Conversions API with its own event ID, for example a Facebook channel or plugin with server events enabled. Keep one server-side sender. Browser Pixel plus SignalBridge is fine when the SignalBridge script wraps the Pixel, because they share an ID. On Shopify they do not share one, and Meta relies on its fbp and external ID fallback, so confirm the count against your orders.
Meta shows "Facebook token expired" in SignalBridge
Delivery is paused until you reconnect. Choose Connect with Facebook again, or generate a new access token in Events Manager and enter it under Edit.
Purchase events arrive without a value
Meta only accepts a value together with a currency. Set the store's default currency in the pixel settings, or pass currency with the event. The storefront domain is never used to guess a currency.
Event Match Quality is low
The events carry little customer data. Collect email and phone at checkout or in forms, and pass them with sb_track user_data on non-Shopify sites. Meta weights email and click ID most heavily.
Test Events shows nothing
The test code changes in Events Manager. Copy the current code, paste it into the Test field on the Facebook card, run the test, and keep the Test Events tab open while you do.
No events from some visitors in the EU or UK
If your consent banner is connected and a visitor has not accepted marketing cookies, SignalBridge holds those events back by design. Check the consent state in the event details.
What to know before you rely on it
Where this integration stops, so the numbers you see are read correctly.
- SignalBridge can only send what it receives. If the SignalBridge script itself is blocked, or the visitor never loads your site, there is nothing to forward. A custom tracking domain lowers that risk but does not remove it.
- Visitors who have not agreed to marketing tracking are not sent to Meta. That is a privacy decision, not a gap to close.
- Events are website events. Offline conversions, app events and lead ads form data are outside this integration.
- Match quality depends on the customer data your site collects. SignalBridge cannot hash an email it never saw.
- Numbers in Ads Manager and in SignalBridge can differ because of Meta's attribution windows, modelling and reporting delay.
Questions about this integration
Will the Conversions API duplicate my Pixel events?
Not when the browser and server copy share an event name and event ID. Meta deduplicates events that match on both within its deduplication window. With the SignalBridge script, the ID is added to your Pixel calls, so a purchase seen by both is counted once, and a purchase seen only by the server, because the Pixel was blocked, is counted once as well. On Shopify the channel's Pixel keeps its own IDs, so deduplication depends on Meta's fallback match on event name with fbp or external ID. Check it with a test order.
Do I still need the Meta Pixel?
Yes, keep it. The Pixel supplies browser signals and many of Meta's tools expect it. SignalBridge adds a server copy of the same events and reports the ones the Pixel cannot.
What do I need to connect?
Either a Facebook login with access to the ad account and dataset, or the Pixel ID and a Conversions API access token from Events Manager. The login route lists your ad accounts and Pixels so you can choose.
How is customer data protected?
Email, phone, name and address fields are normalised and hashed with SHA-256 before they leave SignalBridge, as Meta requires. The fbc, fbp, IP address and user agent are sent as they are, because Meta expects them unhashed.
What is Event Match Quality, and what score should I aim for?
Event Match Quality is Meta's 0 to 10 rating of how well your server events can be matched to Meta accounts. Meta publishes which parameters help most, with email and click ID highest, but it does not publish score bands. Treat any figure for "good" as a vendor rule of thumb, and watch the trend and the per-event suggestions in Events Manager.
Does consent affect what Meta receives?
Yes. If a visitor denies or revokes marketing consent, or consent is required on your site and has not been granted, the event is not sent to Meta. On Shopify the decision comes from Shopify's customer privacy settings.
Can I send lead events as a different Meta event?
Yes. Lead, CompleteRegistration, SubmitApplication, Contact, Subscribe, SignUp, StartTrial and Schedule can all be routed to a single Meta event, so the data matches the conversion your campaign optimises for.
How many platforms can I connect?
The Starter plan includes two connected platforms. Growth and above have no platform limit. The pricing page has the current plan details.