Skip to main content
When users submit lead forms directly on ad platforms (Meta, LinkedIn, Google Ads, TikTok, etc.), they never reach your website — meaning you lose the UTMs and client IDs that traditional analytics systems rely on. This guide explains how to recreate synthetic landing pages, generate a Google-style Client ID (UUID), and send both to your CRM and Google Analytics 4 (GA4) for unified attribution — even when no site visit occurs.

Overview of the process

For each incoming lead (from any ad platform):
  1. Capture ad metadata (campaign, ad, platform).
  2. Build a synthetic landing page URL using UTMs.
  3. Generate a Google Client ID (UUID).
  4. Send both fields (landing_page, google_client_id) to your CRM.
  5. Send a synthetic lead event to GA4 using the same client ID.
  6. Once implemented, SegmentStream can automatically stitch GA4 events, CRM leads, and campaign costs — even for leads collected inside the platforms without website visits.

Why this works

Even though the user never lands on your site, the synthetic landing page and UUID create a virtual session. This lets analytics systems register a visit with proper UTMs and connect it to your CRM record, providing a unified, channel-attributed view of lead generation performance.

Step 1: Generate a Google Client ID (UUID)

Instead of simulating GA4’s native client ID, simply use a UUID for clarity. This makes it evident that the session was artificially generated.
function generateCID() {
  return crypto.randomUUID();
}
Example output:
1d52c3ab-bb40-4b23-b7a2-9266a1c89d4b
Store this in your CRM as google_client_id, and reuse the same value when sending the GA4 event.

Step 2: Create synthetic landing pages

For each lead, construct a synthetic landing page URL in this format:
https://yourdomain.com/leadgen?utm_source={platform}&utm_medium=leadform&utm_campaign={campaign_name}&utm_content={ad_name}&cid={google_client_id}
This URL will never actually load; it simply represents where the lead would have landed if they visited your website.

Example

https://yourdomain.com/leadgen?utm_source=facebook&utm_medium=leadform&utm_campaign=Summer_Sale&utm_content=Ad_1&cid=1d52c3ab-bb40-4b23-b7a2-9266a1c89d4b
Store this in your CRM as the field landing_page.

Step 3: Send synthetic event to GA4

Use the GA4 Measurement Protocol endpoint:
https://www.google-analytics.com/mp/collect?measurement_id=G-XXXXXXX&api_secret=YOUR_SECRET
Payload example:
{
  "client_id": "1d52c3ab-bb40-4b23-b7a2-9266a1c89d4b",
  "events": [{
    "name": "lead_submission",
    "params": {
      "page_location": "https://yourdomain.com/leadgen?utm_source=facebook&utm_medium=leadform&utm_campaign=summer_sale&utm_content=ad_1",
      "source_platform": "facebook",
      "form_type": "lead_form"
    }
  }]
}

Step 4: Send data to CRM

Your CRM (HubSpot, Pipedrive, Salesforce, etc.) should include at least the following custom fields:
FieldDescription
landing_pageSynthetic URL with UTMs
google_client_idUUID shared with GA4
source_platformPlatform name (Meta, LinkedIn, TikTok, Google)
campaign_nameFrom ad metadata
ad_nameFrom ad metadata

Step 5: Platform-specific implementation

Meta (Facebook and Instagram Lead Ads)

Metadata available: ad_id, ad_name, adset_name, campaign_name, platform UTM formula:
utm_source=facebook&utm_medium=leadform&utm_campaign={{campaign_name}}&utm_content={{ad_name}}
Automation flow:
  1. Trigger: New Lead in Facebook Lead Ads
  2. Generate google_client_id (UUID)
  3. Build landing_page URL
  4. Send both to CRM
  5. Post synthetic lead_submission event to GA4 via webhook

LinkedIn Lead Gen Forms

Metadata available: campaignName, adGroupName, creativeId, leadGenFormName, platform UTM formula:
utm_source=linkedin&utm_medium=leadform&utm_campaign={{campaignName}}&utm_content={{creativeId}}
Automation flow:
  1. Trigger: New LinkedIn Lead
  2. Generate google_client_id
  3. Construct landing_page URL
  4. Push to CRM
  5. Send event to GA4

Metadata available: campaign_name, ad_group_name, form_id UTM formula:
utm_source=google&utm_medium=leadform&utm_campaign={{campaign_name}}&utm_content={{ad_group_name}}
Automation flow:
  1. Trigger: New Google Lead Form Submission
  2. Generate google_client_id
  3. Build synthetic landing_page URL
  4. Send to CRM
  5. Push to GA4

TikTok Instant Forms

Metadata available: campaign_name, adgroup_name, ad_name, platform UTM formula:
utm_source=tiktok&utm_medium=leadform&utm_campaign={{campaign_name}}&utm_content={{ad_name}}
Automation flow:
  1. Trigger: New TikTok Lead
  2. Generate google_client_id
  3. Build synthetic landing_page URL
  4. Send both to CRM
  5. Send GA4 event via webhook

Summary

StepAction
1Capture ad metadata
2Generate UUID as google_client_id
3Construct synthetic landing_page with UTMs
4Send to CRM
5Send synthetic GA4 event via Measurement Protocol
Once implemented, SegmentStream will automatically stitch these leads — aligning GA4 events, CRM leads, and ad spend data — allowing full visibility into campaign performance even when the user never visited your website.