{
  "name": "Monitor competitor prices with Google Shopping and Google Sheets, alert via Slack and Gmail",
  "nodes": [
    {
      "id": "df38f72a-ee3a-4877-894a-4a8fdbf32362",
      "name": "Daily Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        928,
        608
      ]
    },
    {
      "id": "7a378618-0238-44b8-84f9-4e6f2a94cc78",
      "name": "Get Products from Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1152,
        608
      ]
    },
    {
      "id": "10216fd3-331c-47da-bab8-104b27fca398",
      "name": "Clear Memory and Normalize Columns",
      "type": "n8n-nodes-base.code",
      "position": [
        1376,
        608
      ]
    },
    {
      "id": "caa91554-2313-4564-b41a-4cf47b33eb00",
      "name": "Loop Through Each Product",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1600,
        608
      ]
    },
    {
      "id": "678bc0f1-7512-427c-a604-1e18f55a6aa7",
      "name": "Prepare Search Query",
      "type": "n8n-nodes-base.code",
      "position": [
        1824,
        320
      ]
    },
    {
      "id": "9c474c8e-9eef-4f12-bd32-3b75a27d58f4",
      "name": "Search Google Shopping Prices",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2048,
        320
      ]
    },
    {
      "id": "4699bd51-4c99-430a-9b3e-416014a48cf0",
      "name": "Analyze Pricing Gap",
      "type": "n8n-nodes-base.code",
      "position": [
        2272,
        320
      ]
    },
    {
      "id": "c8b1a0b1-1df0-4119-9be1-4e9cb6216db2",
      "name": "Save Result to Memory",
      "type": "n8n-nodes-base.code",
      "position": [
        2496,
        320
      ]
    },
    {
      "id": "06766599-5dff-4982-9075-f7f156874786",
      "name": "Log to Price History Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2720,
        512
      ]
    },
    {
      "id": "88e0edd7-d292-44b0-b12a-1da798f8586f",
      "name": "Filter Critical or Warning Alerts",
      "type": "n8n-nodes-base.filter",
      "position": [
        2720,
        128
      ]
    },
    {
      "id": "04641da4-3cd7-4f39-94a2-7840021a34a2",
      "name": "Send Slack Pricing Alert",
      "type": "n8n-nodes-base.slack",
      "position": [
        2944,
        128
      ]
    },
    {
      "id": "62106fa8-8ea8-4364-89bf-2ffc95f00255",
      "name": "Continue to Next Product",
      "type": "n8n-nodes-base.code",
      "position": [
        2944,
        784
      ]
    },
    {
      "id": "27ac6923-5c0e-4c9a-820e-2595d1f182a7",
      "name": "Build Daily Summary Report",
      "type": "n8n-nodes-base.code",
      "position": [
        1824,
        608
      ]
    },
    {
      "id": "357a57b2-56bd-40ca-aa6d-fbd4bbaa2921",
      "name": "Post Daily Summary to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2048,
        512
      ]
    },
    {
      "id": "52a3aa2a-ef6e-4e64-98ef-6b4e126a073f",
      "name": "Email Daily Report",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2048,
        704
      ]
    },
    {
      "id": "6d52984d-1aa6-490a-b6d9-e22f5290da96",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        -368
      ],
      "parameters": {
        "width": 660,
        "height": 880,
        "content": "## Monitor competitor prices and alert via Slack and email\n\nThis workflow automatically monitors your product prices against competitors on Google Shopping, identifies pricing gaps, and sends alerts w"
      }
    },
    {
      "id": "a82235af-fdef-4f3f-b8a8-4919a7fbe3f1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1072,
        368
      ],
      "parameters": {
        "width": 264,
        "height": 164,
        "content": "## 1. Load Products\nSchedule trigger fires daily. Products are read from Google Sheets. Column names are auto-detected (supports many naming conventions)."
      }
    },
    {
      "id": "86733f0c-7e5d-4f49-a7a8-bbd3befd1e73",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        96
      ],
      "parameters": {
        "width": 312,
        "height": 164,
        "content": "## 2. Search and Analyze\nEach product is searched on Google Shopping via SearchAPI. Prices are compared to calculate gap %, signal severity, and a suggested price."
      }
    },
    {
      "id": "f5818320-0511-4e94-bdd3-88d279767591",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        -96
      ],
      "parameters": {
        "width": 224,
        "height": 164,
        "content": "## 3. Log and Alert\nResults are saved to memory and logged to the `price_log` sheet. Critical and warning signals trigger instant Slack alerts."
      }
    },
    {
      "id": "5d87a00f-455e-4e30-954c-893985d18bcd",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2272,
        528
      ],
      "parameters": {
        "width": 252,
        "height": 196,
        "content": "## 4. Daily Summary\nAfter all products are processed, a summary report is compiled from memory and sent via Slack message and HTML email."
      }
    },
    {
      "id": "8792930c-81a3-4c25-9a75-b1c33ed96e9f",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        -80
      ],
      "parameters": {
        "width": 440,
        "height": 100,
        "content": "⚠️ **Set your SearchAPI key** as an n8n environment variable: `SEARCHAPI_KEY`. Do NOT hardcode it here. See [n8n docs on environment variables](https://docs.n8n.io/hosting/configuration/environment-va"
      }
    },
    {
      "id": "f9acefa6-b811-499d-ac08-de02d7d229d3",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2192,
        816
      ],
      "parameters": {
        "width": 320,
        "height": 80,
        "content": "⚠️ **Update the email address** in this node to your own email before activating."
      }
    }
  ],
  "connections": {
    "Analyze Pricing Gap": {
      "main": [
        [
          {
            "node": "Save Result to Memory",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Search Query": {
      "main": [
        [
          {
            "node": "Search Google Shopping Prices",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Result to Memory": {
      "main": [
        [
          {
            "node": "Log to Price History Sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter Critical or Warning Alerts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Products from Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Products from Sheet": {
      "main": [
        [
          {
            "node": "Clear Memory and Normalize Columns",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Continue to Next Product": {
      "main": [
        [
          {
            "node": "Loop Through Each Product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Through Each Product": {
      "main": [
        [
          {
            "node": "Prepare Search Query",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Daily Summary Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Daily Summary Report": {
      "main": [
        [
          {
            "node": "Post Daily Summary to Slack",
            "type": "main",
            "index": 0
          },
          {
            "node": "Email Daily Report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log to Price History Sheet": {
      "main": [
        [
          {
            "node": "Continue to Next Product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Google Shopping Prices": {
      "main": [
        [
          {
            "node": "Analyze Pricing Gap",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Critical or Warning Alerts": {
      "main": [
        [
          {
            "node": "Send Slack Pricing Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clear Memory and Normalize Columns": {
      "main": [
        [
          {
            "node": "Loop Through Each Product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}