Stop optimizing for pageviews

Business sites need lead events: form submits, phone taps, WhatsApp/Viber clicks, booked calls. This recipe set matches what I deploy for Gurkha Technology clients.

Recipe 1: Thank-you page form conversion

  1. GTM trigger: Page View — URL contains /thank-you
  2. GA4 event tag: generate_lead with method: form
  3. Mark as conversion in GA4 Admin
  1. Trigger: Click — Click URL matches RegEx ^tel:
  2. Event: phone_call_click with link_url variable
  3. Optional: Google Ads conversion tag fired on same trigger

Recipe 3: WhatsApp / Viber clicks

Nepali SMEs often convert on messaging apps — track them explicitly.

  1. Trigger: Click URL contains wa.me OR api.whatsapp.com OR viber://
  2. Event: messaging_app_click with parameter app: whatsapp|viber
  3. Compare messaging vs form volume by landing page in Explorations

Recipe 4: B2B demo form (enhanced)

Builds on our GA4 demo form GTM guide:

  • Hidden fields for UTM persistence
  • form_start on first field focus
  • form_submit only on successful POST (not button click)

Validation checklist

  • GTM Preview shows tags firing
  • GA4 DebugView receives events
  • Conversions marked in GA4
  • Google Ads imported (if running ads)
  • 24h real-time test from mobile

Recipe 5: Scroll depth on long Nepal landing pages

  1. Trigger: Scroll Depth — 75% vertical
  2. Event: scroll_75 with page_path
  3. Use in Explorations to compare content quality vs bounce

Recipe 6: Outbound email / mailto clicks

  1. Trigger: Click URL matches ^mailto:
  2. Event: email_click

GTM container export discipline

Export container JSON after every production change. Store in private repo — rollback in minutes when a tag breaks production.

GA4 and Google Tag Manager conversion tracking setup

Image: Arjan KC media library — GA4 guide Nepal.

If serving EU traffic, implement Consent Mode v2 before running remarketing. Nepal-only campaigns may still use basic cookie banners for trust.

Debugging failed events

Symptom Likely cause
Events in Preview but not GA4 Wrong measurement ID
Duplicate events Tag + gtag double-fire
WhatsApp clicks missing Link uses JS redirect not <a href>

GTM container setup (foundation)

Before recipes, ensure the base container is correct — most “broken tracking” is foundation, not trigger logic.

Step 1: Create GA4 property + web data stream

  1. GA4 Admin → Create property → Web stream
  2. Copy Measurement ID (G-XXXXXXXX)
  3. Enable Enhanced measurement (file downloads, outbound clicks — optional keep on)

Step 2: Install GTM

  1. Create container (Web)
  2. Paste GTM snippet in site <head> and <body> — WordPress via plugin or theme header
  3. For static/Jekyll sites, inject in layout template (our CI/CD pattern)

Step 3: GA4 Configuration tag

  1. Tag type: Google Analytics: GA4 Configuration
  2. Measurement ID: your G- ID
  3. Trigger: All Pages
  4. Publish container

Verify in Tag Assistant / GTM Preview → Tags Fired on homepage.

Step 4: Mark conversions

GA4 Admin → Events → toggle Mark as conversion on: generate_lead, phone_call_click, messaging_app_click, purchase (e-commerce)

Import to Google Ads if running paid search — CPC benchmarks mean wasted spend without conversion import.

Recipe 7: Contact form with validation-safe tracking

Nepali SME sites often use Contact Form 7, WPForms, or custom HTML forms.

Anti-pattern: firing conversion on submit button click — fires when required fields empty.

Pattern A — thank-you page (recommended):

  1. Form redirects to /thank-you/ on success only
  2. Trigger: Page View — Page Path equals /thank-you/
  3. Tag: GA4 Event generate_lead with parameters:
    • method: contact_form
    • page_location:
  4. Optional: Google Ads conversion tag on same trigger

Pattern B — AJAX success callback:

  1. Push to dataLayer on successful API response:
dataLayer.push({
  event: 'form_submit_success',
  form_name: 'contact_main',
});
  1. Trigger: Custom Event form_submit_success
  2. Tag: GA4 Event generate_lead

Recipe 8: Nepali messaging apps (detailed)

Many leads convert on WhatsApp, Viber, or Messenger — not forms. Track each channel separately.

Variables

  • Built-in Click URL variable enabled
  • Optional REGEX variable for app type:
 matches RegEx (wa.me|api.whatsapp.com) → whatsapp
 contains viber:// → viber

Triggers

Trigger name Condition
WhatsApp click Click URL matches RegEx wa.me | api.whatsapp.com
Viber click Click URL contains viber://
Messenger click Click URL contains m.me or fb.me

