Webhook server and production domain should be on the same server within same filesystem. Nginx server setup should point to /domains folder.
node webflow-updater.js
const http = require("http"); const https = require("https"); const fs = require('fs'); const host = '0.0.0.0'; const port = 3777; const domains = { "www.domain.com": "domain-xyz098.webflow.io", // state here your production domain and webflow.io temporary domain }; const requestListener = function (req, res) { if (req.method == 'POST') { var body = ''; req.on('data', function (data) { body += data; }); req.on('end', function() { try { body = JSON.parse(body); for(var d in domains) { console.log("Looking for " + domains[d]) if(body.domains.indexOf(domains[d]) !== -1) { console.log("Updating " + domains[d]); const path = "./domains/" + domains[d] + ".html"; const file = fs.createWriteStream(path); const request = https.get("https://" + domains[d] + "/", function(response) { response.pipe(file); file.on("finish", function () { file.close(); console.log("Download completed."); fs.readFile(path, 'utf8', function (err,data) { console.log("Doing replacements."); if (err) { return console.log(err); } var result = data.replace(//g, ''); result = result.replace(domains[d], d); fs.writeFile(path, result, 'utf8', function (err) { if (err) return console.log(err); }); console.log("Done."); }); }); file.on("error", function (e) { file.close(); console.log("Error ", e); }) }); } } // res.writeHead(200); res.end(" OK"); } catch (e) { res.writeHead(400); res.end(" JSON ERROR") } }); } else { res.writeHead(403); res.end(" REQUEST ERROR"); } }; const server = http.createServer(requestListener); server.listen(port, host, () => { console.log(`Server is running on http://${host}:${port}`); });