AutomationFlowsGeneral › RSS to MongoDB Sync via Webhook

RSS to MongoDB Sync via Webhook

Original n8n title: RSS Feed -> Mongodb -> Webhook

RSS Feed -> MongoDB -> 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
{
  "id": "5dbef16e5f08b78d752add96",
  "name": "RSS Feed -> MongoDB -> Webhook",
  "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
    }
  ],
  "active": false,
  "settings": {},
  "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
          }
        ]
      ]
    }
  },
  "meta": {
    "site": "https://github.com/zengfr/n8n-workflow-all-templates",
    "name": "Send RSS feed data to webhook",
    "wechat": "youandme10086",
    "id": 159,
    "update_time": "2025-11-10"
  }
}

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 automates the monitoring of RSS feeds to capture and store new articles in a MongoDB database, then triggers a webhook to notify external systems of updates, saving you hours of manual data handling and ensuring real-time integration with your apps. It's ideal for content managers, developers, or teams tracking news, blogs, or industry updates without constant oversight. The key step involves reading the RSS feed via the rssFeedRead node, processing entries in batches to insert them into MongoDB, and firing an httpRequest to the webhook for seamless downstream actions.

Use this workflow when you need event-driven automation for ongoing RSS monitoring with reliable storage and notifications, such as aggregating podcast episodes or blog posts for analysis. Avoid it for one-off data pulls or high-volume feeds exceeding MongoDB's capacity, where simpler scripts might suffice. Common variations include adding email alerts instead of webhooks or filtering specific RSS categories before storage.

About this workflow

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

Source: https://github.com/zengfr/n8n-workflow-all-templates/blob/main/n8n-workflow-all-templates/00/00/01/159_Send_RSS_feed_data_to_webhook.json — 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

Send Rss Feed Data To 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