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¶
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"
Lead Capture Webhook¶
When email is captured after a content gating offer, the visitor_profiler node fires the lead capture webhook with capture_context="gated_content". This is detected by checking dialog_supervision_state.email_asked_last_turn (set by dialog_state_extractor when the previous bot response contained the 💌 emoji).
The PostHog rw_email_captured event also includes rw_capture_context="gated_content" for funnel analytics.
See In-Chat Booking > capture_context Values for the full context table.
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