Tags

Event name: messaging_app_click
Parameters: app: whatsapp|viber|messenger, link_url:

Analysis

Exploration: Landing page × messaging_app_click vs generate_lead — if messaging dominates, optimize bio copy and auto-reply speed, not form length.

Common on hotel/trekking sites and local service businesses (home services guide).

Recipe 9: WooCommerce purchase (e-commerce)

For Nepali stores with wallet checkout:

  1. Enable GA4 enhanced ecommerce or use plugin (GTM4WP, etc.)
  2. Events: view_item, add_to_cart, begin_checkout, purchase
  3. Pass currency: NPR and value on purchase
  4. Debug wallet redirect — purchase must fire on thank-you/order-received URL

Cross-reference payment gateway guide and e-commerce guide.

Recipe 10: Google Ads offline conversion import (calls)

When click-to-call dominates:

  1. Fire phone_call_click in GA4 (Recipe 2)
  2. Optionally capture GCLID in session storage on landing
  3. Upload offline conversions or use Google Ads call reporting

For SMEs without CRM, even call click proxy metric beats optimizing for bounce rate.

UTM discipline (campaign reporting)

Parameter Example Rule
utm_source google, facebook Platform
utm_medium cpc, social Channel type
utm_campaign dashain_sale_2026 Lowercase, no spaces
utm_content hero_banner_a Creative variant

Persist UTMs to hidden form fields on landing pages for lead source attribution in CRM.

QA runbook (pre-launch)

Step Action Pass criteria
1 GTM Preview on staging Config tag fires all pages
2 Submit test form generate_lead in DebugView
3 Tap tel: link on Android/iOS phone_call_click fires
4 Tap WhatsApp float button messaging_app_click fires
5 Complete test purchase (NPR 10) purchase with value
6 Check GA4 Realtime Events within 30 seconds
7 Ads → Conversions Imported events active
8 Wait 24h Explorations populate

Document results in client handover PDF — part of digital marketing pricing deliverables for analytics setup lines.

Common Nepali site mistakes

  1. Meta refresh redirects instead of HTTP 301 — breaks referrer and sometimes tags (static site note)
  2. Caching entire site including thank-you page — never cache order confirmation
  3. Multiple GA properties — marketing agency + old UA + client GA4 triple-firing
  4. Floating WhatsApp implemented as onclick without <a href> — untrackable
  5. Consent banner blocking tags before consent on Nepal-only campaigns — often overkill but test if running EU remarketing

Training resources

University labs align with these recipes — digital marketing notes · career guide for students building portfolio analytics cases.

Server-side tracking (when client needs it)

Browser blocking and iOS limitations push some accounts toward:

  • GA4 Measurement Protocol from server on form POST
  • Meta Conversions API parallel to pixel

For typical Nepali SME lead-gen sites, well-implemented GTM client-side is sufficient to start. Add server-side when ad platform diagnostics show >20% event gap — common at scale on e-commerce (e-commerce guide).

Cross-domain tracking (marketing + shop subdomain)

If marketing site is static and shop is WooCommerce subdomain:

  1. GA4 Admin → Data streams → Configure domains
  2. Add www.example.com.np and shop.example.com.np
  3. Linker parameters on cross-links
  4. Single GTM container or linked containers with shared dataLayer convention

Looker Studio starter dashboard (lead-gen)

Dimensions/metrics to template for clients:

Widget Source
Sessions by channel GA4 default channel group
Conversions by type generate_lead, messaging clicks
Top landing pages Landing page + sessions
Device split Mobile vs desktop (Nepal mobile-heavy)
City Kathmandu vs national

Export PDF monthly — automation via n8n + GA4 API in agency stack.

Event naming convention (team standard)

Use snake_case, stable names:

  • generate_lead (GA4 recommended)
  • phone_call_click
  • messaging_app_click
  • form_start / form_submit
  • scroll_75

Document in client wiki — prevents duplicate events when two freelancers edit GTM.

Privacy and Nepali-only traffic

Most local campaigns target Nepal only — full GDPR stack optional unless remarketing to EU diaspora. Still use:

  • Clear privacy link
  • No PII in URL parameters
  • Hashed email only if using advanced matching with consent

Hands-on lab (30 minutes)

  1. Create GTM container on personal WordPress or GitHub Pages test site
  2. Implement Recipe 2 (tel:) and Recipe 3 (WhatsApp)
  3. Submit form to thank-you page (Recipe 1)
  4. Screenshot DebugView — portfolio ready

Pairs with Google vs Meta channel choice once tracking works.

