{
  "name": "Send daily Reddit buying-intent leads to Google Sheets and Slack with Apify",
  "nodes": [
    {
      "parameters": {
        "content": "## Send daily Reddit buying-intent leads to Google Sheets and Slack\n\nEvery morning this workflow searches Reddit for people who are ready to buy what you sell: posts and comments asking for a tool, a recommendation, or an alternative to a competitor. Each lead is scored 0-100 for buying intent. All new leads are saved to Google Sheets, and the hottest ones are posted to Slack as one short digest.\n\n### Who it's for\nFounders, SaaS marketers, agencies and sales teams who want warm leads from Reddit without reading it all day.\n\n### How it works\n1. **Schedule** runs the workflow every morning at 8:00.\n2. **Set your search** holds your keywords, competitors and settings.\n3. **Apify** runs the [Reddit Lead Finder](https://apify.com/fayoussef/reddit-lead-finder?fpr=youssef) Actor. It only returns leads you have not seen before, so you never get duplicates.\n4. Every lead is saved to your Google Sheet.\n5. Leads above your hot score are posted to Slack in one message.\n\n### How to set up\n1. Create a free [Apify account](https://apify.com/?fpr=youssef) and connect it in the **Apify** node (OAuth or API token).\n2. Create an empty Google Sheet and paste its URL in **Set your search**.\n3. Connect Google Sheets and Slack, and set your Slack channel.\n4. Edit keywords and competitors, then activate.\n\n### Requirements\n- Apify account (the free plan works, capped at 25 leads per run)\n- Google Sheets and Slack accounts\n\n### How to customize\n- Swap Slack for Telegram, email or Discord.\n- Raise `hotLeadScore` to 70 for only the strongest signals.\n- Add `subreddits` to focus on your niche.",
        "height": 1100,
        "width": 520,
        "color": 1
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000001",
      "name": "Sticky Note - About",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -760,
        -240
      ]
    },
    {
      "parameters": {
        "content": "### 1. Set your search\nEdit the values here. Separate several keywords, competitors or subreddits with commas.\n\n`minIntentScore`: leads below this are dropped by the Actor (30 = balanced).\n`hotLeadScore`: leads at or above this go to Slack.\n`maxLeads`: max leads per run.",
        "height": 640,
        "width": 520,
        "color": 7
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000002",
      "name": "Sticky Note - Step 1",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -200,
        -240
      ]
    },
    {
      "parameters": {
        "content": "### 2. Find leads on Reddit\nRuns the [Reddit Lead Finder](https://apify.com/fayoussef/reddit-lead-finder?fpr=youssef) Actor on your Apify account and waits for the results.\n\n`onlyNewLeads` is on, so each run returns only leads you have never received before.\n\nUsage is billed per lead on your Apify account.",
        "height": 640,
        "width": 520,
        "color": 7
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000003",
      "name": "Sticky Note - Step 2",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        360,
        -240
      ]
    },
    {
      "parameters": {
        "content": "### 3. Save and alert\nEvery lead becomes one row in your Google Sheet (headers are created on the first run).\n\nOnly hot leads reach Slack, combined into a single digest message so your channel stays quiet.",
        "height": 640,
        "width": 920,
        "color": 7
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000004",
      "name": "Sticky Note - Step 3",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        920,
        -240
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "triggerAtHour": 8
            }
          ]
        }
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000010",
      "name": "Every morning at 8",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        -120,
        120
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "b2000000-0000-4000-8000-000000000001",
              "name": "keywords",
              "value": "email marketing tool, newsletter software",
              "type": "string"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000002",
              "name": "competitors",
              "value": "Mailchimp, ConvertKit",
              "type": "string"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000003",
              "name": "subreddits",
              "value": "",
              "type": "string"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000004",
              "name": "minIntentScore",
              "value": 30,
              "type": "number"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000005",
              "name": "hotLeadScore",
              "value": 60,
              "type": "number"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000006",
              "name": "maxLeads",
              "value": 50,
              "type": "number"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000007",
              "name": "googleSheetUrl",
              "value": "PASTE_YOUR_GOOGLE_SHEET_URL_HERE",
              "type": "string"
            },
            {
              "id": "b2000000-0000-4000-8000-000000000008",
              "name": "slackChannel",
              "value": "#leads",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000011",
      "name": "Set your search",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        120,
        120
      ]
    },
    {
      "parameters": {
        "operation": "Run actor and get dataset",
        "actorSource": "store",
        "actorId": {
          "__rl": true,
          "value": "r9XHFcy7pGNxCPbIw",
          "mode": "id"
        },
        "customBody": "={{ JSON.stringify({\n  keywords: $json.keywords.split(',').map(s => s.trim()).filter(Boolean),\n  competitors: $json.competitors.split(',').map(s => s.trim()).filter(Boolean),\n  subreddits: $json.subreddits.split(',').map(s => s.trim().replace(/^r\\//, '')).filter(Boolean),\n  timeRange: 'week',\n  includeComments: true,\n  minIntentScore: $json.minIntentScore,\n  maxLeads: $json.maxLeads,\n  onlyNewLeads: true\n}) }}"
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000012",
      "name": "Find buying-intent leads on Reddit",
      "type": "@apify/n8n-nodes-apify.apify",
      "typeVersion": 1,
      "position": [
        460,
        120
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "c3000000-0000-4000-8000-000000000001",
              "name": "Score",
              "value": "={{ $json.intentScore }}",
              "type": "number"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000002",
              "name": "Intent",
              "value": "={{ $json.intentLabel }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000003",
              "name": "Thread",
              "value": "={{ $json.title }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000004",
              "name": "Subreddit",
              "value": "={{ $json.subreddit }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000005",
              "name": "Author",
              "value": "={{ $json.author }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000006",
              "name": "Budget",
              "value": "={{ $json.budgetMention || '' }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000007",
              "name": "Competitor",
              "value": "={{ $json.competitor || '' }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000008",
              "name": "Signals",
              "value": "={{ ($json.matchedSignals || []).join(', ') }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000009",
              "name": "Type",
              "value": "={{ $json.sourceType }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000010",
              "name": "Posted",
              "value": "={{ $json.createdAt || '' }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000011",
              "name": "Link",
              "value": "={{ $json.url }}",
              "type": "string"
            },
            {
              "id": "c3000000-0000-4000-8000-000000000012",
              "name": "Keyword",
              "value": "={{ $json.keyword }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000013",
      "name": "Format lead row",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        980,
        120
      ]
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "={{ $('Set your search').first().json.googleSheetUrl }}",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "id"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {},
          "matchingColumns": [],
          "schema": []
        },
        "options": {}
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000014",
      "name": "Save every lead to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1240,
        20
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose",
            "version": 2
          },
          "conditions": [
            {
              "id": "d4000000-0000-4000-8000-000000000001",
              "leftValue": "={{ $json.Score }}",
              "rightValue": "={{ $('Set your search').first().json.hotLeadScore }}",
              "operator": {
                "type": "number",
                "operation": "gte"
              }
            }
          ],
          "combinator": "and"
        },
        "looseTypeValidation": true,
        "options": {}
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000015",
      "name": "Keep hot leads only",
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        1240,
        240
      ]
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "leads",
        "options": {}
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000016",
      "name": "Combine into one digest",
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        1460,
        240
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "={{ $('Set your search').first().json.slackChannel }}",
          "mode": "name"
        },
        "text": "=:fire: *{{ $json.leads.length }} hot Reddit lead{{ $json.leads.length === 1 ? '' : 's' }} today*\n\n{{ $json.leads.map(l => `• *${l.Score}* | r/${l.Subreddit} | <${l.Link}|${l.Thread.slice(0, 90)}>${l.Budget ? ' | budget: ' + l.Budget : ''}${l.Competitor ? ' | vs ' + l.Competitor : ''}`).join('\\n') }}",
        "otherOptions": {
          "includeLinkToWorkflow": false,
          "unfurl_links": false
        }
      },
      "id": "a1f0c7e2-1b3d-4c55-9a01-000000000017",
      "name": "Post hot leads to Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        1660,
        240
      ]
    }
  ],
  "connections": {
    "Every morning at 8": {
      "main": [
        [
          {
            "node": "Set your search",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set your search": {
      "main": [
        [
          {
            "node": "Find buying-intent leads on Reddit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find buying-intent leads on Reddit": {
      "main": [
        [
          {
            "node": "Format lead row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format lead row": {
      "main": [
        [
          {
            "node": "Save every lead to Google Sheets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Keep hot leads only",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep hot leads only": {
      "main": [
        [
          {
            "node": "Combine into one digest",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine into one digest": {
      "main": [
        [
          {
            "node": "Post hot leads to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  }
}