{
  "name": "Monitor Google Shopping prices with Bright Data & email alerts",
  "nodes": [
    {
      "id": "11da53a7-4296-4e62-b8b6-fc527925be20",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -40,
        60
      ]
    },
    {
      "id": "ad294df7-f1d6-4e32-920c-745b854adec9",
      "name": "Format Price Data",
      "type": "n8n-nodes-base.set",
      "position": [
        1180,
        60
      ]
    },
    {
      "id": "5ac9d43d-71e5-4b7c-ac11-c349d7eabaa7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Extract Product Data \nThis step scrapes detailed product information (e.g., name, ID, price, review count, ratings) from the provided Google Shopping URLs using BrightData."
      }
    },
    {
      "id": "bd3c2cf7-a7a1-4e7c-a3d8-52a76724e528",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Input Product URLs  \nThis step reads Google Shopping product URLs from a Google Sheet. These URLs are the sources for extracting product data using BrightData."
      }
    },
    {
      "id": "0c69407f-5272-4398-bd91-7b388ef5fd43",
      "name": "Read Google Shopping URLs",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        220,
        60
      ]
    },
    {
      "id": "1f4beb71-26ff-4136-baef-7bbc32f79eb4",
      "name": "Extract Product Info (BrightData)",
      "type": "@brightdata/n8n-nodes-brightdata.brightData",
      "position": [
        560,
        60
      ]
    },
    {
      "id": "57d80688-0309-4791-914f-f3e50a172e82",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Update Prices in Google Sheet\nThis step updates the Google Sheet with the latest product prices scraped from Google Shopping. It enables easy comparison with previously stored prices.\n"
      }
    },
    {
      "id": "c4a28312-eacf-43a9-abf4-be4ee8b5cd5f",
      "name": "Update Sheet with New Prices",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        900,
        60
      ]
    },
    {
      "id": "f44ac341-0377-4f44-b234-6a02b8852d6a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Check for Price Drop\nThis step compares the newly scraped price with the previously stored price in the sheet. It filters the data to pass through only if the new price is lower than the old pric"
      }
    },
    {
      "id": "2c722696-0b3e-4ae2-bed2-0b003f074e8e",
      "name": "Filter Price Drop",
      "type": "n8n-nodes-base.filter",
      "position": [
        1460,
        60
      ]
    },
    {
      "id": "83cf809a-4e07-43a0-95b3-306f3ae59845",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1720,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Loop Through Dropped Prices\nThis step iterates over each product that had a price drop. It enables the workflow to handle each item individually—checking and processing them one by one.\n"
      }
    },
    {
      "id": "2cc4ff30-914c-45b2-b7ed-0c4120bcf6c3",
      "name": "Loop Over Price Drop Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1820,
        60
      ]
    },
    {
      "id": "d7265c9e-1c11-445d-add4-be7004dc5ebc",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2060,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Send Notification Email\nThis step sends an email alert for products whose prices have dropped. The email typically includes product details like name, old price, new price, and possibly the produ"
      }
    },
    {
      "id": "79b755b1-73f2-41d2-b4cd-29ae14b1257d",
      "name": "Notify Price Drop via Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2160,
        60
      ]
    },
    {
      "id": "fa53cc05-25e5-4a95-8f0c-e3e29377b761",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2400,
        -100
      ],
      "parameters": {
        "width": 300,
        "height": 340,
        "content": "#### Wait Before Next Iteration\nThis step introduces a wait/pause after sending each email to prevent spam or hitting rate limits—especially useful when dealing with many notifications.\n"
      }
    },
    {
      "id": "ba9a1a50-38cb-41b3-afd8-b3141416574c",
      "name": "5 Minute Pause Between Emails",
      "type": "n8n-nodes-base.wait",
      "position": [
        2520,
        60
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Read Google Shopping URLs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Price Drop": {
      "main": [
        [
          {
            "node": "Loop Over Price Drop Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Price Data": {
      "main": [
        [
          {
            "node": "Filter Price Drop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Google Shopping URLs": {
      "main": [
        [
          {
            "node": "Extract Product Info (BrightData)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Price Drop Items": {
      "main": [
        [],
        [
          {
            "node": "Notify Price Drop via Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notify Price Drop via Email": {
      "main": [
        [
          {
            "node": "5 Minute Pause Between Emails",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Sheet with New Prices": {
      "main": [
        [
          {
            "node": "Format Price Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5 Minute Pause Between Emails": {
      "main": [
        [
          {
            "node": "Loop Over Price Drop Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Product Info (BrightData)": {
      "main": [
        [
          {
            "node": "Update Sheet with New Prices",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}