Recipe 11: File download (PDF brochure / rate card)

Nepali B2B sites often gate PDFs:

  1. Trigger: Click — Click URL matches RegEx \.pdf$
  2. Event: file_download with file_name, link_url
  3. Mark conversion if PDF is primary CTA (consultancies, trekking packages)

Track clicks to booking engines or partner domains:

  1. Trigger: Click — Click URL does not contain your domain
  2. Event: outbound_click
  3. Filter exceptions for social/wallet domains already tracked

Google Tag Manager variables cheat sheet

Variable type Use in Nepal context
Click URL tel:, wa.me, mailto:
Page Path thank-you, order-received
Referrer Diagnose Facebook in-app browser
Custom JS variable Read dataLayer form_name
Lookup table Map city landing pages to region

Enable built-in click variables before debugging “trigger not firing.”

GA4 Explorations for lead-gen clients

Build these monthly:

  1. Funnel: session → landing → form_start → generate_lead
  2. Path exploration: messaging_app_click → return visit → generate_lead
  3. Segment overlap: Google CPC vs Meta paid — which assists conversion

Share in Looker — template in agency automation stack.

WordPress-specific GTM install notes

  • Use GTM plugin or insert in header/footer — not both
  • Exclude caching on admin and preview
  • CF7: use redirect on success, not AJAX-only without dataLayer push
  • WooCommerce: use GTM4WP plugin; test wallet return URLs

Static/Jekyll-specific notes

  • Inject GTM in _includes/head.html equivalent
  • Thank-you page must be real URL, not JS modal
  • GitHub Actions deploy — verify GTM survives build

Ads platform linking checklist

Platform Requirement
Google Ads Link GA4, import conversions, enable auto-tagging
Meta Pixel + CAPI optional, UTM on ads
Both Same thank-you/event names for comparison

Without linking, optimization stays on clicks — expensive in Kathmandu CPC markets (benchmarks).

Pre-launch tracking audit (agency deliverable)

Charge NPR 10,000–20,000 for this audit — prevents wasted ad spend:

Check Pass/Fail
Single GTM container per site  
No duplicate GA4 config tags  
Conversions marked in GA4  
Thank-you only on successful submit  
Mobile WhatsApp float trackable  
Real-time test documented  
Client has Admin access GA4/GTM  

Deliver PDF with screenshots — reusable template across clients (pricing guide).

Attribution windows and Nepali sales cycles

B2B services (law, consulting, trekking quotes) have 7–30 day consideration:

  • Enable GA4 data-driven attribution when volume allows
  • Compare last-click vs data-driven in Explorations
  • Import messaging clicks as micro-conversions if sales finish on WhatsApp

Do not kill Meta campaigns at day 3 — common mistake for high-consideration Nepal verticals (law firm playbook).

If campaigns target Nepali diaspora in UK/EU/US:

  • Implement Consent Mode v2 before Meta/Google remarketing
  • Document consent banner behavior in GTM
  • Nepal-only domestic campaigns: lighter touch, but disclose cookies for trust

Enhanced measurement toggles (GA4)

Review Admin → Data streams → Enhanced measurement:

  • Page views: on
  • Outbound clicks: on (or custom for control)
  • Site search: on if internal search exists
  • Form interactions: optional — prefer custom form events for accuracy

Enhanced form events can duplicate custom GTM events — test before enabling both.

Client training session (1 hour agenda)

  1. Show GTM Preview live (5 min)
  2. Walk GA4 Realtime (5 min)
  3. Explain difference pageview vs conversion (10 min)
  4. Demo WhatsApp click test on mobile (10 min)
  5. Show monthly Looker PDF they will receive (15 min)
  6. Q&A — “why did last month drop?” (15 min)

Recorded Loom for stakeholders who miss call — reduces support tickets.

FAQ

How long until conversions show in Google Ads?
Often 24–48 hours after GA4 import; allow 7 days for stable bidding.

Should I track every button click?
No — track business outcomes (lead, call, message, purchase). Noise obscures decisions.

Can one GTM container serve multiple domains?
Yes with cross-domain configuration — document in client handover.

Recipe 13: Newsletter signup (email capture)

  1. Trigger: Form submit or thank-you /subscribed/
  2. Event: sign_up with method: newsletter
  3. Optional: Meta Lead event if running lead ads

Nepali SMEs building owned audiences before marketplace dependency — ties to e-commerce retention.

Recipe 14: Video engagement (YouTube embed)

  1. Trigger: YouTube video trigger — progress 50% and 100%
  2. Event: video_progress with percent parameter
  3. Use to compare explainer vs testimonial performance on landing pages