Back to Playbooks

Stop Guessing Which Trials to Call: Multi-touch Intent Scoring for SEO SaaS

Free

This playbook walks SEO SaaS teams through building a Spreeflo journey that combines web, email, and product events into a single multi-touch intent score, then alerts humans and tracks conversions so you always know which trials deserve a call.

Industry

Niche

Pattern

Loading sequence...

Your trial list is full, your MRR graph looks decent, and yet you still have that nagging feeling: “Which of these people is actually about to buy?”

For a typical SEO SaaS like BrieflySEO (5-person team, ~$60k MRR, heavy free-trial motion), that question decides where the founder spends their best hours. The sequence at the top of this page is the whole journey, end to end, for answering it with data instead of gut feel.

This playbook shows you how to build a multi-touch buying-signal journey in Spreeflo that:

  • Watches for several small signals (pricing visits, email clicks, high-value feature use)

  • Treats them as one composite “intent score”

  • Fires a clean internal handoff to a human when that score crosses the line

No scoring spreadsheet, no manual dashboard-watching, no “ping me when you see someone active” Slack messages. Just a system you set up once and let run.

The real problem: too many “interesting” trials, not enough time

If you run an SEO SaaS, you already know what high intent feels like:

  • Someone keeps checking rankings for the same domains

  • They visit pricing three times in a week

  • They click the “agency plans” email and explore your advanced features

The problem is not a lack of signals. It’s that those signals live in different tools and no one is aggregating them into a single “talk to them now” moment.

What usually happens:

  • Marketing is proud of trial numbers, but cannot tell you which 5 trials deserve a call today.

  • Sales or the founder flips between Stripe, product analytics, and email to guess where to focus.

  • High-intent trials slip by because nobody noticed that this one did three valuable things in the same week.

Spreeflo’s job here is simple: pull those behaviors into one place and turn them into a single internal alert at the right time.

What this journey does, in plain terms

At a high level, the journey you see above does three things:

  1. Listens for a specific combination of behaviors in the last 7 days.

  2. When all of them line up, it tags the contact as high-intent and alerts a human.

  3. It then watches quietly for a week to see whether that trial converts, tagging the outcome so you can track how accurate your alerts are.

All of this runs as a continuously running journey, not a one-off campaign. If you’re new to Spreeflo, journeys are the always-on automations inside campaigns and journeys that react to behavior rather than firing once.

Let’s walk it from the ground up.

Step 1: Capture the right buying signals

Before the journey can score anything, you need the raw signals streaming into Spreeflo. For an SEO SaaS, a solid starting set is:

  • Pricing-page intent: visits to /pricing or a similar URL

  • Marketing engagement: clicks on your trial nurture emails

  • Product value moments: using a high-value feature like generating a content brief or adding the first keyword set

Here’s how each of those arrives in Spreeflo.

1. Pricing-page visits

Install the Spreeflo SDK on your marketing site and app as described in web tracking and analytics. Once it’s live, page views are tracked automatically.

In the segment builder, you’ll be able to define rules like:

  • Page Visited URL contains /pricing

  • At least 2 times

  • In the last 7 days

You won’t send anything from your own code for this step; it’s all powered by the SDK and Spreeflo’s web analytics.

2. Email clicks

Any marketing email you send from Spreeflo is automatically tracked for delivered, opened, and clicked events. No extra instrumentation.

You might send a trial nurture sequence using the email builder with emails like “How agencies use BrieflySEO” or “Walkthrough: your first content brief.” Later, you’ll tell the journey to look for anyone who:

  • Clicked at least 1 marketing email

  • In the last 7 days

That is a clean, channel-agnostic sign that they are actually reading what you send.

3. High-value feature use

This is the product-side signal: the user did something inside your app that strongly correlates with revenue. For BrieflySEO, a good example would be a generated_content_brief event.

You can send that event to Spreeflo in two ways:

  • From the browser, using the Spreeflo SDK when a user successfully generates a brief.

  • From your backend, by POSTing to the events endpoint of the Spreeflo API whenever a job completes.

Either way, wire it so the event always includes the user’s email or a stable user ID that Spreeflo can map to a contact.

Once that’s in place, the segment builder can express:

  • Custom Event generated_content_brief

  • Triggered at least 1 time

  • In the last 7 days

Now you have three independent streams of signal landing on the same contact record in platform audiences. Time to combine them.

Step 2: Define “high intent” in one Criteria Match trigger

The journey starts with a Criteria Match trigger. This is where you define your composite intent score.

Inside that trigger, you use the embedded segment builder to express:

  • Condition group: AND

  • Email Activity: clicked at least 1 time in the last 7 days (any marketing email)

  • Page Visited: URL contains /pricing, at least 2 times in the last 7 days

  • Custom Event: generated_content_brief triggered at least 1 time in the last 7 days

  • Contact Tags: contact is not tagged with high-intent-alerted

A trial only enters the journey when all of that is true. That is your “intent score” in practice: three separate behaviors that together say “this person is serious.”

Two important configuration choices here:

  • Turn Re-enrollment on for the Criteria Match trigger. That makes it eligible to fire again later if you ever clear the tag and want to re-alert on a previously flagged account.

  • Use the “contact is not tagged with” rule for high-intent-alerted so that even with re-enrollment on, the same contact doesn’t generate duplicate alerts by lingering around the threshold.

This is how you capture detail on every trial and treat them differently without building a literal scoring engine. The scoring logic lives in one place, editable by anyone on the team.

Step 3: Node-by-node through the journey

With the trigger defined, let’s follow a single contact through the nodes you see in the sequence at the top.

Node 1: Criteria Match – multi-touch gatekeeper

