Skip to content

Content Gating

Overview

Content Gating is a lead capture strategy where the bot offers relevant content (case studies, guides, comparisons) in exchange for the visitor's email address. It's triggered by specific buying signals in the conversation.

User Flow

flowchart TD A[Visitor shows interest signal] --> B{Content gating allowed?} B -->|No| C[Continue normal conversation] B -->|Yes| D[Bot answers question] D --> E[Bot offers content with 💌] E --> F{Visitor accepts?} F -->|No| G[Continue without pushing] F -->|Yes| H[Bot asks for email] H --> I[Visitor provides email] I --> J[Bot confirms & continues]

Trigger Signals

The bot offers gated content when the visitor shows any one of these signals:

Signal Examples
Industry "I work in banking", "We're in logistics"
Results "What ROI can I expect?", "What results do clients see?"
Proof "Do you have customers in my industry?", "Any references?"
Comparison "How do you compare to X?", "What makes you different?"
Qualification Visitor shares info matching key qualification criteria

Configuration

Content gating is controlled by the content_gating_availability setting per site:

Value Behavior
allowed Bot can offer gated content
discouraged Bot avoids content gating
forbidden Content gating disabled

Emoji Marker

  • 💌 (envelope with heart) marks the content offer
  • The emoji appears only on the offer line, never on the email capture question
  • Used by dialog_state_extractor.py to track content gating state

Example Conversation

Visitor: "I work in fintech, what results do your clients see?"

Bot: "Our fintech clients typically see 30-40% improvement in
conversion rates within the first quarter.

💌 Would you like me to share a case study from the fintech sector?"

Visitor: "Yes please"

Bot: "Perfect, what email should I send it to?"

Visitor: "john@fintech.com"

Bot: "Got it, I'll send the case study to john@fintech.com.
What's your main challenge currently?"

Key Files

Backend

File Purpose
prompts/website-agent/skills/response_ending/content_gating/SKILL.md Skill definition with triggers and templates
ixchat/nodes/dialog_state_extractor.py Extracts 💌 marker from responses
ixchat/pydantic_models/dialog_supervision.py content_gating_captured state tracking

State Tracking

The dialog_supervision_state tracks:

  • content_gating_captured - Whether email was captured via content gating
  • content_gating_ask_turn - Turn number when offer was made

Skill Configuration

name: content_gating
default_enabled: false
category: response_ending
conditions:
  - content_gating_availability: "allowed"

Rules

  1. Answer first - Always answer the visitor's question before making the offer
  2. Single emoji - Only one 💌 emoji per offer, only on the offer line
  3. No pushing - If visitor declines, continue naturally without insisting
  4. No overlap - Don't use content gating when demo_offer skill is selected