AutomationFlowsData & Sheets › Loop 4 — Enrichment

Loop 4 — Enrichment

Loop 4 — Enrichment. Uses airtable, httpRequest. Scheduled trigger; 6 nodes.

Cron / scheduled trigger★★★★☆ complexity6 nodesAirtableHTTP Request
Data & Sheets Trigger: Cron / scheduled Nodes: 6 Complexity: ★★★★☆ Added:

This workflow follows the Airtable → HTTP Request recipe pattern — see all workflows that pair these two integrations.

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 4 \u2014 Enrichment",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 1
            }
          ]
        }
      },
      "id": "node-cron-4",
      "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',OR({last_enriched_at}='',IS_BEFORE({last_enriched_at},DATEADD(NOW(),-1,'hours'))))"
      },
      "id": "node-at-list-4",
      "name": "List Unenriched Leads",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        420,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://api.apollo.io/v1/people/match?api_key=YOUR_APOLLO_API_KEY&email={{encodeURIComponent($json.fields.email)}}",
        "options": {}
      },
      "id": "node-apollo-4",
      "name": "Apollo Enrich",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        640,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "const apollo=$json.person||{};\nconst now=new Date().toISOString();\nconst next=new Date(Date.now()+60*60000).toISOString();\nreturn[{json:{lead_id:$('List Unenriched Leads').item.json.id,company:apollo.organization?.name||'',job_title:apollo.title||'',linkedin_url:apollo.linkedin_url||'',company_size:apollo.organization?.estimated_num_employees||'',last_enriched_at:now,next_enrichment_at:next}}];"
      },
      "id": "node-map-4",
      "name": "Map Fields",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        860,
        300
      ]
    },
    {
      "parameters": {
        "operation": "update",
        "base": {
          "__rl": true,
          "value": "YOUR_AIRTABLE_BASE_ID",
          "mode": "id"
        },
        "table": {
          "__rl": true,
          "value": "Leads",
          "mode": "name"
        },
        "id": "={{$json.lead_id}}",
        "fields": {
          "fieldMappingMode": "defineBelow",
          "value": {
            "values": [
              {
                "fieldId": "company",
                "fieldValue": "={{$json.company}}"
              },
              {
                "fieldId": "job_title",
                "fieldValue": "={{$json.job_title}}"
              },
              {
                "fieldId": "linkedin_url",
                "fieldValue": "={{$json.linkedin_url}}"
              },
              {
                "fieldId": "last_enriched_at",
                "fieldValue": "={{$json.last_enriched_at}}"
              },
              {
                "fieldId": "next_enrichment_at",
                "fieldValue": "={{$json.next_enrichment_at}}"
              }
            ]
          }
        }
      },
      "id": "node-at-update-4",
      "name": "Update Lead",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        1080,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "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.lead_id}}"
              },
              {
                "fieldId": "type",
                "fieldValue": "enrichment"
              },
              {
                "fieldId": "loop_source",
                "fieldValue": "loop_4"
              },
              {
                "fieldId": "created_at",
                "fieldValue": "={{$json.last_enriched_at}}"
              }
            ]
          }
        }
      },
      "id": "node-at-interact-4",
      "name": "Log Interaction",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2,
      "position": [
        1300,
        300
      ],
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Cron Trigger": {
      "main": [
        [
          {
            "node": "List Unenriched Leads",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Unenriched Leads": {
      "main": [
        [
          {
            "node": "Apollo Enrich",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Apollo Enrich": {
      "main": [
        [
          {
            "node": "Map Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map Fields": {
      "main": [
        [
          {
            "node": "Update Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Lead": {
      "main": [
        [
          {
            "node": "Log Interaction",
            "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 4 — Enrichment. Uses airtable, httpRequest. 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