We just covered this: when a trial’s email behavior, page visits, and product usage all line up, and they do not yet have the high-intent-alerted tag, they enter the journey.

Why this design:

  • You avoid noisy alerts based on a single behavior like “visited pricing once” or “clicked an email.”

  • You can tune each piece independently: change the page URL, increase the required frequency, shorten or lengthen the time window.

Changing these settings is as simple as editing the Criteria Match trigger. No code deploys, no SQL.

Node 2: Add Tag – freeze the snapshot

The first action is an Add Tag node that applies the high-intent-alerted tag to the contact.

Why it matters:

  • It prevents re-entry while they’re already flagged, thanks to the tag rule in the Criteria Match trigger.

  • It gives you a reusable segment of “contacts who ever tripped the high-intent score,” which is gold for later analysis.

  • It lets other journeys treat these people differently (for example, skip generic sales cadences once a rep is engaged).

Leave the “Force tag trigger” toggle off here unless you have separate Added Tag triggers you intentionally want to fire.

Node 3: Send Internal Email – the actual handoff

Next is a Send Internal Email action. This sends a message to a team inbox or directly to the founder and any sales rep.

Typical configuration:

  • To: sales@yourdomain.com or a shared inbox

  • Subject: “High-intent trial: {{ contact.company_name }} is heating up”

  • Body: Include key context with personalization variables:

  • Who they are (name, company, role if captured)

  • What they’ve done (pricing visits, last email clicked, last high-value feature used)

  • Suggested next action (e.g., “Send the case study for agencies”)

Because it’s an internal email, you can be opinionated: “If you only call one person today, call this one.” This is where the composite score earns its keep.

For a small team, this is how founder-led businesses win on leverage, not headcount. You’re not trying to work every trial; you’re working the five that matter.

Node 4: Wait Condition – give them room to self-serve

After the alert, you drop into a Wait Condition node.

Configuration:

  • Condition: contact has triggered a upgraded_plan custom event at least once (or is member of a “paying customers” segment)

  • Timeout: 7 days, in days

What this does:

  • If they upgrade within a week of your alert, the journey moves on as soon as that happens.

  • If they don’t, the timeout expires and the journey moves on anyway.

You don’t want to block the flow forever waiting for a conversion that may never come. The Wait Condition gives you a clean observation window.

Node 5: If/Else – converted vs not converted

Once the wait ends, you add an If/Else process node that uses the same “has upgraded” condition.

  • If branch: they converted during or before the window.

  • Else branch: they didn’t.

This explicit split is crucial for measurement. It’s how you’ll later calculate:

  • Composite-score conversion rate (what percent of high-intent alerts become customers)

  • Alert precision (what percent of alerts sales agrees were actually worth the time)

Nodes 6–7: Outcome tags and optional CRM sync

On the “converted” branch, add another Add Tag action that applies something like high-intent-converted.

On the “did not convert” branch, you might:

  • Add a tag such as high-intent-no-conversion-7d.

  • Optionally call a Webhook node (on Professional plan) to update a lead status field in your CRM or internal admin.

Why tags again:

  • You can build a simple segment later of “Flagged as high intent and converted” versus “Flagged as high intent and did not convert.” That ratio is your composite-score conversion rate.

  • You can exclude the “no conversion” group from future alerts for a while, or drop them into longer-term nurture.

At this point, the journey is done for that contact. All the heavy lifting now happens in your reporting.

Step 4: Tune your threshold with real numbers

Once this has been running for a few weeks, resist the urge to immediately add more sophistication. First, look at the two numbers that actually matter:

  1. Composite-score conversion rate - Among contacts with the high-intent-alerted tag, what percentage eventually pick a paid plan?

  2. Alert precision - Among those same contacts, how often does your sales or founder say “Yes, that was worth a call”?

You can get a surprisingly good read on both with just tags and segments:

  • Build a segment of high-intent-alerted AND high-intent-converted.

  • Compare its size to the total high-intent-alerted group.

If the conversion rate is low and reps complain about noise, tighten:

  • Require 3 pricing visits instead of 2.

  • Narrow the email-click condition to specific product emails.

  • Require 2 content briefs instead of 1.

If the conversion rate is very high but the total number of alerts feels too small, loosen the conditions slightly so you don’t miss promising accounts.

The point is that you now have a knob you can turn with the Criteria Match trigger, instead of a vague sense that “some trials are probably hot.”

Why this pattern fits SEO SaaS so well

SEO products generate lots of light, fragmented activity:

  • People log in to peek at rankings between meetings.

  • Agencies spin up extra projects for a client and then disappear.

  • Content teams test your brief generator on a single URL, then go quiet for a week while they write.

Individually, none of those actions justify a manual touch. Together, they tell a different story.

By consolidating them into one multi-touch intent score, you:

  • Capture a detailed picture of each trial and speak to them based on what they actually did, not what list they’re on.

  • Let a small team focus intensely on the few accounts where human attention moves the needle, instead of spreading thin across everyone.

That is the point of marketing automation for founder-led products: you build the system once, and it quietly directs your scarce time where it matters.

Bringing it back to your own product

If you take nothing else from this pattern, take this:

You do not need a fancy lead-scoring engine to get value from behavior-based sales handoffs. You need:

  • Three to five well-chosen behaviors that correlate with buying.

  • A single Criteria Match trigger that expresses them together.

  • One internal email that shows up exactly when those behaviors align.

Spreeflo gives you the rails to do that in one place: web activity, email engagement, product events via the Spreeflo API, and routing logic in journeys.

Set this up once, tune it over a month, and you’ll know every morning which SEO trials are actually ready for a human conversation. The rest of your list can stay on autopilot while you focus where it counts.