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.pyto 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 gatingcontent_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¶
- Answer first - Always answer the visitor's question before making the offer
- Single emoji - Only one 💌 emoji per offer, only on the offer line
- No pushing - If visitor declines, continue naturally without insisting
- No overlap - Don't use content gating when
demo_offerskill is selected
Related¶
- In-Chat Booking Email - Similar email capture for bookings
- Skill System - How skills are configured