Why a plugin instead of a hidden field on every form
You can put utm_source in a hidden field until someone rebuilds the form and forgets it, or until a visitor clicks an ad today and submits a week later with no params in the link. Then the lead shows as “direct” even though it came from a campaign.
The plugin stores params in a cookie, separately for first and last source, 30 days by default. First source stays first; last updates on each new visit. You see which ad brought them and which touch convinced them to write, which are not always the same.
Which forms it works with
The plugin works with any form on the site, whether built with Elementor, Contact Form 7, or something else. For each form we map which field is name, phone, and email. Fields that match CRM land on the lead; the rest stay in form data, visible in history.
If the site is not WordPress, you do not need the plugin: we wire the form straight to CRM. The result in CRM is the same.
What goes to CRM
At least one phone or email, otherwise CRM cannot recognize the person. Name, campaign, and the rest help but do not block sending. First and last visit UTM attach from the cookie when tracking is on.
We can exclude logged-in users and admins so your tests do not fill the funnel. The cookie does not replace marketing consent on the site, and tracking can be turned off in plugin settings.
The queue when CRM does not respond
A thank-you page does not prove the lead reached CRM. If the API fails at that moment, a form without a queue loses the lead. The plugin keeps it in a local queue and retries until it gets a response.
In WordPress admin you see the queue and log: which form, CRM response, remaining errors. A “duplicate” response is correct, not a failure: you prefer one record per person.
dataLayer event for Google Tag Manager
The plugin can push an event to dataLayer on submit for a Tag Manager tag. It is a separate switch, so you can leave it off if you do not need it.
A browser tag can be lost if the visitor closes the page or a blocker stops it. The CRM lead does not depend on it: it leaves from form data.
How the lead looks in CRM and what the plugin does not do
In CRM the person has source and campaign. Another form from the same phone or email does not create a second record; existing data is not overwritten. If the form asks for company id, you can map it and CRM can fill company details through RIVIL Firme.
The plugin does not replace a cookie banner and does not optimize ads. It delivers the lead with attribution. Statuses, Conversions API, and ROAS are configured in CRM. For booking, open slots, and reminders use the booking page in ERP.