Examples
Real examples of what you can build once evaluation activity becomes programmable state. Every example below uses the state object, the Journey API, or both together to route evaluation intelligence into your existing systems and workflows.
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.
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.
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.
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.
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
})
});
}
});