{
  "name": "Send Daily Birthday Reminders from Google Contacts to Slack",
  "nodes": [
    {
      "id": "e4de5385-6b00-4245-b06e-3003703a348a",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        80,
        140
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "df65de90-d931-450e-bed1-bf8b4f79a090",
      "name": "Google Contacts",
      "type": "n8n-nodes-base.googleContacts",
      "notes": "Get the contact details\n",
      "position": [
        300,
        140
      ],
      "parameters": {
        "fields": [
          "emailAddresses",
          "birthdays",
          "names",
          "nicknames"
        ],
        "options": {},
        "operation": "getAll",
        "returnAll": true
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "6e3dfeea-b22d-4156-a9a9-a8d5bb610848",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        800,
        180
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "eff6fe23-651d-474d-8d77-3734e1ac4c13",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.today }}",
              "rightValue": "={{ $('Google Contacts').item.json.birthdays }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "32bd420e-11ab-4e82-a732-ed155f36094b",
      "name": "Slack",
      "type": "n8n-nodes-base.slack",
      "notes": "Reminds to the birthday message",
      "position": [
        1020,
        60
      ],
      "parameters": {
        "text": "Todays Birthday of your friend",
        "select": "channel",
        "blocksUi": "=Today is {{$json[\"first_name\"]}} {{$json[\"last_name\"]}}'s birthday! 🎉",
        "channelId": {
          "__rl": true,
          "mode": "url",
          "value": "REPLACE_WITH_RESOURCE",
          "__regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
        },
        "messageType": "block",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "notesInFlow": true,
      "typeVersion": 2.3
    },
    {
      "id": "caa5a301-ff68-4d61-801f-ac8c95edded3",
      "name": "Filter Contact ",
      "type": "n8n-nodes-base.filter",
      "position": [
        560,
        140
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "edb146b2-f338-4563-a991-d38613d1d5aa",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $('Google Contacts').item.json.birthdays }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4a156b56-ab25-4d29-aa1b-8cf00e4114c9",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "width": 1220,
        "height": 320,
        "content": "Send Daily Birthday Reminders from Google Contacts to Slack"
      },
      "typeVersion": 1
    },
    {
      "id": "b1b04e75-e674-4389-a5ad-ebdcdfedca78",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        360
      ],
      "parameters": {
        "width": 1220,
        "height": 100,
        "content": "This workflow automates the process of retrieving your Google Contacts, filtering out the ones with birthdays on the current day, and sending a reminder to a designated Slack channel. By scheduling it to run daily at a specific time, the workflow ensures that you never miss a birthday reminder. Whether for team celebrations, personal reminders, or simply keeping track of important dates, this workflow can be easily customized to notify you or your team about upcoming birthdays directly in Slack."
      },
      "typeVersion": 1
    },
    {
      "id": "d38ac464-95ee-5d85-81af-bd74df4615cc",
      "name": "Publication · Overview and setup",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -800,
        0
      ],
      "parameters": {
        "content": "# Send Daily Birthday Reminders from Google Contacts to Slack\n\n## Purpose and structure\nThis folder contains the **Send Daily Birthday Reminders from Google Contacts to Slack** workflow. Its executable nodes use `filter`, `googleContacts`, `if`, `scheduleTrigger`, `slack`. The table and connection map below are derived from the JSON, not an inferred guarantee of behavior.\n\n## Setup\nImport inactive. Configure your own credentials and replace REPLACE_WITH_* values. Review external destinations and Code nodes before running.\n\n## Entry points\nSchedule Trigger\n\n## Verification\nSanitized source candidate; not runtime-tested. This overview is generated from node metadata. Read the folder README for the connection map, credential types, and license.\n\n## Attribution\nhttps://github.com/Zie619/n8n-workflows/blob/94007c1445d9258a7da116646b79473e7c7c3282/workflows/Googlecontacts/1239_Googlecontacts_Schedule_Send_Scheduled.json\nMIT; preserve source notices.",
        "width": 700,
        "height": 800,
        "color": 1
      }
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Contact ": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Contacts": {
      "main": [
        [
          {
            "node": "Filter Contact ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Google Contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
