Tag and route signups by marketing campaign
Each Fluent Forms signup is saved in FluentCRM, then a Router reads its UTM campaign. Spring Sale and Webinar signups get their own FluentCRM tag and a Slack alert for the team running that campaign.
Fluent Forms
FluentCRM
Slack7 steps Setup ~12 min Used on 452 sites Marketing Free to import

What this workflow does
When you run more than one campaign at once, signups pile into the same list and it gets hard to tell who came from where. This workflow reads the campaign from each submission, tags the contact for it, and tells the right people in Slack, so follow-up matches what the person signed up for.
Every new Fluent Forms entry on the chosen form starts a run. The FluentCRM step then creates the contact, or updates the existing one with the same email, using the form's email and name fields.
A Router checks a form field named utm_campaign. The Spring Sale route matches values that contain "spring"; the Webinar route matches values that contain "webinar". Each route adds tags to the contact by email and posts a Slack message naming the signup. The tags aren't chosen in the template, so pick one per route after import.
Your form needs a field that stores the campaign, such as a hidden field filled from the page URL. Capitals don't matter, so a value of Spring_Sale takes the Spring Sale route just as spring_sale does. A Router runs every route whose condition matches, so a campaign like spring-webinar would get both tags and both alerts; keep the two words apart in your campaign names. Signups with neither word are still saved in FluentCRM, with no tag and no alert.
Separate nurture for a seasonal sale
A shop tags everyone who signs up from its spring sale ads, then starts a FluentCRM email sequence for that tag with sale reminders.
Webinar registrations to the events team
A SaaS company's events team gets a Slack message for each webinar signup while sales leads from other campaigns stay out of their channel.
Comparing campaign signups
A marketer filters FluentCRM by each campaign tag at the end of the month to see how many contacts each campaign brought in.
How this workflow runs
What happens at each step once the workflow is on, and what you need before you import it.
Fluent Forms New Form SubmissionFires when someone submits the Fluent Forms form you choose. The email, name and utm_campaign field values are passed to FluentCRM and the Router.
FluentCRM Create or Update ContactCreates the contact in FluentCRM, or updates the one that already has this email, with the form's email and name as the first name.
Router 2 pathsChecks the utm_campaign field. Spring Sale runs when it contains "spring", Webinar when it contains "webinar". Every route that matches runs, and a value with neither word runs no route.
FluentCRM Add Tags to ContactOn the Spring Sale route, adds tags to the contact found by the form's email. Choose your spring campaign tag in this step after import.
Slack Send Channel MessageOn the Spring Sale route, posts a Slack message with the signup's name for the team running that sale. Select the channel when you set up this step.
FluentCRM Add Tags to ContactOn the Webinar route, adds tags to the same contact by email. Pick the webinar tag here; the template leaves it empty.
Slack Send Channel MessageOn the Webinar route, posts a Slack message with the signup's name so the webinar team knows someone registered. Set the channel for this alert as well.
What you need
- FlowMatticCore
- Fluent Forms PluginPlugin
- FluentCRM PluginPlugin
- Slack AccountAccount
After importing, map your own data. To keep the template universal, not every step is pre-filled. Open each step in the builder and connect your accounts and fields (channels, lists, sheets, recipients) before you switch the workflow on.
Make it yours
Changes worth making after you import it.
- Add a hidden field named utm_campaign to the Fluent Forms form and fill it from the page URL, then submit a test with ?utm_campaign=spring to check the route in Task History.
- Map the email or the full campaign value into each Slack message, so the team can look the contact up straight away.
- For a third campaign, add a route with its own contains condition and its own tag and Slack steps. Pick a word that doesn't appear in the other campaign names, since every matching route runs.
- If your Fluent Forms name field splits first and last name, check a test run and map the parts into the FluentCRM step's first and last name separately.
Questions about this workflow
What happens to a Fluent Forms signup from another campaign?
It is still created or updated in FluentCRM by the first action. No route matches, so it gets no campaign tag and no Slack message.
Can one signup get both the Spring Sale and the Webinar tag?
Yes, if its campaign value contains both words. The Router runs every route whose condition matches, so keep spring and webinar out of the same campaign name.
Does the UTM match care about upper and lower case?
No. The Router ignores upper and lower case, so Spring_Sale or WEBINAR-MAY still takes its route. What matters is that the value contains the word, so a campaign such as springfield-promo would also count as Spring Sale.
What if a campaign signup already exists in FluentCRM?
The Create or Update Contact step matches by email and updates that contact instead of adding a new one. The campaign tag is then added to the existing contact.
More Marketing Automation workflows
Other ready-to-import templates from the same category.
Import this workflow into your WordPress site
Download the JSON, import it from the Workflows screen and connect your accounts. Every run stays on your server, with no per-task fees.
30-day money-back guarantee Unlimited workflows and runs Self-hosted



