Guides / External forms
WordPress, Webflow, Shopify, custom-built — if a CRM form is embedded outside your CRM-hosted pages, attribution normally dies there. Two small steps keep it alive.
⏱ About 3 minutes per siteAdd this to the site's header, footer code area, or tag manager — anywhere it loads on every page:
It's ~3 KB, loads async (zero effect on page speed), and immediately starts capturing fbclid, gclid, ttclid and UTMs — persisting them first-party for 90 days so attribution survives the visitor browsing around before converting.
Open the form in your CRM's form builder. In the fields panel, switch to the custom fields tab (the app created these at install), and drag these in as hidden fields:
ps_fbclid, ps_fbc, ps_captured_at — alwaysps_gclid — if you run Google Ads; ps_ttclid — TikTok; ps_utm_source — nice for reportingThe script fills them silently inside the embed. Visitors never see them; every submission arrives with its click history attached.
Visit the page as yoursite.com/page?fbclid=TEST123, submit the form with a throwaway email, then open the new contact in your CRM — the ps_fbclid field should read TEST123.
Forgot the hidden fields on some form? There's a net under you: when a visitor submits any form on a page running our script, we also capture their (privacy-hashed) email and click IDs directly — and reunite them with the contact when it appears. Hidden fields are still the most robust path; the net is for the forms you missed. Forms on CRM-hosted funnels and websites need none of this — they're captured automatically.
Pipeline Signals · dedup, retries, expiry windows and consent flags handled automatically