AutomationFlowsGeneral › Daily Birthday SMS via Google Sheets & Twilio

Daily Birthday SMS via Google Sheets & Twilio

Original n8n title: Automated Congratulations with Google Sheets Twilio and N8n

Automated Congratulations With Google Sheets Twilio And N8N. Uses googleSheets, noOp, twilio. Scheduled trigger; 8 nodes.

Cron / scheduled trigger★★★★☆ complexity8 nodesGoogle SheetsTwilio
General Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "name": "Daily Trigger",
      "type": "n8n-nodes-base.cron",
      "position": [
        200,
        400
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "hour": 8
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Congratulations Calendar",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        400,
        400
      ],
      "parameters": {
        "range": "A:E",
        "options": {
          "valueRenderMode": "FORMATTED_VALUE"
        },
        "sheetId": "",
        "authentication": "oAuth2"
      },
      "credentials": {
        "googleSheetsOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Any Event Today?",
      "type": "n8n-nodes-base.if",
      "position": [
        600,
        400
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$node[\"Congratulations Calendar\"].json[\"Date\"]}}",
              "value2": "={{(new Date).getDate()}}/{{(new Date).getMonth()+1}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Do Nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        800,
        550
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "name": "Congratulations Messages",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1000,
        550
      ],
      "parameters": {
        "range": "Congratulations Messages!A:B",
        "options": {},
        "sheetId": "",
        "authentication": "oAuth2"
      },
      "credentials": {
        "googleSheetsOAuth2Api": "<your credential>"
      },
      "typeVersion": 1
    },
    {
      "name": "Merge Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        1200,
        400
      ],
      "parameters": {
        "mode": "mergeByKey",
        "propertyName1": "Event Name",
        "propertyName2": "Event Name"
      },
      "typeVersion": 1
    },
    {
      "name": "Personalize Message",
      "type": "n8n-nodes-base.function",
      "position": [
        1400,
        400
      ],
      "parameters": {
        "functionCode": "const newItems = [];\n\nfor (let i=0;i<items.length;i++) {\n  wishes_array = items[i].json.Congratulations.split(',');\n  greeting = wishes_array.shift();\n  \n  new_wish = greeting + ' ' + items[i].json['First Name'] + ',' + wishes_array.join(',');\n  newItems.push({json: {Wishes: new_wish, \"Phone Number\": items[i].json['Phone Number']}});\n}\n\nreturn newItems;"
      },
      "typeVersion": 1
    },
    {
      "name": "Send SMS",
      "type": "n8n-nodes-base.twilio",
      "position": [
        1600,
        400
      ],
      "parameters": {
        "to": "={{$node[\"Personalize Message\"].json[\"Phone Number\"]}}",
        "from": "",
        "message": "={{$node[\"Personalize Message\"].json[\"Wishes\"]}}"
      },
      "credentials": {
        "twilioApi": "<your credential>"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Merge Data": {
      "main": [
        [
          {
            "node": "Personalize Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Trigger": {
      "main": [
        [
          {
            "node": "Congratulations Calendar",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Any Event Today?": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Do Nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Personalize Message": {
      "main": [
        [
          {
            "node": "Send SMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Congratulations Calendar": {
      "main": [
        [
          {
            "node": "Any Event Today?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Congratulations Messages": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automated Congratulations With Google Sheets Twilio And N8N. Uses googleSheets, noOp, twilio. Scheduled trigger; 8 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

Dm-Profile-Visitors. Uses httpRequest, googleSheets. Scheduled trigger; 21 nodes.

HTTP Request, Google Sheets
General

CMS Content Upload Automation. Uses googleSheets, httpRequest. Scheduled trigger; 10 nodes.

Google Sheets, HTTP Request
General

P-ACA 학생 동기화. Uses httpRequest, googleSheets. Scheduled trigger; 9 nodes.

HTTP Request, Google Sheets
General

Google Maps. Uses scheduleTrigger, httpRequest, splitInBatches, googleSheets. Scheduled trigger; 7 nodes.

HTTP Request, Google Sheets
General

Google Maps Business Scraper. Uses scheduleTrigger, googleSheets, httpRequest. Scheduled trigger; 5 nodes.

Google Sheets, HTTP Request