/ MQL No Book - Slack Reaction.md
MQL No Book - Slack Reaction.md
1 --- 2 type: make-scenario-migration 3 status: pending 4 make-id: 2952024 5 active: true 6 invalid: false 7 trigger: close-crm 8 apps: [close-crm, util, slack] 9 executions: ~high 10 last-edit: 2026-04-05 11 --- 12 13 # MQL No Book - Slack Reaction 14 15 **Status:** Active 16 **Make ID:** 2952024 17 **Trigger:** Close CRM → New Lead (trigger on new lead created) 18 19 --- 20 21 ## Module Sequence 22 23 1. **Close CRM — New Lead Trigger** → fires when a new lead is created in Close 24 2. **Filter** → only continue if: Application Date field exists AND Lead Status = MQL 25 3. **util:FunctionSleep** → wait 250 seconds (allow time for Calendly booking to process) 26 4. **Close CRM — List Opportunities** → get opps for this lead 27 5. **Filter** → only continue if: no opportunities exist OR no opp has stage = "Booked" 28 6. **Slack — Search Messages** → search for the lead's original notification message in the relevant channel 29 7. **Filter** → only continue if: a matching Slack message was found 30 8. **Slack — Add Reaction** → add `:x:` reaction to the original lead message (marks as no-book) 31 - Error handling: Ignore error (in case message already has reaction) 32 9. **Slack — Create Message** → post thread reply `@mention MQL No Book` alert to the same thread 33 - Error handling: Ignore error 34 35 --- 36 37 ## n8n Node Mapping 38 39 | Make Module | n8n Node | Notes | 40 |---|---|---| 41 | Close CRM New Lead Trigger | Webhook node | Set up Close CRM webhook → Leads → Created event pointing to n8n | 42 | Filter (Application Date + MQL) | IF node | `body.status_label == "MQL"` AND application_date field not null | 43 | util:FunctionSleep (250s) | Wait node | Wait 250 seconds | 44 | Close CRM List Opportunities | HTTP Request | GET Close API /opportunity/?lead_id={id} | 45 | Filter (no booked opp) | IF node | Check opp array length or stage values | 46 | Slack Search Messages | Slack node | Search Messages action with query | 47 | Filter (message found) | IF node | Check search result count > 0 | 48 | Slack Add Reaction | Slack node | Add Reaction action with `:x:` emoji | 49 | Slack Create Message | Slack node | Send Message (thread reply) | 50 51 --- 52 53 ## Key Details 54 55 - The 250-second sleep is critical — it waits for the Calendly → Demo Booked scenario to create an opportunity if the lead booked 56 - Close CRM webhook trigger: in Close, go to Settings → Integrations → Webhooks → add webhook for `lead.created` event 57 - The Slack search query must match the exact message format posted by the "1a - New Leads" scenario 58 - `@mention` in thread — identify which user/channel is being tagged 59 - Ignore error on Add Reaction and Create Message to prevent scenario failure if Slack has issues 60 61 --- 62 63 ## Migration Checklist 64 65 - [ ] Set up Close CRM webhook for `lead.created` → n8n URL 66 - [ ] Recreate Close CRM API credential in n8n 67 - [ ] Recreate Slack credential in n8n 68 - [ ] Identify exact Slack search query used (from blueprint) 69 - [ ] Identify Slack channel ID being searched 70 - [ ] Identify which user is @mentioned in the thread reply 71 - [ ] Build workflow with Wait node (250s), IF nodes, HTTP Requests, Slack nodes 72 - [ ] Test with a new MQL lead that doesn't book 73 - [ ] Test with a new MQL lead that DOES book (reaction should NOT fire) 74 - [ ] Confirm `:x:` reaction appears on original lead message 75 - [ ] Confirm thread reply posts correctly 76 - [ ] Mark active in n8n, deactivate Make scenario