AutomationFlowsWeb Scraping › Webhook Triggered Site Update with Git Push

Webhook Triggered Site Update with Git Push

Original n8n title: Smarteros - Update Button

SmarterOS - Update Button. Uses executeCommand, httpRequest. Webhook trigger; 5 nodes.

Webhook trigger★★★★☆ complexity5 nodesExecute CommandHTTP Request
Web Scraping Trigger: Webhook Nodes: 5 Complexity: ★★★★☆ Added:

This workflow follows the Executecommand → 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": "SmarterOS - Update Button",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "update-button",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "webhook-node",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "values": {
          "string": [
            {
              "name": "site",
              "value": "={{$json[\"body\"][\"site\"]}}"
            },
            {
              "name": "button_id",
              "value": "={{$json[\"body\"][\"button_id\"]}}"
            },
            {
              "name": "url",
              "value": "={{$json[\"body\"][\"url\"]}}"
            },
            {
              "name": "spec_path",
              "value": "={{$json[\"body\"][\"spec_path\"]}}"
            }
          ]
        },
        "options": {}
      },
      "id": "set-node",
      "name": "Set Site Config",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "command": "cd /sites/{{$json[\"site\"]}} && git pull && echo '{{\"button_id\": \"{{$json[\"button_id\"]}\", \"url\": \"{{$json[\"url\"]}\"}}' >> buttons.json && git add . && git commit -m 'Update button: {{$json[\"button_id\"]}}' && git push",
        "options": {}
      },
      "id": "git-push-node",
      "name": "Git Push Update",
      "type": "n8n-nodes-base.executeCommand",
      "typeVersion": 1,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.cloudflare.com/client/v4/zones/{{CLOUDFLARE_ZONE_ID}}/reload",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "id": "caddy-reload-node",
      "name": "Caddy Reload",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 3,
      "position": [
        850,
        300
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "{\n  \"success\": true,\n  \"message\": \"Button updated successfully\",\n  \"data\": {\n    \"site\": \"={{$json[\"site\"]}}\",\n    \"button_id\": \"={{$json[\"button_id\"]}}\",\n    \"url\": \"={{$json[\"url\"]}}\"\n  }\n}",
        "options": {}
      },
      "id": "response-node",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1050,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Set Site Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Site Config": {
      "main": [
        [
          {
            "node": "Git Push Update",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Git Push Update": {
      "main": [
        [
          {
            "node": "Caddy Reload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Caddy Reload": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [
    {
      "name": "smarteros"
    },
    {
      "name": "chatops"
    }
  ],
  "triggerCount": 1,
  "updatedAt": "2026-03-29T20:30:00.000Z",
  "versionId": "1"
}
Pro

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

About this workflow

SmarterOS - Update Button. Uses executeCommand, httpRequest. Webhook trigger; 5 nodes.

Source: https://github.com/SmarterCL/os.smarterbot.cl/blob/0c9c17e0e6d7e57ba50d1141b656b14242162c9d/n8n-workflows/update-button.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.

Execute Command, HTTP Request, Read Write File +1
Web Scraping

MLOps Pipeline - Hand Talk. Uses executeCommand, httpRequest. Webhook trigger; 15 nodes.

Execute Command, HTTP Request
Web Scraping

AIDP - Main Workflow v2. Uses executeCommand, httpRequest. Webhook trigger; 13 nodes.

Execute Command, HTTP Request
Web Scraping

JFCandia_Flujo. Uses executeCommand, emailSend, readWriteFile, httpRequest. Webhook trigger; 8 nodes.

Execute Command, Email Send, Read Write File +1
Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1