{
  "name": "Google Maps negative reviews to Slack",
  "nodes": [
    {
      "parameters": {
        "content": "## Negative Google Maps reviews \u2192 Slack\n1. Open **Run monitor** \u2192 Credential \u2192 *Header Auth*: Name `Authorization`, Value `Bearer YOUR_APIFY_TOKEN` (Apify Console \u2192 Settings \u2192 API & Integrations).\n2. Edit the JSON body: your Google Maps links and a stable `trackingId` per client.\n3. Pick your Slack channel in **Post to Slack**.\n\nRuns daily at 08:00. The first run saves a baseline; later runs only return reviews you haven't seen. Works the same with `tripadvisor-review-monitor` and `app-review-monitor` (change the URL and body).",
        "height": 300,
        "width": 420
      },
      "id": "1da8502b-87ac-438f-850c-ac06f47b11bc",
      "name": "Setup",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -460,
        -120
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "triggerAtHour": 8
            }
          ]
        }
      },
      "id": "0aa0769e-c697-43b7-bd0e-934971db806b",
      "name": "Every day 08:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.apify.com/v2/acts/kirozhang~google-maps-review-monitor/run-sync-get-dataset-items",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "timeout",
              "value": "300"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"businesses\": [\n    \"https://www.google.com/maps?cid=4280570365733019477\"\n  ],\n  \"competitors\": [],\n  \"trackingId\": \"client-acme\",\n  \"alertMaxRating\": 2,\n  \"maxReviewsFirstRun\": 20\n}",
        "options": {
          "timeout": 310000
        }
      },
      "id": "c0b3a83a-69c5-4ed5-ad6d-d552556dfbbe",
      "name": "Run monitor",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "conditions": [
            {
              "id": "3562aa03-6058-4482-9528-6630938586af",
              "leftValue": "={{ $json.isAlert }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "rightValue": ""
            },
            {
              "id": "2eca7dfb-8e97-4cb2-abda-63d9e836da24",
              "leftValue": "={{ $json.isMyBusiness }}",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "rightValue": ""
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "6d5dda09-c79c-45bf-ac14-c8c5df8fa62f",
      "name": "Only my low ratings",
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "#reviews",
          "mode": "name"
        },
        "text": "={{ $json.rating }}-star review for *{{ $json.business }}* ({{ $json.relativeDate }})\n>{{ ($json.text || '(no text)').slice(0, 500) }}\nTopics: {{ ($json.topics || []).join(', ') || '-' }}\n{{ $json.mapsUrl }}",
        "otherOptions": {}
      },
      "id": "03d6ede1-9c5a-4bf5-9715-c4ad5e631088",
      "name": "Post to Slack",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.2,
      "position": [
        660,
        0
      ]
    }
  ],
  "connections": {
    "Every day 08:00": {
      "main": [
        [
          {
            "node": "Run monitor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run monitor": {
      "main": [
        [
          {
            "node": "Only my low ratings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Only my low ratings": {
      "main": [
        [
          {
            "node": "Post to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {}
}