User Data Parameters

User data parameters are the identity / PII fields FunnelTrack ships to ad platforms to drive conversion match quality— email, phone, name, address, IP, user agent, and platform click IDs like Meta's fbc / fbp and Google's gclid. Higher match quality means more of your conversions get attributed back to the right ad. FunnelTrack handles about 90% of this automatically; this page covers what's automatic, what gets hashed, and the handful of cases where you'll want to override the defaults manually.

What FunnelTrack handles automatically

The full identity pipeline — extraction, capture, resolution, hashing — runs without configuration on every event.

A) Auto-extraction from source events

Form sources (Gravity Forms, Jotform, Unbounce, HighLevel, ClickFunnels 2.0) auto-detect email, phone, first_name, last_name, full_name (auto-split into first + last), and address fields using two passes:

  • Exact field-name match — e.g. Unbounce maps email, phone / telephone, first_name, last_name, name (auto-split on first space), city, state / province, country, zip_code.
  • Value-pattern fallback — any field with an email-shaped value auto-maps to email; any 10–20 digit phone-shaped value auto-maps to phone. Catches custom field names like contact_email or mobile_number.
  • Calendly — pulls email, name, and phone (from text_reminder_number) from the standard payload paths.
  • HighLevel — pulls from top-level fields plus order.customer.* paths for purchase events.

B) Auto-capture from the FunnelTrack pixel

  • IP address — IPv6-preferred (via api64.ipify.org) with an IPv4 fallback that's used to match webhook-only sources back to a pixel session.
  • User agent — captured from the browser on every pageview.
  • Click IDsfbclid (auto-formatted and persisted as _fbc per Meta's spec), gclid, wbraid, gbraid, ttclid, rdt_cid, msclkid, sccid (Snapchat), oppref, li_fat_id.
  • Platform first-party cookies _fbc, _fbp, _gcl_aw, _gcl_gb, _gcl_gs, _ttp, _epik, li_fat_id.
  • GA4 client_id and session_id — parsed from the _ga cookie (client_id) and every _ga_<container> cookie (per-container session_id).
  • All 9 UTM parametersutm_source, utm_medium, utm_campaign, utm_content, utm_term, utm_id, utm_source_platform, utm_marketing_tactic, utm_creative_format.
Server-side _fbc backstop
If the pixel hasn't had a chance to write the _fbc cookie before the first event (cookies blocked, server-rendered app, very fast bounce), the /api/collectendpoint derives it server-side from the URL's fbclidper Meta's format fb.<subdomain>.<time>.<fbclid>. You always get an _fbc shipped to Meta when an fbclid was present.

C) Identity-resolution waterfall

When a webhook event fires for a contact who doesn't arrive with a pixel session attached, FunnelTrack runs a multi-tier identity matcher to stitch them to the right visitor session — and therefore the right UTMs, click IDs, and platform cookies. The waterfall runs in this order, stopping at the first match:

  1. Direct session ID — when the source ships a pre-known pixel session ID (e.g. a hidden form field). 1:1 match, confidence 1.0.
  2. GA4 client_id direct match— when the source ships the visitor's GA4 client_id (HighLevel does this on every workflow webhook), match it against sessions.ga_client_id. 30-day lookback. Near-deterministic.
  3. Contact history match — match by email_hash or phone_hash against previously stitched contacts. Catches returning visitors and duplicate contact records.
  4. Fingerprint match SHA-256(IPv4 | user_agent) against pixel sessions that store the same hash. 2-hour window.
  5. IP-only match — raw IPv4 match for sources without a user agent (Jotform). 30-min lookback, falls back to a tighter 2-min window when ambiguous.
  6. Time-proximity match — if exactly one unresolved session was active in the last 60 seconds when the webhook arrives, link to it.

Once a match is found, the contact's full PII snapshot is attached to the event and forwarded into the dispatcher.

