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_emailormobile_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 IDs —
fbclid(auto-formatted and persisted as_fbcper 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
_gacookie (client_id) and every_ga_<container>cookie (per-container session_id). - •All 9 UTM parameters —
utm_source,utm_medium,utm_campaign,utm_content,utm_term,utm_id,utm_source_platform,utm_marketing_tactic,utm_creative_format.
_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:
- 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.
- GA4 client_id direct match— when the source ships the visitor's GA4
client_id(HighLevel does this on every workflow webhook), match it againstsessions.ga_client_id. 30-day lookback. Near-deterministic. - Contact history match — match by
email_hashorphone_hashagainst previously stitched contacts. Catches returning visitors and duplicate contact records. - Fingerprint match —
SHA-256(IPv4 | user_agent)against pixel sessions that store the same hash. 2-hour window. - 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.
- 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 wantssha256_email_address/sha256_phone_number; Google Ads wantsemailAddress/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.
- 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.
- 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_idfield that should go to ad platforms asexternal_id(Meta's stable customer ID for cross-session matching). Map it manually. - You want to send city / state / zip but the form only has a combined
addressfield. Map the combined field to whichever canonical destination makes sense, or pre-split it on your form side before submission. - Sending an
external_idfor 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 field | What ad platforms call it | Sent as |
|---|---|---|
email | em / sha256_email_address / emailAddress | SHA-256 (lowercased + trimmed first) |
phone | ph / sha256_phone_number / phoneNumber | SHA-256 (digits-only normalized first) |
first_name | fn / sha256_first_name / hashed_first_name | SHA-256 |
last_name | ln / sha256_last_name / hashed_last_name | SHA-256 |
city | ct / address.city | SHA-256 (Meta) / plaintext (GA4, Google Ads) |
state | st / address.region | SHA-256 (Meta) / plaintext (GA4, Google Ads) |
zip_code | zp / address.postal_code | SHA-256 |
country | country | SHA-256 (Meta) / 2-letter ISO plaintext (others) |
date_of_birth | db | SHA-256 (YYYYMMDD normalized first) |
gender | ge | SHA-256 (single lowercase initial) |
external_id | external_id | SHA-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.
| Field | Meta | GA4 | Google Ads | TikTok | Snapchat | MS Ads | OpenAI | |||
|---|---|---|---|---|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| phone | ✓ | ✓ | ✓ | ✓ | ✓ | — | ✓ | ✓ | ✓ | ✓ |
| first_name | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | — | ✓ |
| last_name | ✓ | ✓ | ✓ | ✓ | ✓ | — | — | ✓ | — | ✓ |
| city / state / zip | ✓ | ✓ | ✓ | — | ✓ | — | — | — | zip only | — |
| country | ✓ | ✓ | — | ✓ | ✓ | — | — | — | ✓ | — |
| external_id | ✓ | — | — | ✓ | — | ✓ | — | ✓ | ✓ | — |
| client_ip | ✓ | — | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — |
| user_agent | ✓ | — | — | ✓ | ✓ | ✓ | ✓ | — | ✓ | — |
| Click IDs | fbc / fbp | — | gclid / wbraid / gbraid | ttclid | sccid | rdt_cid | _epik | msclkid | — | li_fat_id |
Common questions
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 →