Case study · Meta Pixel & CAPI

Meta Pixel & Conversions API Lead Tracking with GA4 for Sayem Ads

Every contact form and WhatsApp enquiry reported to Meta from browser and server.

Client
Sayem Ads
Industry
Digital Marketing Services
Channel
Meta Ads
  • Meta Pixel
  • Conversions API
  • Server-side GTM
  • GA4 Lead Tracking
Sayem Ads Meta Pixel & CAPI
Sayem Ads web GTM container with browser and server Meta tags
01/ 13

Sayem Ads web GTM container with browser and server Meta tags

Setup architecture

Sayem Ads tracking architecture

How the setup in this project is connected, from the website to each platform.

About Sayem Ads

Sayem Ads is the website of Sayem Mahmud, a Google Ads specialist who helps eCommerce and service businesses grow with Google Ads and Merchant Center. The WordPress site generates leads through a contact form and a WhatsApp chat button.

Project overview

Sayem Ads needed reliable lead tracking for its own marketing: contact form submissions and WhatsApp enquiries had to reach Meta even when browser tracking is blocked, and the same actions had to show up in GA4 as lead events.

I set up the Meta Pixel with paired Conversions API events routed through a server-side GTM container, added custom listeners for Contact Form 7 and WhatsApp clicks, and sent scroll depth and YouTube video engagement to GA4. Everything was verified in GTM preview, GA4 DebugView, Meta Events Manager and Meta Pixel Helper.

Goals

  • Send PageView, form submissions, WhatsApp clicks and scroll depth to Meta from both the browser Pixel and the Conversions API
  • Deduplicate browser and server events so each lead is counted once
  • Track Contact Form 7 submissions as a lead event in GA4
  • Capture WhatsApp clicks, scroll depth and YouTube video engagement
  • Pass external_id and fbp for stronger advanced matching

Challenges

  • Lead forms built with Contact Form 7 do not push a ready-made conversion event
  • WhatsApp chat clicks leave the site and are easily missed
  • Browser-only Pixel events are lost to ad blockers and tracking prevention
  • Meta and GA4 needed the same lead events under consistent names

Strategy

I used a hybrid setup: each browser Meta Pixel tag has a matching "Fb - Server" GA4 event tag that sends the same interaction to a server-side GTM container, where a Conversions API tag forwards it to Meta with a shared event ID for deduplication. Custom HTML listeners turn Contact Form 7 submissions and WhatsApp clicks into data layer events, so one trigger feeds Meta and GA4 at the same time.

What I implemented

Web GTM container

  • Meta Pixel base code plus browser tags for cf7submission, WhatsApp Click and Scroll Depth
  • Matching "Fb - Server" GA4 event tags for cf7submission, WhatsApp Click, Scroll Depth and YouTube Video
  • Custom HTML listeners for Contact Form 7 submissions and WhatsApp clicks
  • GA4 config tag routing hits to the server container, plus Conversion Linker

Server-side GTM

  • Facebook CAPI tag fired from the incoming GA4 stream
  • GA4 tag forwarding the same events to Google Analytics
  • Conversion Linker on all requests

GA4 lead & engagement tracking

  • cf7submission and WhatsApp_Click as lead events
  • form_start, scroll_25 to scroll_90 and video_progress for engagement
  • Checked event by event in GA4 DebugView

QA in Meta Events Manager & Pixel Helper

  • PageView, cf7submission, WhatsApp_Click and scroll events received from browser and server
  • Server copies confirmed as deduplicated against the browser Pixel
  • Pixel Helper confirmed external_id advanced matching and event IDs on every event

Tools used

  • Meta Pixel
  • Meta Conversions API
  • Google Tag Manager (Web & Server)
  • Google Analytics 4
  • Contact Form 7
  • Meta Pixel Helper

Results

  • All 12 web GTM tags fired in preview, with no tags left unfired
  • Server GTM preview showed the Facebook CAPI tag and GA4 tag each firing 42 times
  • PageView, cf7submission and WhatsApp_Click received from browser and server in Meta, with duplicates removed
  • GA4 DebugView recorded cf7submission, WhatsApp_Click, form_start, scroll and video_progress events
  • Meta Pixel Helper showed every event sent with external_id advanced matching and a unique event ID

Want results like Sayem Ads?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.