AutomationFlowsData & Sheets › Loop 5 — Outreach

Loop 5 — Outreach

Loop 5 — Outreach. Uses airtable. Scheduled trigger; 6 nodes.

Cron / scheduled trigger★★★★☆ complexity6 nodesAirtable
Data & Sheets Trigger: Cron / scheduled Nodes: 6 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
{
  "name": "Loop 5 \u2014 Outreach",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 30
            }
          ]
        }
      },
      "id": "node-cron-5",
      "name": "Cron Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        200,
        300
      ]
    },
    {
      "parameters": {
        "operation": "list",
        "base": {
          "__rl": true,
          "value": "YOUR_AIRTABLE_BASE_ID",
          "mode": "id"
        },
        "table": {
          "__rl": true,
          "value": "Leads",
          "mode": "name"
        },
        "filterByFormula": "AND({status}='active',{segment}!='',{next_outreach_at}!='',IS_BEFORE({next_outreach_at},NOW()))"
      },
      "id": "node-at-list-5",
      "name": "List Due Leads",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        420,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true
                },
                "conditions": [
                  {
                    "leftValue": "={{$json.fields.segment}}",
                    "rightValue": "hot",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              }
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true
                },
                "conditions": [
                  {
                    "leftValue": "={{$json.fields.segment}}",
                    "rightValue": "warm",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ]
              }
            }
          ]
        }
      },
      "id": "node-switch-5",
      "name": "Switch Segment",
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3,
      "position": [
        640,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "const seg=$json.fields?.segment||'cold';\nconst subjects={hot:'Quick check-in',warm:'Thought this might help',cold:'Staying in touch'};\nconst bodies={hot:'Hi {{name}}, I wanted to connect directly - are you available for a quick call this week?',warm:'Hi {{name}}, I thought this resource might be valuable for what you are working on.',cold:'Hi {{name}}, just staying on your radar in case the timing is better now.'};\nconst mins={hot:30,warm:120,cold:1440};\nconst next=new Date(Date.now()+mins[seg]*60000).toISOString();\nreturn[{json:{...$json,subject:subjects[seg],body:bodies[seg],next_outreach_at:next,last_outreach_at:new Date().toISOString()}}];"
      },
      "id": "node-build-msg-5",
      "name": "Build Message",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        860,
        300
      ]
    },
    {
      "parameters": {
        "operation": "create",
        "base": {
          "__rl": true,
          "value": "YOUR_AIRTABLE_BASE_ID",
          "mode": "id"
        },
        "table": {
          "__rl": true,
          "value": "Interactions",
          "mode": "name"
        },
        "fields": {
          "fieldMappingMode": "defineBelow",
          "value": {
            "values": [
              {
                "fieldId": "lead_id",
                "fieldValue": "={{$json.id}}"
              },
              {
                "fieldId": "type",
                "fieldValue": "outreach"
              },
              {
                "fieldId": "channel",
                "fieldValue": "email"
              },
              {
                "fieldId": "direction",
                "fieldValue": "outbound"
              },
              {
                "fieldId": "subject",
                "fieldValue": "={{$json.subject}}"
              },
              {
                "fieldId": "segment_at_time",
                "fieldValue": "={{$json.fields.segment}}"
              },
              {
                "fieldId": "score_at_time",
                "fieldValue": "={{$json.fields.score}}"
              },
              {
                "fieldId": "status",
                "fieldValue": "sent"
              },
              {
                "fieldId": "loop_source",
                "fieldValue": "loop_5"
              },
              {
                "fieldId": "created_at",
                "fieldValue": "={{$json.last_outreach_at}}"
              }
            ]
          }
        }
      },
      "id": "node-at-interact-5",
      "name": "Log Interaction",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        1080,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "base": {
          "__rl": true,
          "value": "YOUR_AIRTABLE_BASE_ID",
          "mode": "id"
        },
        "table": {
          "__rl": true,
          "value": "Leads",
          "mode": "name"
        },
        "id": "={{$json.id}}",
        "fields": {
          "fieldMappingMode": "defineBelow",
          "value": {
            "values": [
              {
                "fieldId": "last_outreach_at",
                "fieldValue": "={{$json.last_outreach_at}}"
              },
              {
                "fieldId": "next_outreach_at",
                "fieldValue": "={{$json.next_outreach_at}}"
              }
            ]
          }
        }
      },
      "id": "node-at-update-5",
      "name": "Update Lead",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        1300,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Cron Trigger": {
      "main": [
        [
          {
            "node": "List Due Leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Due Leads": {
      "main": [
        [
          {
            "node": "Switch Segment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch Segment": {
      "main": [
        [
          {
            "node": "Build Message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Build Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build Message": {
      "main": [
        [
          {
            "node": "Log Interaction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log Interaction": {
      "main": [
        [
          {
            "node": "Update Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "tags": []
}

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

Loop 5 — Outreach. Uses airtable. Scheduled trigger; 6 nodes.

Source: https://gist.github.com/axisassists/ea249e6223c4edebd76f0469ae0293a2 — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

I prepared a detailed guide that showed the whole process of integrating the Binance API and storing data in Airtable to manage funding statements associated with tokens in a wallet.

Crypto, HTTP Request, Airtable
Data & Sheets

Stop wasting hours on manual dialing and listening to ringtones. This workflow transforms your Airtable into a high-velocity AI Call Center using Vapi AI**.

Airtable, HTTP Request
Data & Sheets

Reel-Analysis-Of-Favourite-Content-Creator. Uses httpRequest, airtable. Scheduled trigger; 26 nodes.

HTTP Request, Airtable
Data & Sheets

Link-By-Reel-Analysis. Uses httpRequest, airtable. Scheduled trigger; 24 nodes.

HTTP Request, Airtable
Data & Sheets

&gt; Transform your content strategy with automated competitor intelligence

HTTP Request, Airtable, Notion +2