AutomationFlowsGeneral › RSS Feed to MongoDB & Webhook Sync

RSS Feed to MongoDB & Webhook Sync

Original n8n title: Send RSS Feed Data to Webhook

Send Rss Feed Data To Webhook. Uses manualTrigger, rssFeedRead, splitInBatches, noOp. Event-driven trigger; 18 nodes.

Event trigger★★★★☆ complexity18 nodesRSS Feed ReadMongoDBHTTP Request
General Trigger: Event Nodes: 18 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → RSS Feed Read recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        290,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        290,
        200
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyHour"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "RSS Feed Read",
      "type": "n8n-nodes-base.rssFeedRead",
      "position": [
        490,
        200
      ],
      "parameters": {
        "url": "https://www.feedforall.com/sample.xml"
      },
      "typeVersion": 1
    },
    {
      "name": "SplitInBatches1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        900,
        560
      ],
      "parameters": {
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "name": "IF",
      "type": "n8n-nodes-base.if",
      "position": [
        1370,
        360
      ],
      "parameters": {
        "conditions": {
          "string": [],
          "boolean": [
            {
              "value1": true,
              "value2": "={{$node[\"SplitInBatches1\"].context[\"noItemsLeft\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "End1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1740,
        370
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "IF1",
      "type": "n8n-nodes-base.if",
      "position": [
        1370,
        10
      ],
      "parameters": {
        "conditions": {
          "string": [],
          "boolean": [
            {
              "value1": true,
              "value2": "={{$node[\"SplitInBatches1\"].context[\"noItemsLeft\"]}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        1260,
        580
      ],
      "parameters": {
        "mode": "removeKeyMatches",
        "propertyName1": "link",
        "propertyName2": "link"
      },
      "typeVersion": 1
    },
    {
      "name": "Merge1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1250,
        200
      ],
      "parameters": {
        "mode": "removeKeyMatches",
        "propertyName1": "link",
        "propertyName2": "link"
      },
      "typeVersion": 1
    },
    {
      "name": "IF realtors or real estate",
      "type": "n8n-nodes-base.if",
      "position": [
        700,
        200
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$node[\"RSS Feed Read\"].data[\"title\"]}}",
              "value2": "/(realtors|real estate)/i",
              "operation": "regex"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "IF restaurant(s)",
      "type": "n8n-nodes-base.if",
      "position": [
        700,
        580
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$node[\"IF realtors or real estate\"].data[\"title\"]}}",
              "value2": "/restaurant[\\s]*/i",
              "operation": "regex"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "SplitInBatches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        900,
        180
      ],
      "parameters": {
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "name": "MongoDB: Find Article",
      "type": "n8n-nodes-base.mongoDb",
      "position": [
        1070,
        310
      ],
      "parameters": {
        "query": "={\"link\":{\"$regex\":\"{{$node[\"SplitInBatches\"].data[\"link\"]}}\",\"$options\":\"i\"}}",
        "collection": "articles"
      },
      "credentials": {
        "mongoDb": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "MongoDB: Find Article1",
      "type": "n8n-nodes-base.mongoDb",
      "position": [
        1070,
        710
      ],
      "parameters": {
        "query": "={\"link\":{\"$regex\":\"{{$node[\"SplitInBatches1\"].data[\"link\"]}}\",\"$options\":\"i\"}}",
        "collection": "articles"
      },
      "credentials": {
        "mongoDb": "<your credential>"
      },
      "typeVersion": 1,
      "continueOnFail": true
    },
    {
      "name": "MongoDB: Insert",
      "type": "n8n-nodes-base.mongoDb",
      "position": [
        1480,
        580
      ],
      "parameters": {
        "fields": "title,link",
        "operation": "insert",
        "collection": "articles"
      },
      "credentials": {
        "mongoDb": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "MongoDB: Insert1",
      "type": "n8n-nodes-base.mongoDb",
      "position": [
        1480,
        200
      ],
      "parameters": {
        "fields": "title,link",
        "operation": "insert",
        "collection": "articles"
      },
      "credentials": {
        "mongoDb": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1740,
        200
      ],
      "parameters": {
        "url": "http://webhook.site/fe77b392-7b8a-4801-aeca-4531c14da5fd",
        "options": {
          "bodyContentType": "json"
        },
        "requestMethod": "POST",
        "jsonParameters": true,
        "bodyParametersJson": "={\"text\": \"{{$node[\"MongoDB: Insert1\"].data[\"link\"]}}\"}",
        "allowUnauthorizedCerts": true
      },
      "typeVersion": 1
    },
    {
      "name": "Webhook1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1740,
        580
      ],
      "parameters": {
        "url": "http://webhook.site/fe77b392-7b8a-4801-aeca-4531c14da5fd",
        "options": {
          "bodyContentType": "json"
        },
        "requestMethod": "POST",
        "jsonParameters": true,
        "bodyParametersJson": "={\"text\": \"{{$node[\"MongoDB: Insert\"].data[\"link\"]}}\"}",
        "allowUnauthorizedCerts": true
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "IF": {
      "main": [
        [
          {
            "node": "End1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "SplitInBatches1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF1": {
      "main": [
        [
          {
            "node": "End1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cron": {
      "main": [
        [
          {
            "node": "RSS Feed Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "MongoDB: Insert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "MongoDB: Insert1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "IF1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook1": {
      "main": [
        [
          {
            "node": "IF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed Read": {
      "main": [
        [
          {
            "node": "IF realtors or real estate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches": {
      "main": [
        [
          {
            "node": "MongoDB: Find Article",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MongoDB: Insert": {
      "main": [
        [
          {
            "node": "Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SplitInBatches1": {
      "main": [
        [
          {
            "node": "MongoDB: Find Article1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF restaurant(s)": {
      "main": [
        [
          {
            "node": "SplitInBatches1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MongoDB: Insert1": {
      "main": [
        [
          {
            "node": "Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MongoDB: Find Article": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "RSS Feed Read",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "MongoDB: Find Article1": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "IF realtors or real estate": {
      "main": [
        [
          {
            "node": "SplitInBatches",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "IF restaurant(s)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow effortlessly delivers RSS feed updates to your preferred webhook endpoint, ensuring you receive timely notifications or data pushes without constant monitoring. It's ideal for content creators, developers, or teams relying on syndication from sources like news sites or blogs to trigger actions in tools such as Slack or custom APIs. The key step involves the RSS Feed Read node fetching new items on a cron schedule, followed by splitting them into batches for efficient processing and forwarding via HTTP Request to your webhook, handling up to hundreds of entries seamlessly.

Use this workflow when you need automated, event-driven ingestion of RSS data to integrate with external services, particularly for real-time alerts or database updates like inserting into MongoDB. Avoid it for high-frequency feeds exceeding thousands of items daily, as that demands more robust scaling; opt instead for dedicated streaming tools. Common variations include adding conditional filtering with IF nodes to process only specific categories or merging outputs for multi-feed consolidation.

About this workflow

Send Rss Feed Data To Webhook. Uses manualTrigger, rssFeedRead, splitInBatches, noOp. Event-driven trigger; 18 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

RSS Feed -> MongoDB -> Webhook. Uses manualTrigger, rssFeedRead, splitInBatches, noOp. Event-driven trigger; 18 nodes.

RSS Feed Read, MongoDB, HTTP Request
General

Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest, stickyNote, manualTrigger. Event-driven trigger; 51 nodes.

HTTP Request
General

Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.

Execute Workflow Trigger, Stop And Error, HTTP Request +1
General

Limit Code. Uses microsoftOutlookTrigger, httpRequest, limit, noOp. Event-driven trigger; 41 nodes.

Microsoft Outlook Trigger, HTTP Request
General

AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.

HTTP Request, Google Sheets, Google Drive +2