{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "5b691df1-5ce9-4ed2-8c62-46f3dc01e9a2",
      "name": "6 AM Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        224,
        -336
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 6 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "a9a40d14-9f77-4d9a-bdb6-39394fd6a9f4",
      "name": "Get Today's Events",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        448,
        -336
      ],
      "parameters": {
        "options": {
          "orderBy": "startTime",
          "timeMax": "={{ $now.endOf('day').toISO() }}",
          "timeMin": "={{ $now.startOf('day').toISO() }}",
          "singleEvents": true
        },
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "Template_sheet_id"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5276e607-6717-4957-a10b-422760a31a76",
      "name": "Format HTML Email",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        -336
      ],
      "parameters": {
        "jsCode": "const events = $input.all();\n\nif (events.length === 0) {\n  return [{ \n    json: { \n      emailBody: '<div style=\"font-family: Arial, sans-serif; padding: 20px;\"><h2>No Events Today</h2><p>You have a free day! \u2600\ufe0f</p></div>', \n      eventCount: 0,\n      hasEvents: false\n    } \n  }];\n}\n\n// Build HTML email\nlet html = `\n<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px;\">\n  <div style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; border-radius: 10px 10px 0 0; text-align: center;\">\n    <h1 style=\"margin: 0; font-size: 28px;\">\ud83d\udcc5 Your Schedule</h1>\n    <p style=\"margin: 10px 0 0 0; opacity: 0.9;\">${new Date().toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' })}</p>\n  </div>\n  <div style=\"background: #f9fafb; padding: 30px; border-radius: 0 0 10px 10px;\">\n`;\n\nfor (const event of events) {\n  const eventData = event.json;\n  const start = new Date(eventData.start.dateTime || eventData.start.date);\n  const end = eventData.end ? new Date(eventData.end.dateTime || eventData.end.date) : null;\n  \n  const isAllDay = !eventData.start.dateTime;\n  const timeStr = isAllDay ? 'All Day' : start.toLocaleTimeString('en-US', { \n    hour: 'numeric', \n    minute: '2-digit',\n    hour12: true\n  });\n  \n  const endTimeStr = (end && !isAllDay) ? ' - ' + end.toLocaleTimeString('en-US', { \n    hour: 'numeric', \n    minute: '2-digit',\n    hour12: true\n  }) : '';\n  \n  html += `\n    <div style=\"background: white; margin-bottom: 15px; padding: 20px; border-radius: 8px; border-left: 4px solid #667eea; box-shadow: 0 2px 4px rgba(0,0,0,0.1);\">\n      <div style=\"color: #667eea; font-weight: bold; font-size: 16px; margin-bottom: 8px;\">\n        ${timeStr}${endTimeStr}\n      </div>\n      <div style=\"font-size: 18px; font-weight: 600; color: #1f2937; margin-bottom: 8px;\">\n        ${eventData.summary}\n      </div>\n  `;\n  \n  if (eventData.location) {\n    html += `<div style=\"color: #6b7280; font-size: 14px; margin-bottom: 5px;\">\ud83d\udccd ${eventData.location}</div>`;\n  }\n  \n  if (eventData.description) {\n    const desc = eventData.description.replace(/\\n/g, '<br>');\n    html += `<div style=\"color: #6b7280; font-size: 14px; margin-top: 10px; padding-top: 10px; border-top: 1px solid #e5e7eb;\">${desc}</div>`;\n  }\n  \n  html += '</div>';\n}\n\nhtml += `\n    <div style=\"text-align: center; margin-top: 30px; padding-top: 20px; border-top: 2px solid #e5e7eb; color: #6b7280; font-size: 14px;\">\n      Total: ${events.length} event${events.length !== 1 ? 's' : ''}\n    </div>\n  </div>\n</div>\n`;\n\nreturn [{ \n  json: { \n    emailBody: html, \n    eventCount: events.length,\n    hasEvents: true,\n    subject: `Your Schedule for ${new Date().toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })} - ${events.length} event${events.length !== 1 ? 's' : ''}`\n  } \n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "6d656a85-0e32-4351-8c24-f38dd58bb715",
      "name": "Send Email - Mailchimp Transactional",
      "type": "n8n-nodes-base.mailchimp",
      "notes": "Note: For Mailchimp Transactional (Mandrill), you may need to use HTTP Request node instead",
      "position": [
        896,
        -512
      ],
      "parameters": {
        "operation": "send"
      },
      "credentials": {
        "mailchimpApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e53a471a-b992-4844-876e-4544bdff7626",
      "name": "7 AM Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        224,
        -96
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 7 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ebdca122-34a2-4046-bcda-bbf361c1c08a",
      "name": "Format SMS Message",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        -96
      ],
      "parameters": {
        "jsCode": "const events = $input.all();\n\nif (events.length === 0) {\n  return [{ \n    json: { \n      smsBody: '\ud83d\udcc5 No events scheduled for today. Enjoy your free day!',\n      hasEvents: false\n    } \n  }];\n}\n\nlet message = `\ud83d\udcc5 Today's Schedule (${new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}):\\n\\n`;\n\nfor (const event of events) {\n  const eventData = event.json;\n  const start = new Date(eventData.start.dateTime || eventData.start.date);\n  \n  const isAllDay = !eventData.start.dateTime;\n  const timeStr = isAllDay ? 'All Day' : start.toLocaleTimeString('en-US', { \n    hour: 'numeric', \n    minute: '2-digit',\n    hour12: true\n  });\n  \n  message += `\u23f0 ${timeStr}\\n${eventData.summary}`;\n  \n  if (eventData.location) {\n    message += `\\n\ud83d\udccd ${eventData.location}`;\n  }\n  \n  message += '\\n\\n';\n}\n\nmessage += `Total: ${events.length} event${events.length !== 1 ? 's' : ''}`;\n\nreturn [{ \n  json: { \n    smsBody: message,\n    hasEvents: true,\n    eventCount: events.length\n  } \n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "38ffbe70-59d0-4f20-b23d-263ad46f42bd",
      "name": "Get Today's Events1",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        448,
        -96
      ],
      "parameters": {
        "options": {
          "orderBy": "startTime",
          "timeMax": "={{ $now.endOf('day').toISO() }}",
          "timeMin": "={{ $now.startOf('day').toISO() }}",
          "singleEvents": true
        },
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "Template_sheet_id"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1f9d8602-d3bc-4c2d-97ed-18c31a005cc2",
      "name": "Check Every 5 Minutes1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Checks every 5 minutes to catch events that need 15-min reminders",
      "position": [
        208,
        320
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fc27caf0-857b-460d-b383-bdeae420a74e",
      "name": "Get Events in Next 20 Min1",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        432,
        320
      ],
      "parameters": {
        "options": {
          "orderBy": "startTime",
          "timeMax": "={{ $now.plus({ minutes: 20 }).toISO() }}",
          "timeMin": "={{ $now.toISO() }}",
          "singleEvents": true
        },
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "Template_sheet_id"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "677ad906-d696-46ba-8e75-ca9f625b25d3",
      "name": "Format Reminder SMS1",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        320
      ],
      "parameters": {
        "jsCode": "const events = $input.all();\nconst eventCount = events.length;\n\n// If no events, return empty result\nif (eventCount === 0) {\n  return [{\n    json: {\n      eventCount: 0,\n      smsBody: 'No events found for today.',\n      events: []\n    }\n  }];\n}\n\n// Build SMS message\nlet message = `\ud83d\udcc5 Today's Schedule (${eventCount} event${eventCount !== 1 ? 's' : ''}):\\n\\n`;\n\n// Collect event details\nconst eventDetails = [];\n\nfor (const event of events) {\n  const eventData = event.json;\n  \n  // Parse start time\n  const start = new Date(eventData.start.dateTime || eventData.start.date);\n  const isAllDay = !eventData.start.dateTime;\n  \n  const timeStr = isAllDay ? 'All Day' : start.toLocaleTimeString('en-US', { \n    hour: 'numeric', \n    minute: '2-digit',\n    hour12: true\n  });\n  \n  // Build message for this event\n  const title = eventData.summary || 'Untitled Event';\n  message += `\u23f0 ${timeStr}\\n${title}\\n`;\n  \n  if (eventData.location) {\n    message += `\ud83d\udccd ${eventData.location}\\n`;\n  }\n  \n  if (eventData.description) {\n    const shortDesc = eventData.description.substring(0, 60);\n    message += `${shortDesc}${eventData.description.length > 60 ? '...' : ''}\\n`;\n  }\n  \n  message += '\\n';\n  \n  // Store event details\n  eventDetails.push({\n    id: eventData.id,\n    title: title,\n    startTime: timeStr,\n    startDateTime: eventData.start.dateTime || eventData.start.date,\n    endDateTime: eventData.end.dateTime || eventData.end.date,\n    location: eventData.location || 'No location',\n    description: eventData.description || '',\n    status: eventData.status,\n    isAllDay: isAllDay,\n    htmlLink: eventData.htmlLink\n  });\n}\n\nreturn [{\n  json: {\n    eventCount: eventCount,\n    smsBody: message.trim(),\n    events: eventDetails,\n    date: new Date().toISOString().split('T')[0]\n  }\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "cb8e4f2c-f5c2-46eb-a6d9-098bb8e2701c",
      "name": "Sunday 6 PM Trigger1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Triggers every Sunday at 6 PM",
      "position": [
        208,
        672
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 18 * * 0"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "25092f71-7b8f-4571-b190-fa4670436433",
      "name": "Get Next 7 Days1",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        432,
        672
      ],
      "parameters": {
        "options": {
          "orderBy": "startTime",
          "timeMax": "={{ $now.plus({ days: 8 }).startOf('day').toISO() }}",
          "timeMin": "={{ $now.plus({ days: 1 }).startOf('day').toISO() }}",
          "singleEvents": true
        },
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "Template_sheet_id"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ed2164a1-4825-4e21-b1e8-2796e517962d",
      "name": "Format Weekly Summary1",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        672
      ],
      "parameters": {
        "jsCode": "const events = $input.all();\n\nif (events.length === 0) {\n  return [{ \n    json: { \n      smsBody: '\ud83d\udcc5 Your Week Ahead:\\n\\nNo events scheduled for the upcoming week. Time to plan something!',\n      hasEvents: false\n    } \n  }];\n}\n\n// Group events by day\nconst dayGroups = {};\nconst dayOrder = [];\n\nfor (const event of events) {\n  const eventData = event.json;\n  const start = new Date(eventData.start.dateTime || eventData.start.date);\n  \n  const dayKey = start.toLocaleDateString('en-US', { \n    weekday: 'long',\n    month: 'short',\n    day: 'numeric'\n  });\n  \n  if (!dayGroups[dayKey]) {\n    dayGroups[dayKey] = [];\n    dayOrder.push(dayKey);\n  }\n  \n  const isAllDay = !eventData.start.dateTime;\n  const timeStr = isAllDay ? 'All Day' : start.toLocaleTimeString('en-US', { \n    hour: 'numeric', \n    minute: '2-digit',\n    hour12: true\n  });\n  \n  dayGroups[dayKey].push({\n    time: timeStr,\n    summary: eventData.summary,\n    location: eventData.location\n  });\n}\n\n// Build message\nlet message = '\ud83d\udcc5 Your Week Ahead:\\n\\n';\n\nfor (const day of dayOrder) {\n  const dayEvents = dayGroups[day];\n  message += `\\n${day}:\\n`;\n  \n  for (const event of dayEvents) {\n    message += `  \u2022 ${event.time} - ${event.summary}`;\n    if (event.location) {\n      message += ` @ ${event.location}`;\n    }\n    message += '\\n';\n  }\n}\n\nmessage += `\\nTotal: ${events.length} event${events.length !== 1 ? 's' : ''} this week`;\n\nreturn [{ \n  json: { \n    smsBody: message,\n    hasEvents: true,\n    eventCount: events.length,\n    dayCount: dayOrder.length\n  } \n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "dc72fb23-f78d-412c-b286-442728af7a43",
      "name": "Twilio SMS",
      "type": "n8n-nodes-base.twilio",
      "position": [
        896,
        -96
      ],
      "parameters": {
        "to": "Recipient_number",
        "from": "Your_Twillo_number",
        "message": "={{ $('Format SMS Message').item.json.smsBody }}",
        "options": {}
      },
      "credentials": {
        "twilioApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b9865c86-5393-4abd-b81f-8551d738214a",
      "name": "Twilio SMS1",
      "type": "n8n-nodes-base.twilio",
      "position": [
        880,
        320
      ],
      "parameters": {
        "to": "Recipient_number",
        "from": "Your_Twillo_number",
        "message": "={{ $('Format Reminder SMS1').item.json.smsBody }}",
        "options": {}
      },
      "credentials": {
        "twilioApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "50dc5e30-0389-4c35-8806-351a5e481a7f",
      "name": "Twilio SMS2",
      "type": "n8n-nodes-base.twilio",
      "position": [
        880,
        672
      ],
      "parameters": {
        "to": "Recipient_number",
        "from": "+1234567890",
        "message": "={{ $('Format Weekly Summary1').item.json.smsBody }}",
        "options": {}
      },
      "credentials": {
        "twilioApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7772cf91-7ff7-4f36-b8ea-2cfde7ce3f9d",
      "name": "Send an email",
      "type": "n8n-nodes-base.sendGrid",
      "position": [
        896,
        -336
      ],
      "parameters": {
        "subject": "={{ $json.subject }}",
        "toEmail": "Recipient_email",
        "fromName": "Your_name",
        "resource": "mail",
        "fromEmail": "Your_email",
        "contentType": "text/html",
        "contentValue": "={{ $json.emailBody }}",
        "additionalFields": {}
      },
      "credentials": {
        "sendGridApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5627f00a-10b0-4fe4-9c90-5150b7edc27c",
      "name": "Append to Execution Log5",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1152,
        -336
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "=success",
            "End Time": "={{ new Date().toISOString().split('T')[0] }}",
            "Start Time": "={{ new Date().toISOString() }}",
            "Duration (s)": "=not tracked -",
            "Execution ID": "={{ $json.messageId || 'N\\A'}}",
            "Error Message": "=",
            "Workflow Name": "=\ud83d\udce7 Daily Email Summary",
            "Events Processed": "={{ $('Format HTML Email').item.json.eventCount }}"
          },
          "schema": [
            {
              "id": "Execution ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Execution ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Workflow Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Workflow Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Duration (s)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Duration (s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Events Processed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Events Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Start Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Start Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "End Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "End Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Error Message",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Error Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "executionId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3
            }
          }
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2068938043,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=2068938043",
          "cachedResultName": "Execution Log"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "0ed219e7-4718-4cd2-ba76-8f9681f4e7ba",
      "name": "Append to Execution Log7",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1152,
        -96
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "=success",
            "End Time": "={{ new Date().toISOString().split('T')[0] }}",
            "Start Time": "={{ new Date().toISOString() }}",
            "Duration (s)": "=not tracked -",
            "Execution ID": "={{ $json.messageId || 'N\\A'}}",
            "Error Message": "=",
            "Workflow Name": "=\ud83d\udcf1 Daily SMS Summary",
            "Events Processed": "={{ $('Format SMS Message').item.json.eventCount }}"
          },
          "schema": [
            {
              "id": "Execution ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Execution ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Workflow Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Workflow Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Duration (s)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Duration (s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Events Processed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Events Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Start Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Start Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "End Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "End Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Error Message",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Error Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "executionId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3
            }
          }
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2068938043,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=2068938043",
          "cachedResultName": "Execution Log"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "24e25e70-10d5-4cf5-a033-293910a6a80c",
      "name": "Append to Execution Log8",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1136,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "=success",
            "End Time": "={{ new Date().toISOString().split('T')[0] }}",
            "Start Time": "={{ new Date().toISOString() }}",
            "Duration (s)": "=not tracked -",
            "Execution ID": "={{ $json.messageId || 'N\\A' }}",
            "Error Message": "=",
            "Workflow Name": "=\u23f0 15-Minute Reminders",
            "Events Processed": "={{ $('Format Reminder SMS1').item.json.eventCount }}"
          },
          "schema": [
            {
              "id": "Execution ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Execution ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Workflow Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Workflow Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Duration (s)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Duration (s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Events Processed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Events Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Start Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Start Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "End Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "End Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Error Message",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Error Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "executionId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3
            }
          }
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2068938043,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=2068938043",
          "cachedResultName": "Execution Log"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "b28d200c-1bb2-4ae4-b686-aa8346c8c675",
      "name": "Append to Execution Log9",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1136,
        672
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "=success",
            "End Time": "={{ new Date().toISOString().split('T')[0] }}",
            "Start Time": "={{ new Date().toISOString() }}",
            "Duration (s)": "=not tracked -",
            "Execution ID": "={{ $json.messageId || 'N\\A' }}",
            "Error Message": "=",
            "Workflow Name": "=\ud83d\udcc5 Weekly Preview",
            "Events Processed": "={{ $('Format Weekly Summary1').item.json.eventCount }}"
          },
          "schema": [
            {
              "id": "Execution ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Execution ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Workflow Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Workflow Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Duration (s)",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Duration (s)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Events Processed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Events Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Start Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Start Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "End Time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "End Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Error Message",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Error Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "executionId"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3
            }
          }
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2068938043,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=2068938043",
          "cachedResultName": "Execution Log"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "2ee2913c-e93a-4dd0-90e0-aad8110e384e",
      "name": "Update or append daily stats",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1392,
        -336
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json[\"End Time\"] }}",
            "SMS Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*SMS*\"\n)\n",
            "Email Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Email*\"\n)\n",
            "Weekly Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Weekly*\"\n)\n",
            "Total Events": "==SUMIFS('Execution Log'!E4:E,'Execution Log'!G4:G,\">=\"& INDEX(A:A, ROW()),'Execution Log'!G4:G,\"<\"& INDEX(A:A, ROW())+1)",
            "Reminder Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Reminder*\"\n)\n"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMS Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SMS Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reminder Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reminder Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Weekly Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Weekly Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Events",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Events",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3,
              "firstDataRow": 4
            }
          }
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 433157270,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=433157270",
          "cachedResultName": "Daily Stats"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ae950134-a459-428f-91fa-344bc2fb0832",
      "name": "Update or append daily stats1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1376,
        -96
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json[\"End Time\"] }}",
            "SMS Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*SMS*\"\n)\n",
            "Email Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Email*\"\n)\n",
            "Weekly Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Weekly*\"\n)\n",
            "Total Events": "==SUMIFS('Execution Log'!E4:E,'Execution Log'!G4:G,\">=\"& INDEX(A:A, ROW()),'Execution Log'!G4:G,\"<\"& INDEX(A:A, ROW())+1)",
            "Reminder Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Reminder*\"\n)\n"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMS Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SMS Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reminder Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reminder Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Weekly Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Weekly Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Events",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Events",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3,
              "firstDataRow": 4
            }
          }
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 433157270,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=433157270",
          "cachedResultName": "Daily Stats"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "015ea5fa-3da4-4f85-86a5-2a4fda183471",
      "name": "Update or append daily stats2",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1376,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json[\"End Time\"] }}",
            "SMS Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*SMS*\"\n)\n",
            "Email Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Email*\"\n)\n",
            "Weekly Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Weekly*\"\n)\n",
            "Total Events": "==SUMIFS('Execution Log'!E4:E,'Execution Log'!G4:G,\">=\"& INDEX(A:A, ROW()),'Execution Log'!G4:G,\"<\"& INDEX(A:A, ROW())+1)",
            "Reminder Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Reminder*\"\n)\n"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMS Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SMS Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reminder Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reminder Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Weekly Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Weekly Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Events",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Events",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3,
              "firstDataRow": 4
            }
          }
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 433157270,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=433157270",
          "cachedResultName": "Daily Stats"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5ad580b3-7e63-47a3-8b06-146af13abd61",
      "name": "Update or append daily stats3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1360,
        672
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json[\"End Time\"] }}",
            "SMS Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*SMS*\"\n)\n",
            "Email Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Email*\"\n)\n",
            "Weekly Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Weekly*\"\n)\n",
            "Total Events": "==SUMIFS('Execution Log'!E4:E,'Execution Log'!G4:G,\">=\"& INDEX(A:A, ROW()),'Execution Log'!G4:G,\"<\"& INDEX(A:A, ROW())+1)",
            "Reminder Runs": "==COUNTIFS(\n  'Execution Log'!G:G, \">=\" & INDEX(A:A, ROW()),\n  'Execution Log'!G:G, \"<\" & INDEX(A:A, ROW()) + 1,\n  'Execution Log'!B:B, \"*Reminder*\"\n)\n"
          },
          "schema": [
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SMS Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "SMS Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reminder Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reminder Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Weekly Runs",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Weekly Runs",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Total Events",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Total Events",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "locationDefine": {
            "values": {
              "headerRow": 3,
              "firstDataRow": 4
            }
          }
        },
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 433157270,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit#gid=433157270",
          "cachedResultName": "Daily Stats"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KN2xXQQ20-WUTmUULKs_jKqrjiVwmRP2g4GQ8mAv-vE/edit?usp=drivesdk",
          "cachedResultName": "Calendar Analytics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7af73f93-f434-4ae5-9344-be99542ef098",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        -768
      ],
      "parameters": {
        "color": 7,
        "width": 1504,
        "height": 960,
        "content": "## 1.  Daily Email and SMS Summary"
      },
      "typeVersion": 1
    },
    {
      "id": "f7776254-ce07-499b-a109-c2ed66115c3b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        224
      ],
      "parameters": {
        "color": 7,
        "width": 1536,
        "height": 320,
        "content": "## 2. 15-minute SMS Reminder before Events"
      },
      "typeVersion": 1
    },
    {
      "id": "d8a05f69-ae2b-4ff4-b625-c0e32b01c5c5",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        96,
        576
      ],
      "parameters": {
        "color": 7,
        "width": 1536,
        "height": 320,
        "content": "## 3. Next 7-day Weekly Sunday SMS Review"
      },
      "typeVersion": 1
    },
    {
      "id": "a22a9b1f-57b8-4c9f-ba76-12b35e495a62",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        -800
      ],
      "parameters": {
        "width": 640,
        "height": 832,
        "content": "## Auto Calendar Notifications and Real-Time Reporting with n8n and App Script\n\n## How it works\n- **Schedule Trigger** is to set a trigger on the precise time to run\n- **Google Calendar node** to read through your events and output calendar events\n- **The Code nodes** are used to filter, merge, and format data to be used in the workflow\n- Can use **MailChimp** or **SendGrid** to send email to the team\n- **Twillo node** is used to send sms reminders to the team\n- **Google Sheet** is used to append and update data to deliver efficient reporting - report webpage attached below\n\n## Setup\n1. Get the **3-sheet** Google Sheet template below \n2. Get the **App Script** code below. Click extension, go to App script, paste code and authorize as web. Copy and paste the generated WebHook URL in the reporting webpage WebHook section\n3. Get the WebPage below and edit the WebHook\n4. Set up **[Twillo](https://console.twilio.com/)** and add credential. Free $15 to test\n5. Set up **[Google Cloud](https://console.cloud.google.com/)** and enable **Google Calendar**. Add in credentials\n6. Set up SendGrid or MailChimp, depending on platform use.\n\n\n## [Get 3-sheet G/Sheet template](https://docs.google.com/spreadsheets/d/1S91eS0LV51DZ_9KkA20tfns27umyOU5V/edit?usp=drive_link&ouid=113513617635127854147&rtpof=true&sd=true)\n## [Get App Script Code](https://drive.google.com/file/d/1iamkTByQ00aNVsjkr7Nfz1mtn9_b03g9/view?usp=drive_link)\n## [Get the Report WebPage site](https://drive.google.com/file/d/1R0-v8nMEOjYDkaodhsFxo-eTXIByE6fP/view?usp=sharing)"
      },
      "typeVersion": 1
    },
    {
      "id": "caead13e-f0e5-4b9d-9cac-319a24d2e6a5",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        -704
      ],
      "parameters": {
        "color": 5,
        "width": 272,
        "height": 544,
        "content": "## Can work with MailChimp by replacing with SendGrid - Standard plan or higher"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Twilio SMS": {
      "main": [
        [
          {
            "node": "Append to Execution Log7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Twilio SMS1": {
      "main": [
        [
          {
            "node": "Append to Execution Log8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Twilio SMS2": {
      "main": [
        [
          {
            "node": "Append to Execution Log9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send an email": {
      "main": [
        [
          {
            "node": "Append to Execution Log5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Next 7 Days1": {
      "main": [
        [
          {
            "node": "Format Weekly Summary1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format HTML Email": {
      "main": [
        [
          {
            "node": "Send an email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6 AM Daily Trigger": {
      "main": [
        [
          {
            "node": "Get Today's Events",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7 AM Daily Trigger": {
      "main": [
        [
          {
            "node": "Get Today's Events1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format SMS Message": {
      "main": [
        [
          {
            "node": "Twilio SMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Today's Events": {
      "main": [
        [
          {
            "node": "Format HTML Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Today's Events1": {
      "main": [
        [
          {
            "node": "Format SMS Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Reminder SMS1": {
      "main": [
        [
          {
            "node": "Twilio SMS1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sunday 6 PM Trigger1": {
      "main": [
        [
          {
            "node": "Get Next 7 Days1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Every 5 Minutes1": {
      "main": [
        [
          {
            "node": "Get Events in Next 20 Min1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Weekly Summary1": {
      "main": [
        [
          {
            "node": "Twilio SMS2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append to Execution Log5": {
      "main": [
        [
          {
            "node": "Update or append daily stats",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append to Execution Log7": {
      "main": [
        [
          {
            "node": "Update or append daily stats1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append to Execution Log8": {
      "main": [
        [
          {
            "node": "Update or append daily stats2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append to Execution Log9": {
      "main": [
        [
          {
            "node": "Update or append daily stats3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Events in Next 20 Min1": {
      "main": [
        [
          {
            "node": "Format Reminder SMS1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}