How to track lead source in WS Form
WS Form runs everything inside the form. Lead Source adds everything that happened before it loaded: the campaign, the landing page and the pages read on the way.
- Channel
- Google Ads
- Campaign
- cyber-security-audit
- Landing page
- /managed-it
- WS Form
- Quote request
- /managed-it
- /blog/managed-it-costs
- /contact
WS Form submissions, with their story
Every field you designed, plus the channel, campaign and route behind it.
WS Form, no #query_var upkeep
No hidden field per form, no parameter on every link. Keep any you already built.
WS Form REST submits, credited
The default no-reload submit stays on. The lead names its source regardless.
WS Form covered in three steps
Header code once. Conditional logic and calculations run exactly as before.
WS Form submissions, with their story
WS Form passes over every field submitted, the form it came from and the page it sat on. Lead Source attaches the before. Source and channel, the campaign with its complete UTM set, click IDs, landing page and referrer, plus first visit, last visit and every page viewed on the way in.
- Your WS Form fields arrive exactly as designed.
- The campaign and its UTM values on that same lead.
- Pages read before the form, in order.
- Name
- Dana Okafor
- Form
- Quote request
- Page
- /contact
- Channel
- Google Ads
- Campaign
- cyber-security-audit
- Click ID
- gclid captured
- Landing page
- /managed-it
- Hidden fields
- one per value, per form
- Links
- parameters on each one
- Organic visits
- no parameters to read
- Hidden fields
- none
- Links
- as they are
- Organic visits
- Organic search
WS Form, no #query_var upkeep
WS Form can do the manual method properly. Hidden fields fill themselves from the URL with its #query_var variable, and the form passes the values onward. Because it can, people build it, then look after it across every form and every link that opens one, forever. Lead Source captures the visit separately, so there is no field to build and none to maintain.
- No hidden field per tracked value.
- Links and buttons left exactly as they are.
- Existing #query_var fields keep working beside it.
WS Form leads, first visit to final submit
Lead Source keeps both ends of every lead: the visit that brought them in and the visit that ended in a submission. Put money behind whichever campaign does the opening. Then back whichever does the closing.
WS Form REST submits, credited
Out of the box, WS Form submits through the WordPress REST API with no page reload. Leave it that way. A conversion tag that only fires on a thank-you page skips these, because no new page ever loads. Lead Source has already matched the visit, and the submission lands on it with both touches attached.
- Default submit settings stay on.
- No redirect to a thank-you page required.
- First and last touch on every REST submission.
- /blog/managed-it-costs
- /managed-it
- /contact
<script async src="https://app.leadsource.co/ft.js" data-site="YOUR_SITE_KEY"></script>
WS Form covered in three steps
- Install the free WPCode plugin from the WordPress plugin directory.
- Open Code Snippets, then Header and Footer, paste the Lead Source tracking code into the Header section and save.
- Clear your page cache. WS Form pages run the code from their next uncached load.
Inside WS Form, nothing moves: no field, no action, no logic to touch. The wider plugin list lives on WordPress lead tracking.
5-minute install · no card
How do I capture the campaign behind a WS Form submission?
Put the Lead Source tracking code in your site header through WPCode, then clear the page cache. From then on, each submission reaches Lead Source carrying its UTM values, click IDs, landing page and page journey, with no hidden field in sight.
Which WS Form submissions come in with partial attribution?
Submissions from a visitor Lead Source never saw before they submitted. Attribution on those is limited or unknown. Pages still served from an old cache join in once you clear it.
WS Form questions, answered.
Can I keep my existing hidden fields?
Yes. Lead Source does not read them or interfere with them.
Does it work with conditional logic and calculations?
Yes. Those run inside the form and nothing about them changes.
Do I need WS Form Pro?
No. The tracking code works whatever licence you run.
Track every WS Form submission. Free to start.
Your logic stays yours. Each submission arrives with the campaign and the pages behind it.
Start freeFree to start · no card









