Here is an honest confession: the build is the easy part of server-side tracking. Testing is where the real work is. Almost every “it’s broken” message I get from new clients turns out to be a setup that was never tested end to end. This is the exact routine I follow before I call any container done.
The three places to look
| Tool | What it shows | Use it to answer |
|---|---|---|
| Web GTM preview | What the browser sends | Did the event fire with the right data? |
| Server GTM preview | What the server receives and sends out | Did the right client claim it? Did the tags fire? |
| Stape logs | Real production requests and responses | Is it working for real users, not just me? |
Step by step testing routine
- Open both previews together. Start server preview first (in the server container, click Preview). Then start web preview in another tab.
- Do one real action. For example, add a product to cart. Do not click around randomly.
- Check the web side. In web preview, find the event. Confirm the GA4 or Data Tag fired and sent to your server URL.
- Check the request in server preview. On the left you see incoming requests. Click one. Look at which Client claimed it.
- Check event data. Open the Event Data tab. Are
value,currency,transaction_id, email andevent_idthere? - Check outgoing requests. Click each fired tag. Look at the outgoing HTTP request and the response code. A
200means the platform accepted it. A400means bad data. - Confirm in the platform. Meta Test Events, TikTok Test Events, GA4 DebugView.
- Check Stape logs after publishing. In your Stape container, open Logs. Look for errors on live traffic over the next day.
Reading common errors
- Tag “fired” but platform shows nothing: look at the response body in the outgoing request. Meta usually tells you exactly what is wrong.
- No request in server preview at all: your web tag is not pointing to the server URL, or a blocker is stopping it.
- Request arrives but no tags fire: the trigger condition does not match. Check Client Name and Event Name.
- 400 errors in Stape logs: usually a missing or wrongly formatted field, like a currency code or a non-numeric value.
Mistakes to avoid
- Testing only in preview and never on production. Preview uses your session. Real users have consent banners, ad blockers and different devices.
- Not using a test event code in Meta. Without it, your tests mix with live data.
- Ignoring logs after launch. Set a reminder to check logs on day 1 and day 7.
What I tell clients
I send every client a short screen recording: event fired in web, received in server, accepted by the platform. It takes five minutes and builds more trust than any report. It also catches the problems before they do.
Bottom line
Trust the response code, not the green “fired” label. A tag can fire and still fail.
Source reading: Stape helpdesk