D) Hashing

  • Hashed (SHA-256) before dispatch — email, phone, first_name, last_name, city, state, zip, country, date_of_birth, gender, and external_id are hashed before being sent to Meta CAPI, Google Ads, TikTok, Snapchat, Reddit, Pinterest, OpenAI, LinkedIn, and Microsoft Ads.
  • Sent plaintext(per each platform's spec) — IP, user agent, fbc, fbp, gclid, and other click IDs.
  • Normalization runs before hashing— phone is digits-only (country code included, no +), email is lowercased + trimmed, state is reduced to the 2-char ANSI abbreviation, country to a 2-letter ISO 3166-1 alpha-2 code, and so on per each platform's rules.
  • Field-name translation per destination — Meta wants em / ph / fn / ln; GA4 wants sha256_email_address / sha256_phone_number; Google Ads wants emailAddress / phoneNumber (already hashed). FunnelTrack handles every translation automatically.

When to manually map user data

The handful of scenarios where the auto-pipeline needs a nudge.

  1. Your form collects identifiable info for multiple people. A B2B form with both "Your Email" and "Decision Maker Email" — auto-detection picks the first email-typed field it finds. If you want the decision maker's email going to your ad platforms instead, manually pick the right source field in User Data.
  2. Field names that don't match auto-detection AND values that aren't email/phone shaped. Rare, but it happens. Example: a custom CRM ships a subscriber_id field that should go to ad platforms as external_id(Meta's stable customer ID for cross-session matching). Map it manually.
  3. You want to send city / state / zip but the form only has a combined address field. Map the combined field to whichever canonical destination makes sense, or pre-split it on your form side before submission.
  4. Sending an external_id for cross-event matching (e.g. Stripe customer ID, your CRM contact ID, an auth user ID). Meta and Google use external_id heavily for Advanced Matching — adding it lifts match quality on returning buyers significantly.

How manual mapping works

One canonical FunnelTrack field name → fanned out per destination.

Canonical fields FunnelTrack accepts

Canonical fieldWhat ad platforms call itSent as
emailem / sha256_email_address / emailAddressSHA-256 (lowercased + trimmed first)
phoneph / sha256_phone_number / phoneNumberSHA-256 (digits-only normalized first)
first_namefn / sha256_first_name / hashed_first_nameSHA-256
last_nameln / sha256_last_name / hashed_last_nameSHA-256
cityct / address.citySHA-256 (Meta) / plaintext (GA4, Google Ads)
statest / address.regionSHA-256 (Meta) / plaintext (GA4, Google Ads)
zip_codezp / address.postal_codeSHA-256
countrycountrySHA-256 (Meta) / 2-letter ISO plaintext (others)
date_of_birthdbSHA-256 (YYYYMMDD normalized first)
gendergeSHA-256 (single lowercase initial)
external_idexternal_idSHA-256

Where to map

On any source → destination event card, expand the User Data section, click Add Mapping, pick the canonical field on the left (e.g. email), and pick the source field on the right (e.g. customData.decision_maker_email). Save the card and the mapping ships on every future event from that source-destination pair.

Per-platform coverage

What each destination accepts from FunnelTrack's identity pipeline.

FieldMetaGA4Google AdsTikTokSnapchatRedditPinterestMS AdsOpenAILinkedIn
email
phone
first_name
last_name
city / state / zipzip only
country
external_id
client_ip
user_agent
Click IDsfbc / fbpgclid / wbraid / gbraidttclidsccidrdt_cid_epikmsclkidli_fat_id
This is a guide, not promotional copy. Coverage reflects what each platform's dispatcher in FunnelTrack actually sends. Empty cells mean the platform's API either doesn't accept that field or FunnelTrack doesn't forward it.

Common questions

Do I need to hash user data before sending it to FunnelTrack?
No — FunnelTrack hashes everything before dispatch, applying each platform's field-specific normalization rules first. Send raw values; we'll handle the SHA-256.
What happens if my form doesn't collect email or phone?
The event still fires. Ad platforms accept IP, user agent, and click IDs as fallback match signals, but match quality is meaningfully lower without email or phone. If you can collect even one of them, do.
Will FunnelTrack send the same user data to every destination?
Yes — with each platform's field-name conventions and hashing rules applied automatically. Manual mappings you add to a specific destination's event card override the defaults on that card only; other destinations keep using the auto-extracted values.
How does FT match a webhook submission to my pixel-tracked session?
Six-tier identity waterfall (see Section C above). Most matches happen via fingerprint or contact-history; GA4 client_id is the most deterministic when the source supplies it (HighLevel does). You can see which method matched any given event in Usage Logs.
Can I opt out of sending user data fields?
Yes — remove the mapping from the User Data section on the event card. The event still fires without it. You can also override a single canonical field to a different source value on a per-card basis without affecting the other event cards.

Ready to configure user data?

Open your Integrations and add or override a User Data mapping on any source → destination event card.

Configure user data on a destination event →

Related concept

Event parameters (revenue, content_ids, order_id, custom business data) work differently. Read the companion guide.

Learn about Event Parameters →