- Delivery
- GA4 Measurement Protocol (server to Google)
- Connect with
- Google sign-in, then a property and web data stream
- Needs
- Editor access to the GA4 property
- Credentials
- A Measurement Protocol secret named SignalBridge, created or reused for you
- Event names
- GA4 recommended names, with unmapped events sent in lower case
- Retries
- One attempt per event. A timeout is recorded as unknown, not resent
- Consent
- Held back when marketing consent is denied or required and not granted
- Plan
- Counts as one platform. Starter and trial plans allow two platforms
How it works
An event is captured
The SignalBridge script or Shopify app records the event with its value, currency, items and page details, and gives it an event ID.
Consent is applied
If your site requires marketing consent and the visitor has not granted it, or if they have denied it, the event is not sent to GA4. The Traffic Quality exclusion that keeps suspected bot traffic away from ad platforms does not apply to analytics.
The event is translated
SignalBridge maps its event name to the GA4 name from the table below, adds the parameters GA4 expects, and checks the document against GA4's published limits before it is stored for delivery.
A client ID is chosen
If the event carries a GA client ID, it is used. Otherwise SignalBridge derives a stable numeric client ID from the visitor's connection and browser, because the Measurement Protocol requires one.
The event is sent once
SignalBridge writes a durable delivery record, then posts the document to Google with the Measurement ID and secret. The result is stored as received, rejected, or unknown. A network timeout is never resent, so a conversion is not double counted.
How SignalBridge events map to GA4 events
GA4 recommended event names are used where one exists. Anything else is sent under its own name in lower case, provided GA4 accepts the name. If you set Lead event routing, every lead-type event is first renamed to the single event you choose and then mapped as below.
| SignalBridge event | GA4 event | Notes |
|---|---|---|
| PageView | page_view | Sent for tracked page views, with the page location, title and referrer shortened to GA4's 100-character limit. |
| ViewContent | view_item | Sent with item details when the platform provides them. |
| AddToCart | add_to_cart | Sent with item and value details. |
| InitiateCheckout | begin_checkout | Sent with item and value details. |
| AddPaymentInfo | add_payment_info | Reported when a payment step is completed. |
| Purchase | purchase | Sent with value, currency, items and a transaction ID. |
| Lead, Contact, Schedule | generate_lead | Three lead-type events share GA4's one recommended lead event. |
| CompleteRegistration, SignUp | sign_up | Both registration events share GA4's sign_up event. |
| StartTrial | start_trial | Trial starts are reported under their own GA4 name. |
| Subscribe | subscribe | Newsletter and subscription sign-ups. |
| SubmitApplication | submit_lead_form | Application forms are reported under their own name. |
| Search, FindLocation | search | Search term is included when present. |
| AddToWishlist | add_to_wishlist | Wishlist additions. |
What GA4 enforces on every server event
SignalBridge checks each document against these Measurement Protocol limits and does not send one that breaks them.
| Rule | Limit |
|---|---|
| Events per request | 1 to 25 |
| Parameters per event | Up to 25 |
| Event and parameter names | Start with a letter, up to 40 letters, digits or underscores, and avoid reserved names |
| Text values | Up to 100 characters |
| Items per event | Up to 200 |
| Request body | Under 130 kB |
Requirements
- A GA4 property with a web data stream.
- A Google account with the Editor role on that property.
- Google's user data collection acknowledgement completed for the property, which only the property owner can do.
- The SignalBridge script on your site or the SignalBridge Shopify app.
Set up Google Analytics 4
Connect your Google account
In your pixel's settings choose Connect Google Analytics 4 and approve access with the Google account that has access to the property.
Choose a property and a web data stream
Select the GA4 property and then its web data stream. SignalBridge reads the Measurement ID from the stream.
Let SignalBridge create the secret
SignalBridge looks for a Measurement Protocol secret named SignalBridge on the stream and creates one if it does not exist. If Google refuses because the user data collection acknowledgement is missing, accept it in GA4 and connect again.
Send a test event
Use the test button on the GA4 card. It sends an event called signalbridge_test, which proves that Google received the request. It does not prove that the secret is valid or that the event was processed.
Set lead event routing
If you track leads, open Lead event routing on the GA4 card and choose the one event that lead-type events should be reported as. It applies to Lead, CompleteRegistration, SubmitApplication, Contact, SignUp, Subscribe, StartTrial and Schedule. Purchases and other events are not affected.
Verify it works
Trigger a real conversion
Place a test order or submit a test lead on your site, then open the event stream in SignalBridge and confirm that GA4 shows as received for that event.
Look for the event in GA4
Search the event name in GA4 reports or Explorations. Standard reports can take a day or more to include new data.
Do not rely on Realtime
Server events appear in Realtime only when they carry a session ID and engagement time from a live browser session. SignalBridge forwards those only when it observed them and never invents them, so a server event can be missing from Realtime and still be processed.
Troubleshooting
Connecting fails when SignalBridge tries to create a secret
The property owner needs to accept Google's user data collection acknowledgement in GA4 first. SignalBridge does not accept legal terms on your behalf.
No GA4 data stream is listed
Create a web data stream in GA4 and reconnect. App streams are not used.
The test event succeeds but nothing appears in GA4
A successful response only means that Google received the request. Check the Measurement ID and that the secret belongs to the same stream, then look in reports rather than Realtime.
Events show as unknown delivery
A network error or timeout happened. SignalBridge does not resend, to avoid counting a purchase twice, so check GA4 before deciding whether the event is missing.
The same purchase appears twice
The browser tag and the server both sent it. GA4 ignores repeated purchases that share a transaction ID, so make sure both use the same order ID, or let only one of them send purchases.
GA4 shows more users or page views than before
Server events use a derived client ID, so GA4 treats them as separate from the browser's user, and page views are forwarded too. Compare conversion counts, not user counts, or check the numbers with the tag paused on a test property.
What to know before you rely on it
Where this integration stops, so the numbers you see are read correctly.
- SignalBridge does not currently read the _ga cookie, so server events use a derived client ID and are not merged into the visitor's browser session.
- Server events carry no traffic source of their own. Use them for conversion counts and key events, not for channel attribution inside GA4.
- Page views are forwarded as well. Because server events do not share the browser's client ID, GA4 can show extra users and page views next to your tag's own numbers. Compare totals before you rely on them.
- Each event gets one delivery attempt. If the outcome is unknown, SignalBridge does not retry.
- A successful response from the Measurement Protocol does not confirm that the secret is valid or that the event was processed.
- Visitors who have not agreed to marketing tracking are not sent to GA4.
Questions about this integration
Does this replace my GA4 tag?
No. Keep the tag for sessions, traffic sources and engagement. SignalBridge adds server-side events, chiefly for the conversions the tag does not record.
Why do server events not match browser sessions?
Joining them needs the GA client ID and session ID from the visitor's browser, and SignalBridge does not read those today. Events are therefore recorded as separate hits under a derived client ID.
Will purchases be counted twice?
GA4 ignores repeated purchase events with the same transaction ID. SignalBridge sends the order ID as the transaction ID when it has one, and its own event ID otherwise. If your tag uses a different identifier, you can still see duplicates.
What is the Measurement Protocol?
It is Google's way of sending events to GA4 over HTTP from a server. It needs a Measurement ID, which identifies the data stream, and a secret that authorises the request.
Do I have to create the API secret myself?
No. SignalBridge creates one named SignalBridge, or reuses an existing one with that name. You can delete or rotate it in GA4 under the data stream's Measurement Protocol settings.
Are bots filtered out?
The Traffic Quality exclusion applies to ad platforms. GA4 follows your consent settings only, and GA4 applies its own filtering of known bots and spiders.
Can I send custom events?
Yes, as long as the name is valid for GA4 and not reserved. It is sent in lower case, and events that break GA4's rules are not delivered.
Does GA4 count towards my plan limit?
It counts as one connected platform. Starter and trial plans allow two platforms, and Growth and above allow unlimited platforms.