{
  "name": "Send customer visit notifications from Google Calendar to Slack and Sheets",
  "nodes": [
    {
      "id": "26d95d9c-8b73-4503-9f0d-c8f54960089c",
      "name": "Step 1: Activation schedule: Every 1 hour, from 6 AM to 6 PM.",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2720,
        2016
      ]
    },
    {
      "id": "cabcc91d-be29-46b1-a802-7e150f2a598b",
      "name": "Step 4: Get the event information from Google Calendar for tomorrow.",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        -2512,
        2272
      ]
    },
    {
      "id": "a6fd4c7e-56ca-4670-9d28-986c279ea5a7",
      "name": "Step 2: Set Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        -2512,
        2016
      ]
    },
    {
      "id": "aa89d67f-6e98-4bd3-bcfb-0a4928282927",
      "name": "Step 3: Get datetime",
      "type": "n8n-nodes-base.code",
      "position": [
        -2720,
        2272
      ]
    },
    {
      "id": "a1f2dd0a-687b-4362-9f53-f2cf9541330d",
      "name": "Step 5: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2288,
        2272
      ]
    },
    {
      "id": "8f315c0f-4b8f-4755-9ac6-44d52147e3a3",
      "name": "Step 6: Filter out events whose titles match the action of a customer visiting the company.",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2016,
        1968
      ]
    },
    {
      "id": "cb9a9a37-8d9e-4b44-a53c-e7cd81eea088",
      "name": "Step 7: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1808,
        1968
      ]
    },
    {
      "id": "304c1318-2f4a-4367-98a0-7830b3246625",
      "name": "Step 8: Read the Odoo Calendar Event notifications that have been sent.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2016,
        2176
      ]
    },
    {
      "id": "4f430f6b-406f-45cb-9ddb-9988d6000c5c",
      "name": "Step 9: Read Google Sheets member slack",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1808,
        2176
      ]
    },
    {
      "id": "945af957-40d0-4027-b12f-52a8e5b617db",
      "name": "Step 10: Filter out records that have not been sent.",
      "type": "n8n-nodes-base.code",
      "position": [
        -1568,
        1968
      ]
    },
    {
      "id": "b9acac39-d43f-4c1b-89db-3d3991d745dd",
      "name": "Step 11: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1360,
        1968
      ]
    },
    {
      "id": "432caf07-304c-45be-b072-9d575b9021a6",
      "name": "Step 12: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1568,
        2176
      ]
    },
    {
      "id": "115e8306-2e66-40a6-9f52-2280ff466903",
      "name": "Step 13: Extract the email and member ID of the partners.",
      "type": "n8n-nodes-base.code",
      "position": [
        -1360,
        2176
      ]
    },
    {
      "id": "8a2d65d5-780a-46ea-9e75-be847210fb12",
      "name": "Step 14: Loop Over Partners.",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1136,
        1968
      ]
    },
    {
      "id": "f561fd3d-d1c8-4b8d-a883-125f90071b35",
      "name": "Step 15: Wait 1s",
      "type": "n8n-nodes-base.wait",
      "position": [
        -928,
        2176
      ]
    },
    {
      "id": "0e1b2c15-95eb-4850-ade5-dfd9b1fde2b5",
      "name": "Step 16: Send a message to your Partners",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1136,
        2176
      ]
    },
    {
      "id": "90e61f88-4d5c-4204-8de3-cef379f4dca5",
      "name": "Step 17: Return output of step8",
      "type": "n8n-nodes-base.code",
      "position": [
        -928,
        1968
      ]
    },
    {
      "id": "a4b1e046-e1ac-4356-9dc0-135747e03451",
      "name": "Step 18: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -704,
        1968
      ]
    },
    {
      "id": "8713519b-7300-4917-8fe2-f746ef6e8465",
      "name": "Step 19: Fill in the Calendar Event information in the Google Sheet.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -512,
        1968
      ]
    },
    {
      "id": "e8e9f878-9d87-49c6-9663-4413830534ca",
      "name": "Step 20: Get the event information from Google Calendar for today..",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        -704,
        2176
      ]
    },
    {
      "id": "af39e469-032b-4b85-b84a-2721fdfe0aab",
      "name": "Step 21: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -512,
        2176
      ]
    },
    {
      "id": "a8d90c8a-bd26-49da-a966-5b3c369a4352",
      "name": "Step 22: Filter out events whose titles match the action of a customer visiting the company.",
      "type": "n8n-nodes-base.filter",
      "position": [
        -272,
        1968
      ]
    },
    {
      "id": "37a49308-2c53-4a3c-872f-3ee9c8475e84",
      "name": "Step 23: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -64,
        1968
      ]
    },
    {
      "id": "dd7deb8d-316a-4506-9aae-147a05935ad4",
      "name": "Step 24: Read the Odoo Calendar Event notifications that have been sent.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -272,
        2176
      ]
    },
    {
      "id": "64b6ea77-3634-4eb5-bdaa-ff6921891d06",
      "name": "Step 25: Filter out records that have not been sent.",
      "type": "n8n-nodes-base.code",
      "position": [
        -64,
        2176
      ]
    },
    {
      "id": "2f413100-9f8e-4737-bc07-02142f828619",
      "name": "Step 26: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        176,
        1968
      ]
    },
    {
      "id": "99e4392d-9dd5-4c7f-842c-3b5fafc1bb87",
      "name": "Step 27: Check if it is currently >= 8 AM?",
      "type": "n8n-nodes-base.if",
      "position": [
        384,
        1968
      ]
    },
    {
      "id": "45f88c5c-e407-45cf-9093-abbdfb77635f",
      "name": "Step 28: Convert to text",
      "type": "n8n-nodes-base.code",
      "position": [
        176,
        2176
      ]
    },
    {
      "id": "f2ff389d-70e9-447a-8f85-74c995390e31",
      "name": "Step 29: Download file image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        384,
        2176
      ]
    },
    {
      "id": "ad4a82ad-b2dc-4e20-a99c-d16ec55569e9",
      "name": "Step 30: Convert KB → bytes",
      "type": "n8n-nodes-base.code",
      "position": [
        608,
        1968
      ]
    },
    {
      "id": "a6fde675-6248-4c33-bcad-c7c8c1a21105",
      "name": "Step 32: Choose branch 2",
      "type": "n8n-nodes-base.merge",
      "position": [
        608,
        2176
      ]
    },
    {
      "id": "ebae7fb4-abf9-4b69-9f3e-a97780cbcaa7",
      "name": "Step 33: POST upload_url Slack",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        816,
        2176
      ]
    },
    {
      "id": "c724f434-ac95-4c13-9170-775b48a77fed",
      "name": "Step 31: Call Slack API's getUploadURLExternal API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        816,
        1968
      ]
    },
    {
      "id": "67cfa35b-ee8a-4876-b7f3-b80fa5bc8a92",
      "name": "Step 34: Call the completeUploadExternal Slack API to complete the file upload.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1040,
        1968
      ]
    },
    {
      "id": "1d9b1407-3c05-4d84-b3b1-8c6ac90baca6",
      "name": "Step 35: Return output of step 25",
      "type": "n8n-nodes-base.code",
      "position": [
        1232,
        1968
      ]
    },
    {
      "id": "c9e0405b-3bde-4952-a9f3-9c7928f6e46f",
      "name": "Step 36: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1040,
        2176
      ]
    },
    {
      "id": "e408c49d-cfe8-4003-a685-cdca0620e005",
      "name": "Step 37: Fill in the Calendar Event information in the Google Sheet.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1232,
        2176
      ]
    },
    {
      "id": "e7e3ccf3-3c8c-4183-b4e4-230ff019b921",
      "name": "Step 38: Get the event information from Google Calendar for today.",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        -2016,
        2608
      ]
    },
    {
      "id": "e5d03c50-5dff-4c0f-826f-2c5dd6e7d5ac",
      "name": "Step 39: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1808,
        2608
      ]
    },
    {
      "id": "1ad802f9-6521-449c-a6a2-dc08c1edce76",
      "name": "Step 40: Filter out events whose titles match the action of a customer visiting the company.",
      "type": "n8n-nodes-base.filter",
      "position": [
        -2016,
        2816
      ]
    },
    {
      "id": "ffb3dd65-22fc-4bcf-8a6e-64e3cc2648f2",
      "name": "Step 41: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1808,
        2816
      ]
    },
    {
      "id": "738d36f6-294a-4bca-82c4-9c12f4c5336e",
      "name": "Step 42: Read the Odoo Calendar Event notifications that have been sent.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1568,
        2608
      ]
    },
    {
      "id": "f107d42c-08fa-4eaa-9c6e-b5f38ad54cae",
      "name": "Step 43: Filter out records that have not been sent.",
      "type": "n8n-nodes-base.code",
      "position": [
        -1360,
        2608
      ]
    },
    {
      "id": "a8824e2a-6a4b-4853-b7a5-8638d5537c18",
      "name": "Step 44: Check if there is a record or not?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1568,
        2816
      ]
    },
    {
      "id": "635658e0-557e-481a-ae07-039c64e365f0",
      "name": "Step 45: Check if it is currently >= 8 AM?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1360,
        2816
      ]
    },
    {
      "id": "81c2a562-7dc9-41f4-b338-f82abd75b1c7",
      "name": "Step 46: Convert to text",
      "type": "n8n-nodes-base.code",
      "position": [
        -1136,
        2608
      ]
    },
    {
      "id": "2ac1743e-9efe-43ca-94fe-82d512faa6e4",
      "name": "Step 47: Download file image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -928,
        2608
      ]
    },
    {
      "id": "03b54ae8-8f49-4cc9-b9ef-8741f9bd5e5f",
      "name": "Step 48: Convert KB → bytes",
      "type": "n8n-nodes-base.code",
      "position": [
        -704,
        2608
      ]
    },
    {
      "id": "594c0ad9-14f3-4575-8a44-d5bf81efc649",
      "name": "Step 49: Call Slack API's getUploadURLExternal API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1136,
        2816
      ]
    },
    {
      "id": "8663bcf0-78b4-4e4b-8bde-5dbeab4bc5f0",
      "name": "Step 50: Choose branch 2",
      "type": "n8n-nodes-base.merge",
      "position": [
        -928,
        2816
      ]
    },
    {
      "id": "43ad5a1a-658c-4bdf-9c25-06c913a07b11",
      "name": "Step 51: POST upload_url Slack",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -704,
        2816
      ]
    },
    {
      "id": "ce2afd81-a9eb-48f8-b7dc-836ea163907c",
      "name": "Step 52: Call the completeUploadExternal Slack API to complete the file upload.",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -512,
        2608
      ]
    },
    {
      "id": "9894b3cd-bd04-4861-b4f5-1b71d583d876",
      "name": "Step 53: Return output of step 43",
      "type": "n8n-nodes-base.code",
      "position": [
        -288,
        2608
      ]
    },
    {
      "id": "031dd88f-e78a-4e54-9b8c-cc6f0f747099",
      "name": "Step 54: Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -512,
        2816
      ]
    },
    {
      "id": "b31df922-1bb0-4007-9290-5b252faf1b90",
      "name": "Step 55: Fill in the Calendar Event information in the Google Sheet.",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -288,
        2816
      ]
    },
    {
      "id": "30270cab-2f81-410a-bc93-85969f166d44",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2112,
        1776
      ],
      "parameters": {
        "width": 1312,
        "height": 640,
        "content": "## 2. The system sends a notification to partners one day in advance."
      }
    },
    {
      "id": "7ea32518-a36e-4010-bdc5-bd11cc84fb68",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3584,
        1776
      ],
      "parameters": {
        "width": 720,
        "height": 1280,
        "content": "# Customer Visit Notification\nThis workflow monitors Google Calendar for events indicating that a customer will visit the company today or the next day, retrieves the required details, and sends remin"
      }
    },
    {
      "id": "50bd906f-d87f-44a5-99d7-5042ccb17451",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2816,
        1776
      ],
      "parameters": {
        "width": 560,
        "height": 720,
        "content": "## 1. Set Variables and Get datetime"
      }
    },
    {
      "id": "50e9bb55-b56c-44cb-9e82-cedd827c4c47",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2112,
        2480
      ],
      "parameters": {
        "width": 2064,
        "height": 592,
        "content": "## 5. The system sends a company-wide announcement to a public channel today"
      }
    },
    {
      "id": "5cc130dd-ce52-40e4-8998-a4770a83e7ff",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -768,
        1776
      ],
      "parameters": {
        "width": 432,
        "height": 640,
        "content": "## 3. Fill in the Calendar Event information in the Google Sheet."
      }
    },
    {
      "id": "0920be29-95ad-4ad8-b487-dba54b607b9a",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        1776
      ],
      "parameters": {
        "width": 1712,
        "height": 640,
        "content": "## 4. The system sends a company-wide announcement to a public channel today and updates a note in the Google Sheet."
      }
    }
  ],
  "connections": {
    "Step 15: Wait 1s": {
      "main": [
        [
          {
            "node": "Step 16: Send a message to your Partners",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 3: Get datetime": {
      "main": [
        [
          {
            "node": "Step 4: Get the event information from Google Calendar for tomorrow.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 2: Set Variables": {
      "main": [
        [
          {
            "node": "Step 3: Get datetime",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 12: Loop Over Items": {
      "main": [
        [
          {
            "node": "Step 14: Loop Over Partners.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 13: Extract the email and member ID of the partners.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 18: Loop Over Items": {
      "main": [
        [
          {
            "node": "Step 20: Get the event information from Google Calendar for today..",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 19: Fill in the Calendar Event information in the Google Sheet.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 28: Convert to text": {
      "main": [
        [
          {
            "node": "Step 29: Download file image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 32: Choose branch 2": {
      "main": [
        [
          {
            "node": "Step 33: POST upload_url Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 36: Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Step 37: Fill in the Calendar Event information in the Google Sheet.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 46: Convert to text": {
      "main": [
        [
          {
            "node": "Step 47: Download file image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 50: Choose branch 2": {
      "main": [
        [
          {
            "node": "Step 51: POST upload_url Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 54: Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Step 55: Fill in the Calendar Event information in the Google Sheet.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 14: Loop Over Partners.": {
      "main": [
        [
          {
            "node": "Step 17: Return output of step8",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 15: Wait 1s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 29: Download file image": {
      "main": [
        [
          {
            "node": "Step 30: Convert KB → bytes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 47: Download file image": {
      "main": [
        [
          {
            "node": "Step 48: Convert KB → bytes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 30: Convert KB → bytes": {
      "main": [
        [
          {
            "node": "Step 31: Call Slack API's getUploadURLExternal API",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step 32: Choose branch 2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Step 48: Convert KB → bytes": {
      "main": [
        [
          {
            "node": "Step 49: Call Slack API's getUploadURLExternal API",
            "type": "main",
            "index": 0
          },
          {
            "node": "Step 50: Choose branch 2",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Step 33: POST upload_url Slack": {
      "main": [
        [
          {
            "node": "Step 34: Call the completeUploadExternal Slack API to complete the file upload.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 51: POST upload_url Slack": {
      "main": [
        [
          {
            "node": "Step 52: Call the completeUploadExternal Slack API to complete the file upload.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 17: Return output of step8": {
      "main": [
        [
          {
            "node": "Step 18: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 35: Return output of step 25": {
      "main": [
        [
          {
            "node": "Step 36: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 53: Return output of step 43": {
      "main": [
        [
          {
            "node": "Step 54: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 9: Read Google Sheets member slack": {
      "main": [
        [
          {
            "node": "Step 10: Filter out records that have not been sent.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 16: Send a message to your Partners": {
      "main": [
        [
          {
            "node": "Step 14: Loop Over Partners.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 27: Check if it is currently >= 8 AM?": {
      "main": [
        [
          {
            "node": "Step 28: Convert to text",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 45: Check if it is currently >= 8 AM?": {
      "main": [
        [
          {
            "node": "Step 46: Convert to text",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 5: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 6: Filter out events whose titles match the action of a customer visiting the company.",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Step 38: Get the event information from Google Calendar for today.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 7: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 8: Read the Odoo Calendar Event notifications that have been sent.",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 11: Check if there is a record or not?": {
      "main": [
        [],
        [
          {
            "node": "Step 12: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 21: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 22: Filter out events whose titles match the action of a customer visiting the company.",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 23: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 24: Read the Odoo Calendar Event notifications that have been sent.",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 26: Check if there is a record or not?": {
      "main": [
        [],
        [
          {
            "node": "Step 27: Check if it is currently >= 8 AM?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 39: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 40: Filter out events whose titles match the action of a customer visiting the company.",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 41: Check if there is a record or not?": {
      "main": [
        [
          {
            "node": "Step 42: Read the Odoo Calendar Event notifications that have been sent.",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "Step 44: Check if there is a record or not?": {
      "main": [
        [],
        [
          {
            "node": "Step 45: Check if it is currently >= 8 AM?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 31: Call Slack API's getUploadURLExternal API": {
      "main": [
        [
          {
            "node": "Step 32: Choose branch 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 49: Call Slack API's getUploadURLExternal API": {
      "main": [
        [
          {
            "node": "Step 50: Choose branch 2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 10: Filter out records that have not been sent.": {
      "main": [
        [
          {
            "node": "Step 11: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 25: Filter out records that have not been sent.": {
      "main": [
        [
          {
            "node": "Step 26: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 43: Filter out records that have not been sent.": {
      "main": [
        [
          {
            "node": "Step 44: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 13: Extract the email and member ID of the partners.": {
      "main": [
        [
          {
            "node": "Step 12: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 1: Activation schedule: Every 1 hour, from 6 AM to 6 PM.": {
      "main": [
        [
          {
            "node": "Step 2: Set Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 38: Get the event information from Google Calendar for today.": {
      "main": [
        [
          {
            "node": "Step 39: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 20: Get the event information from Google Calendar for today..": {
      "main": [
        [
          {
            "node": "Step 21: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 19: Fill in the Calendar Event information in the Google Sheet.": {
      "main": [
        [
          {
            "node": "Step 18: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 37: Fill in the Calendar Event information in the Google Sheet.": {
      "main": [
        [
          {
            "node": "Step 36: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 4: Get the event information from Google Calendar for tomorrow.": {
      "main": [
        [
          {
            "node": "Step 5: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 55: Fill in the Calendar Event information in the Google Sheet.": {
      "main": [
        [
          {
            "node": "Step 54: Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 8: Read the Odoo Calendar Event notifications that have been sent.": {
      "main": [
        [
          {
            "node": "Step 9: Read Google Sheets member slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 24: Read the Odoo Calendar Event notifications that have been sent.": {
      "main": [
        [
          {
            "node": "Step 25: Filter out records that have not been sent.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 42: Read the Odoo Calendar Event notifications that have been sent.": {
      "main": [
        [
          {
            "node": "Step 43: Filter out records that have not been sent.",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 34: Call the completeUploadExternal Slack API to complete the file upload.": {
      "main": [
        [
          {
            "node": "Step 35: Return output of step 25",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 52: Call the completeUploadExternal Slack API to complete the file upload.": {
      "main": [
        [
          {
            "node": "Step 53: Return output of step 43",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 6: Filter out events whose titles match the action of a customer visiting the company.": {
      "main": [
        [
          {
            "node": "Step 7: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 22: Filter out events whose titles match the action of a customer visiting the company.": {
      "main": [
        [
          {
            "node": "Step 23: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Step 40: Filter out events whose titles match the action of a customer visiting the company.": {
      "main": [
        [
          {
            "node": "Step 41: Check if there is a record or not?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}