{
  "id": "9Ua1Wqenubbi6OkW",
  "name": "IP Geolocation Lookup via Webhook",
  "tags": [],
  "nodes": [
    {
      "id": "03bd8d64-8336-4c15-8ed3-af3144ee1113",
      "name": "Note for Webhook Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        80
      ],
      "parameters": {
        "width": 280,
        "height": 280,
        "content": "This node listens for incoming POST requests. It expects a JSON body with an 'ip' property containing the IP address you want to look up (e.g., {\"ip\": \"8.8.8.8\"}). You can easily adjust the webhook path to suit your needs."
      },
      "typeVersion": 1
    },
    {
      "id": "7fefa097-190c-4b86-9fbc-d110e6d913b9",
      "name": "Note for IP Lookup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        760,
        60
      ],
      "parameters": {
        "color": 2,
        "width": 260,
        "height": 300,
        "content": "This node makes an HTTP GET request to the IP-API.com service to get detailed geolocation information for the IP address provided by the webhook. The API returns data like country, city, region, ISP, and more."
      },
      "typeVersion": 1
    },
    {
      "id": "46964ab7-7845-4b39-92f9-9011a1484fa3",
      "name": "Note for Webhook Response",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1100,
        40
      ],
      "parameters": {
        "color": 3,
        "width": 280,
        "height": 340,
        "content": "This node sends the full geolocation data received from IP-API.com back to the original caller of the webhook. This data can be directly consumed or further processed (e.g., logged, filtered, used in conditional logic) before being returned."
      },
      "typeVersion": 1
    },
    {
      "id": "0b4b792d-30fa-4f55-b96c-b9b88da026f0",
      "name": "Get IP Geolocation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        220
      ],
      "parameters": {
        "url": "=http://ip-api.com/json/{{ $json.body.ip }}",
        "method": "=GET",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "a6c774ad-9aa6-4b0b-8644-5966d7242907",
      "name": "Receive IP Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        440,
        220
      ],
      "parameters": {
        "path": "ip-lookup",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    },
    {
      "id": "ee2b27c2-a96f-432f-b950-fff3a8dab462",
      "name": "Respond with Geolocation Data",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1200,
        220
      ],
      "parameters": {
        "options": {},
        "respondWith": "allIncomingItems"
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "97ad1608-6a06-4b47-9faa-ee5c120232fc",
  "connections": {
    "Get IP Geolocation": {
      "main": [
        [
          {
            "node": "Respond with Geolocation Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive IP Webhook": {
      "main": [
        [
          {
            "node": "Get IP Geolocation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}