Verify your integration

Start here. Add this to your site to confirm the state object is resolving correctly. After installing Jourvex, open your browser console and you should see the resolved state object logged in real time.

javascript
window.jourvex.on("stateReady", function(journey) {

  console.log("[Jourvex] state resolved", journey);

  // Expected shape:
  // {
  //   journey_id:   "cluster_8f2ab",
  //   intent_state: "high",
  //   intent_score: 82,
  //   sessions:     6,
  //   converted:    false,
  //   channel:      "linkedin",
  //   archetype:    "high_intent_prepare",
  //   signals: {
  //     pricing_views:        3,
  //     high_intent_hits:     7,
  //     enterprise_hits:      1,
  //     days_since_last_seen: 0
  //   }
  // }

});

Adaptive page experiences

Jourvex resolves evaluator state directly in the browser, allowing your frontend to adapt experiences in real time. Instead of redirecting visitors across different pages, keep multiple experience variants on the same page and reveal the correct version after the state object resolves.

In this example, the page adapts automatically based on live evaluator state. Enterprise evaluators, returning visitors, and first-time visitors each receive a different experience.

javascript
window.jourvex.on("stateReady", function(journey) {

  // Hide all experience variants first
  document.getElementById("default-hero").style.display = "none";
  document.getElementById("enterprise-hero").style.display = "none";
  document.getElementById("returning-hero").style.display = "none";

  // Enterprise evaluator experience
  if (
    journey.signals.enterprise_hits >= 1 &&
    journey.intent_state === "high"
  ) {
    document.getElementById("enterprise-hero").style.display = "block";
    return;
  }


   // Returning evaluator experience
  if (
    journey.sessions >= 3 &&
    !journey.converted
  ) {
    document.getElementById("returning-hero").style.display = "block";
    return;
  }

  // Default experience
  document.getElementById("default-hero").style.display = "block";

});

// Fallback experience
setTimeout(() => {

  const defaultHero =
    document.getElementById("default-hero");

  if (
    defaultHero &&
    defaultHero.style.display === "none"
  ) {
    defaultHero.style.display = "block";
  }



}, 2000);

Returning evaluator experience

Surface a banner or message for visitors who have returned multiple times. These visitors are actively evaluating your product. Acknowledging continued evaluation activity can help move the decision process forward without disrupting the experience.

javascript
window.jourvex.on("stateReady", function(journey) {

  // Three or more sessions and still evaluating
  if (journey.sessions >= 3 && !journey.converted) {

    const banner = document.getElementById("returning-banner");

    if (banner) {
      banner.style.display = "block";
    }

    // Optionally adapt banner messaging by channel
    const bannerText = document.getElementById("returning-banner-text");

    if (bannerText && journey.channel === "linkedin") {
      bannerText.textContent =
        "Welcome back. Most teams get Jourvex live in under an hour.";
    }

  }

});

Enterprise intent routing

When a visitor clicks an enterprise CTA, that signal becomes part of the evaluation state on future visits as enterprise_hits. Use it to route evaluators toward your enterprise sales path and notify your team automatically.

javascript — browser
window.jourvex.on("stateReady", function(journey) {

  // Enterprise evaluator detected
  // enterprise_hits counts enterprise CTA interactions
  // observed across sessions
  if (
    journey.signals.enterprise_hits >= 1 &&
    journey.intent_state === "high"
  ) {

    // Swap CTA to enterprise path
    const cta = document.getElementById("primary-cta");

    if (cta) {
      cta.textContent = "Talk to our team";
      cta.href = "/enterprise/contact";
    }

    // Show enterprise social proof
    const proof = document.getElementById("enterprise-logos");

    if (proof) {
      proof.style.display = "block";
    }

    // Notify your backend
    fetch("https://your-backend.com/jourvex/enterprise-signal", {
      method: "POST",
      headers: {
        "Content-Type": "application/json"
      },
      keepalive: true,
      body: JSON.stringify({
        journey_id:      journey.journey_id,
        intent_score:    journey.intent_score,
        enterprise_hits: journey.signals.enterprise_hits,
        sessions:        journey.sessions
      })
    });

  }

});