Skip to main content
Intempt
Coming soon

CTA wording by account state

The main button reads differently for a first-time visitor, a returning one, someone mid-trial, a free-plan user and a paying customer, instead of one generic prompt.

Authored by Sid Chaudhary

Founder & CEO at Intempt

Agentic workflow

Coming soon

1 step Blu runs end to end. It drafts a plan and nothing runs until you approve it.

  1. 1

    Set up the five CTA variants

    Coming soon

    Blu builds a step

About this recipe

When to use it

A generic CTA ignores where someone actually is in their journey, and it costs conversions. Personalizing CTA copy by audience segment, "Start your free trial" for first-timers, "Continue where you left off" for returners, "Upgrade to Pro" for existing customers, has been cited at a 202% lift.

What it delivers

Personalizes CTA copy per audience segment (first-time visitor, returning visitor, existing customer), matching the ask to where each visitor actually stands.

How you prompt this

Describe the outcome in your own words and Blu Agent maps it to this recipe, or run it by name. It drafts a plan first and nothing runs until you approve it.

Tell Blu Agent what you want

“The main button reads differently for a first-time visitor, a returning one, someone mid-trial, a free-plan user and a paying customer, instead of one generic prompt.”

recipe.md preview

Built from the published catalog. Blu Agent's full step prompts load in your workspace when you run it.

Sign up to read the full recipe.md and run it with Blu Agent.

Sign up to see the full recipe

Inputs & outputs

What the recipe needs before it runs, and what it leaves in your workspace.

Inputs

  1. Nothing declared beyond an Intempt workspace. Blu asks for anything else it needs as it goes.

Outputs

    How the recipe runs

    Blu follows the steps in order and shows you each one before anything goes live.

    1. 01Set up the five CTA variantsCreate a CLIENT PERSONALIZATION on /experiences titled "Personalized CTA Copy". This personalization changes the primary CTA copy per audience segment. Each variant binds to a lifecycle audience. ═══ PATH 1: Top-level configuration ═══ Experience type: client_personalization Variants (each binds to a lifecycle/visitor-stage audience): - Control (audience = all (fallback): generic CTA) "Get started" - Variant B (audience = "First-time visitors / no account"): "Start your free trial" - Audience: Users.First seen within current session OR Users.First seen is null - AND Users has no Subscription started event - Variant C (audience = "Returning visitors / no account / no signup"): "Continue exploring [Brand]" - Audience: Users.First seen older than current session AND Users has no User created event - Variant D (audience = "Free trial users currently on trial"): "Continue your trial" - Audience: Users has User created event AND Users has no Subscription started event with billing_period set - Variant E (audience = "Active free plan users"): "Upgrade to Pro" - Audience: Users has Subscription started where Plan = "free" - Variant F (audience = "Paying customers"): "Open dashboard" - Audience: Users has Subscription started where Plan != "free" AND no Subscription canceled Targeting: - Pages: homepage "/", marketing pages, /pricing, /features - Devices: any - Display frequency: always Metrics (CRM/CDP): - Click on per CTA copy per audience (per-segment CTR is the headline metric) - Downstream conversion: signup, trial-to-paid, free-to-paid upgrade: measured per audience Schedule: continuous ═══ PATH 2: Variant HTML content (Visual Editor) ═══ Variant: Control (no DOM changes: fallback "Get started" remains) Variant: B (first-time visitors) HTML target selector: .primary-cta-button (the page's primary CTA) Replacement HTML: <button class="primary-cta" data-variant="b" data-audience="first-time" id="primary-cta"> Start your free trial </button> Variant: C (returning, no account) HTML target selector: .primary-cta-button Replacement HTML: <button class="primary-cta" data-variant="c" data-audience="returning" id="primary-cta"> Continue exploring [Brand] </button> Variant: D (trial users) HTML target selector: .primary-cta-button Replacement HTML: <button class="primary-cta" data-variant="d" data-audience="trial" id="primary-cta"> Continue your trial </button> Variant: E (free plan users) HTML target selector: .primary-cta-button Replacement HTML: <button class="primary-cta" data-variant="e" data-audience="free-plan" id="primary-cta"> Upgrade to Pro </button> Variant: F (paying customers) HTML target selector: .primary-cta-button Replacement HTML: <button class="primary-cta" data-variant="f" data-audience="paying" id="primary-cta"> Open dashboard </button> The Visual Editor allows the user to refine the exact copy ("Start MY free trial" first-person tested 202% lift). The CTA's link target also changes per audience: trial users go to /app, free-plan users go to /upgrade, paying customers go to /dashboard. Taxonomy notes: - Uses canonical events: Users.First seen, User created, Subscription started (with Plan and billing_period properties). - The CTA target_id remains "primary-cta" across variants for consistent Click on aggregation. - The 202% lift figure (cited multiple times in 2026 SaaS research) is for first-person CTA copy ("Start MY free trial") personalized by visitor intent. This recipe enables that pattern. - Don't over-segment: 5-6 lifecycle audiences is the sweet spot. Beyond that, content authoring overhead exceeds the gains. - Combine with source-based-personalization for compounding effect: a first-time visitor from LinkedIn enterprise ads sees both source-matched hero (Variant B from source-based) AND first-person CTA copy (Variant B from this recipe). Order precedence: source beats lifecycle when both apply.

    Install Intempt and run it

    1. 1

      Sign up

      Create a free Intempt workspace.

    2. 2

      Connect your data

      Add the sources this recipe reads from.

    3. 3

      Ask Blu

      Type /personalized-cta-copy-personalization in Blu once this recipe is live there.

    4. 4

      Review and approve

      Blu builds each step and waits for your OK before anything goes live.

    More recipes by Sid Chaudhary

    Got a play worth sharing?

    Publish it to the Intempt Collective Marketplace and earn when other teams run it.

    Submit a recipe