{"slug":"ghl-conversation-ai-pipeline-filter","title":"GHL Conversation AI: Filter Bot to Only Respond to Engaged Pipeline Leads","tags":["ghl","conversation-ai","pipeline","workflow"],"agent_summary":"How to configure GoHighLevel's conversation AI bot to only respond to leads in a specific pipeline stage (e.g., 'Engaged') using Find Opportunity node and If/Else conditions, since the bot trigger doesn't natively filter by pipeline stage.","trigger_phrases":["conversation ai only respond to certain leads","filter ghl bot by pipeline stage","conversation ai engaged leads only","ghl bot pipeline filter setup","limit conversation ai to specific stage","if else pipeline stage conversation ai"],"runnable":true,"markdown":"## Filtering GHL Conversation AI by Pipeline Stage\n\n### Problem\nThe GHL Conversation AI bot triggers on all inbound SMS messages. You need it to ONLY respond to leads in the \"Engaged\" pipeline stage, not every contact.\n\n### Solution Architecture\n\n1. **Find Opportunity Node Required** — The If/Else condition in the conversation AI workflow does NOT have pipeline stage as a filter option by default. You must add a \"Find Opportunity\" action BEFORE the If/Else to unlock the opportunities condition folder.\n\n2. **Workflow Structure:**\n   ```\n   Chat Initiated (trigger)\n   → Find Opportunity (most recently created)\n   → If/Else: Pipeline Stage = \"Sales Pipeline\" > \"Engaged\"\n     → True: Continue to bot logic (intent splitter, etc.)\n     → False: End workflow\n   ```\n\n3. **Critical Gotcha:** If you delete the Find Opportunity node, you lose access to the pipeline stage conditions in If/Else. The error message says: \"Please add an opportunities trigger or find opportunities action to enable this condition.\"\n\n### Tag-Based Alternative (If Pipeline Filter Fails)\n\nIf native pipeline filtering doesn't work reliably:\n\n1. Create tag: `bot-eligible`\n2. In your SMS classification workflow (N8N), when a lead is classified as \"interested\" and pushed to \"Engaged\" stage, also add the `bot-eligible` tag via GHL API\n3. In conversation AI workflow: If/Else → Contact has tag `bot-eligible` → True continues, False ends\n4. Create a separate cleanup workflow: When pipeline stage changes AWAY from Engaged, remove the `bot-eligible` tag\n\n### Auto Follow-Up Configuration\n\n- GHL conversation AI supports max **5 auto follow-up touches**\n- Minimum interval is **1 day** (24 hours) — cannot do hours\n- Recommended cadence: Day 1, Day 2, Day 4, Day 7, Day 10\n- Follow-ups only fire when the lead **ghosts mid-conversation**\n- Randomize timing slightly (don't send at exactly the same time daily) to avoid spam patterns\n\n### Bot Goals\n\n- Configure under Bot Goals tab → Appointment Booking\n- When bot successfully books, the existing native GHL automation moves them to \"Booked\" pipeline stage automatically\n- No need for the bot to handle pipeline movement\n\n### Key Settings to Enable\n\n- **Image recognition**: ON (lets bot understand photos leads send)\n- **Voice note reading**: ON (lets bot transcribe and understand voice messages)\n- **Human handover**: Not needed for cold outreach leads (they're responding to direct outreach, not banging down the door)\n","html":"<h2>Filtering GHL Conversation AI by Pipeline Stage</h2>\n<h3>Problem</h3>\n<p>The GHL Conversation AI bot triggers on all inbound SMS messages. You need it to ONLY respond to leads in the \"Engaged\" pipeline stage, not every contact.</p>\n<h3>Solution Architecture</h3>\n<ol>\n<li>\n<p><strong>Find Opportunity Node Required</strong> — The If/Else condition in the conversation AI workflow does NOT have pipeline stage as a filter option by default. You must add a \"Find Opportunity\" action BEFORE the If/Else to unlock the opportunities condition folder.</p>\n</li>\n<li>\n<p><strong>Workflow Structure:</strong></p>\n<pre><code>Chat Initiated (trigger)\n→ Find Opportunity (most recently created)\n→ If/Else: Pipeline Stage = \"Sales Pipeline\" > \"Engaged\"\n  → True: Continue to bot logic (intent splitter, etc.)\n  → False: End workflow\n</code></pre>\n</li>\n<li>\n<p><strong>Critical Gotcha:</strong> If you delete the Find Opportunity node, you lose access to the pipeline stage conditions in If/Else. The error message says: \"Please add an opportunities trigger or find opportunities action to enable this condition.\"</p>\n</li>\n</ol>\n<h3>Tag-Based Alternative (If Pipeline Filter Fails)</h3>\n<p>If native pipeline filtering doesn't work reliably:</p>\n<ol>\n<li>Create tag: <code>bot-eligible</code></li>\n<li>In your SMS classification workflow (N8N), when a lead is classified as \"interested\" and pushed to \"Engaged\" stage, also add the <code>bot-eligible</code> tag via GHL API</li>\n<li>In conversation AI workflow: If/Else → Contact has tag <code>bot-eligible</code> → True continues, False ends</li>\n<li>Create a separate cleanup workflow: When pipeline stage changes AWAY from Engaged, remove the <code>bot-eligible</code> tag</li>\n</ol>\n<h3>Auto Follow-Up Configuration</h3>\n<ul>\n<li>GHL conversation AI supports max <strong>5 auto follow-up touches</strong></li>\n<li>Minimum interval is <strong>1 day</strong> (24 hours) — cannot do hours</li>\n<li>Recommended cadence: Day 1, Day 2, Day 4, Day 7, Day 10</li>\n<li>Follow-ups only fire when the lead <strong>ghosts mid-conversation</strong></li>\n<li>Randomize timing slightly (don't send at exactly the same time daily) to avoid spam patterns</li>\n</ul>\n<h3>Bot Goals</h3>\n<ul>\n<li>Configure under Bot Goals tab → Appointment Booking</li>\n<li>When bot successfully books, the existing native GHL automation moves them to \"Booked\" pipeline stage automatically</li>\n<li>No need for the bot to handle pipeline movement</li>\n</ul>\n<h3>Key Settings to Enable</h3>\n<ul>\n<li><strong>Image recognition</strong>: ON (lets bot understand photos leads send)</li>\n<li><strong>Voice note reading</strong>: ON (lets bot transcribe and understand voice messages)</li>\n<li><strong>Human handover</strong>: Not needed for cold outreach leads (they're responding to direct outreach, not banging down the door)</li>\n</ul>\n"}