# How to track lead source in JetFormBuilder

Pair every JetFormBuilder submission with proper marketing attribution so each lead arrives with its source, campaign, and complete visitor journey.

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

---

JetFormBuilder is the form layer of the Crocoblock Jet ecosystem, paired with JetEngine for dynamic content and Elementor / Gutenberg for the front-end, it's the form plugin many developer-friendly WordPress sites pick when they need more than a vanilla contact form. Marketing attribution isn't on its feature list. SourceLoop fills that role without changing anything inside JetFormBuilder.

Three steps, under ten minutes total, with no JetFormBuilder configuration required.

## What SourceLoop captures from JetFormBuilder

For every JetFormBuilder submission, SourceLoop attaches:

- **Acquisition channel** of the visitor (organic, paid, social, referral)
- **UTM parameter set** from the landing URL
- **Page-by-page browsing path** before submission
- **Time on site** ahead of the conversion
- **Repeat-visit count** before the lead converted
- **Email + name** read from the JetFormBuilder fields
- **First-touch landing page** of the visitor's history
- **Source of the converting session** specifically
- **Device, country, browser**

## Before you start

You'll need:

- A **SourceLoop workspace** ([free trial](https://app.sourceloop.ai/sign-up))
- **WordPress admin** access (or another way to edit `<head>` markup)
- A **JetFormBuilder** form embedded on a published WordPress page

## Step 1: Install SourceLoop's tracking snippet

From SourceLoop, head to **Setup -> Tracking code** in the left sidebar and copy the snippet.

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

Drop the snippet into the `<head>` of your WordPress site:

- Header-injection plugin (Insert Headers and Footers, WPCode)
- Active theme's `header.php` immediately before `</head>`
- Crocoblock JetThemeCore has a header-script slot if you're using the Jet theme stack
- Tag manager firing on All Pages

The snippet must run on every page that hosts a JetFormBuilder form.

## Step 2: Confirm your form is on a published page

JetFormBuilder doesn't need any per-form switch flipped. Once the snippet loads site-wide, every JetFormBuilder form on every published page is automatically attributable.

Quick verification:

- The form is on a **published** page or post
- The form **collects an email address** (SourceLoop uses email as the lead key)
- Crocoblock's performance optimisations aren't deferring SourceLoop past the form's submit handler

> **JetFormBuilder forms on draft or private pages aren't attributable**
> Drafts, password-protected pages, and unpublished posts typically don't expose the SourceLoop snippet to anonymous visitors. Submissions on those pages reach JetFormBuilder but show up in SourceLoop without a marketing source.

## Step 3: Submit a test entry

Open your form's host page in an **incognito tab** with `?utm_source=test&utm_medium=verify&utm_campaign=jetform-check` glued onto the URL. Submit a real entry using an email you control.

Within seconds, the lead should appear at the top of the **Contacts Hub** in SourceLoop with the three test UTM values stamped on the record.

## Where to see JetFormBuilder submissions in SourceLoop

### Contacts Hub

Each JetFormBuilder submission becomes a contact row at [app.sourceloop.ai/contacts](https://app.sourceloop.ai/contacts). Open a contact to see the visitor's complete pre-submission browsing timeline.

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

### Attribution dashboard

For the rollup, [app.sourceloop.ai/dashboards/traffic](https://app.sourceloop.ai/dashboards/traffic) groups JetFormBuilder submissions by source, medium, and campaign so you can see at a glance which channels actually convert.

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

### Funnel reports

In [app.sourceloop.ai/funnels](https://app.sourceloop.ai/funnels/), build a funnel ending in "JetFormBuilder submission". Slice by source, content, or device to find your highest-converting routes.

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

For paid campaigns, mirror JetFormBuilder submissions back to **Google Ads, Meta, and LinkedIn as offline conversions** so the auction algorithms train on real form fills, not just clicks. [Connect your Google Ads account](/help/connect-google-ads/) covers the setup.

## Frequently Asked Questions

### Does this work with the free JetFormBuilder plugin or only Pro?

Both. SourceLoop runs in the browser and doesn't depend on JetFormBuilder Pro add-ons or any specific Crocoblock feature gate.

### I use JetFormBuilder with JetEngine for custom post creation. Will lead attribution still be captured?

Yes. JetEngine continues to handle the CRUD side, post creation, custom field updates, frontend manipulation, on its own. SourceLoop attaches attribution to the submission event in parallel, completely separate from the JetEngine workflow.

### Are JetFormBuilder's payment fields (Stripe, PayPal) compatible?

Yes. Once the payment completes and JetFormBuilder records the submission, SourceLoop attaches attribution to the lead. The payment flow runs inside JetFormBuilder, unaffected.

### My JetFormBuilder form is inside an Elementor or Bricks page. Does that matter?

No. The page builder you use to lay out the form is irrelevant. As long as the page loads the SourceLoop snippet, attribution attaches to the submission.

### Will my JetFormBuilder webhooks, MailChimp, and ActiveCampaign actions still fire?

Yes. JetFormBuilder's post-submit actions continue to run normally. SourceLoop saves an attribution-rich copy of the lead on its end without interfering with your existing automations.
