# How to track lead source in FormAssembly

Bring marketing attribution into FormAssembly without compromising compliance. Every submission still flows where it always did, just with the source and campaign attached.

Source: https://sourceloop.ai/help/track-lead-source-in-formassembly/
Updated: 2026-05-28

---

FormAssembly sits at the enterprise end of the form-builder market, the choice when forms touch regulated data, Salesforce, or compliance-heavy workflows. The compliance and routing story is well-handled. The marketing-attribution story isn't, you can see what was submitted, never how the submitter arrived. SourceLoop adds that layer without touching FormAssembly's plumbing.

Three steps, around ten minutes, attribution flowing on every form afterwards.

## What SourceLoop captures from FormAssembly

For each FormAssembly submission, SourceLoop attaches:

- **The visitor's acquisition channel** (organic, paid, referral, social, direct)
- **UTM parameters** parsed from the landing URL
- **Pages visited** in chronological order before submission
- **Total time on site** ahead of the conversion
- **Visit count** before the lead finally submitted
- **Email + name** read from the FormAssembly fields
- **First-touch landing page** of the visitor's history
- **Source of the converting session** specifically
- **Device type, country, browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **Edit access** to the public page where you embed your FormAssembly form
- A **FormAssembly account** with a form configured to embed via the JavaScript snippet

## Step 1: Install SourceLoop's tracking snippet

Inside SourceLoop, click **Setup -> Tracking code** in the sidebar and copy the snippet shown.

![SourceLoop Setup page with the tracking code snippet ready to copy](/help/screenshots/sourceloop-tracking-code-script.png)

Add it to your marketing site's `<head>`. WordPress: header-injection plugin or `header.php`. Marketing-cloud-style CMS (Adobe, Sitecore, Drupal): global template / layout. Webflow / Framer: site-level Custom Code. Tag manager: an All Pages tag.

The snippet should run on every public-facing page where a FormAssembly form might appear.

## Step 2: Embed FormAssembly with the JavaScript embed on a tracked page

In FormAssembly, open your form, click **Publish** and choose the JavaScript embed (not the iframe). Copy the snippet and paste it into the page where your form should appear, alongside the SourceLoop snippet from step 1.

> **Hosted FormAssembly URLs and iframe embeds reduce attribution accuracy**
> A direct FormAssembly hosted URL (a link straight to `tfaforms.com/...`) skips your marketing site entirely, so SourceLoop never sees the visitor. Iframe embeds isolate the form from your page's tracking context, which can also break attribution. The JavaScript embed on a page of your own site is the cleanest path.

## Step 3: Run a verification submission

Visit the form's host page in an **incognito tab** with `?utm_source=test&utm_medium=verify&utm_campaign=formassembly-check` appended to the URL. Submit a test entry using an email you can check.

Within seconds, the lead should appear in the **Contacts Hub** in SourceLoop with the three test UTM values attached.

## Where to see FormAssembly submissions in SourceLoop

### Contacts Hub

Each FormAssembly submission becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Drill into a contact for the full timeline, every page visited, every session, every campaign that touched the lead.

![SourceLoop Contacts Hub showing a FormAssembly submission with the lead's full journey](/help/screenshots/sourceloop-lead-journey-demo.webp)

### Attribution dashboard

For executive reporting, [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups FormAssembly submissions by source, medium, and campaign. Useful for justifying marketing spend at quarterly reviews.

![SourceLoop attribution dashboard with FormAssembly submissions grouped by source and campaign](/help/screenshots/sourceloop-attribution-dashboard.webp)

### Funnel reports

Build a funnel at [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/) ending in "FormAssembly submission". Slice by source, content, or device to expose your highest-converting routes through the site.

![SourceLoop funnel report ending in a FormAssembly submission conversion step](/help/screenshots/sourceloop-funnel.png)

For paid campaigns, mirror FormAssembly submissions back to **Google Ads, Meta, and LinkedIn as offline conversions** so the bidding algorithms train on real qualified leads instead of clicks. [Connect your Google Ads account](/help/connect-google-ads/) walks through it.

## Frequently Asked Questions

### We use FormAssembly because of HIPAA / GDPR compliance. Does adding SourceLoop affect that?

No. FormAssembly's compliance posture (HIPAA, GDPR, FERPA, etc.) covers how it stores and routes form data. SourceLoop runs on your marketing site, capturing visitor session metadata for non-PHI attribution purposes. The two systems don't share infrastructure.

### I embed FormAssembly via JavaScript vs iframe. Does it matter?

The JavaScript embed is preferred because the form renders inline on your page, so attribution is straightforward. Iframe embeds isolate the form in a separate browsing context, which can make attribution less reliable depending on your iframe permissions.

### Our FormAssembly forms push directly to Salesforce, Microsoft Dynamics, or our data warehouse. Anything affected?

No. FormAssembly's downstream connectors continue to push data exactly where they always have. SourceLoop captures attribution independently in its own backend, no overlap with your CRM or warehouse routing.

### We use FormAssembly's Hidden Fields to pre-populate UTMs into Salesforce. Should we keep doing that?

You can. The two approaches complement each other, Hidden Fields put UTMs onto the Salesforce record, SourceLoop attaches the visitor's full pre-submission journey to a contact in its own dashboard. Use whichever surface the data needs to live in.

### Are FormAssembly's Workflow forms (multi-form processes) tracked?

The final submission of the workflow is what SourceLoop captures, since that's the conversion. Intermediate steps in the workflow don't create new contacts.
