The Issue
Over time I find myself trying to rerun an already-processed webhook execution, and while for a single rerun it’s super easy I can just download the payload from the history and send it again to the webhook via postman or this tool: https://reqbin.com/curl
But when it comes to rerunning a batch of already processed webhook triggers, it is seriously difficult. So here’s the JSON scenario you can use rerun batch executions.
Scenario Blueprint in JSON
{
"subflows": [
{
"flow": [
{
"id": 1,
"module": "make:listScenarioLogs",
"version": 1,
"parameters": {
"__IMTCONN__": 701937
},
"mapper": {
"scenario": "SCENARIO_ID",
"from": "01/30/2023 9:05 PM",
"to": "01/31/2023 8:53 PM",
"showCheckRuns": false,
"limit": "50"
},
"metadata": {
"designer": {
"x": -361,
"y": 6
},
"restore": {
"parameters": {
"__IMTCONN__": {
"label": "My Make connection",
"data": {
"scoped": "true",
"connection": "make"
}
}
},
"expect": {
"status": {
"mode": "chose",
"label": "Empty"
},
"showCheckRuns": {
"mode": "chose"
}
}
},
"parameters": [
{
"name": "__IMTCONN__",
"type": "account:make",
"label": "Connection",
"required": true
}
],
"expect": [
{
"name": "scenario",
"type": "text",
"label": "Scenario ID",
"required": true
},
{
"name": "from",
"type": "date",
"label": "From",
"time": true
},
{
"name": "to",
"type": "date",
"label": "To",
"time": true
},
{
"name": "status",
"type": "select",
"label": "Status",
"validate": {
"enum": [
"1",
"2",
"3"
]
}
},
{
"name": "showCheckRuns",
"type": "boolean",
"label": "Show Check Runs"
},
{
"name": "limit",
"type": "uinteger",
"label": "Limit"
}
]
}
},
{
"id": 3,
"module": "http:ActionSendData",
"version": 3,
"parameters": {
"handleErrors": false,
"useNewZLibDeCompress": true
},
"mapper": {
"url": "https://us1.make.com/streamer/scenario/SCENARIO_ID/log/{{1.id}}/module/1",
"serializeUrl": false,
"method": "post",
"headers": [
{
"name": "authority",
"value": "us1.make.com"
},
{
"name": "accept",
"value": "application/json, text/javascript, */*; q=0.01"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.9"
},
{
"name": "content-type",
"value": "application/json; charset=UTF-8"
},
{
"name": "cookie",
"value": "ADD_MAKE_COOKIE_HERE"
},
{
"name": "origin",
"value": "https"
},
{
"name": "referer",
"value": "https"
},
{
"name": "sec-ch-ua",
"value": "\"Not_A Brand\";v=\"99\", \"Google Chrome\";v=\"109\", \"Chromium\";v=\"109\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "empty"
},
{
"name": "sec-fetch-mode",
"value": "cors"
},
{
"name": "sec-fetch-site",
"value": "same-origin"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
},
{
"name": "x-requested-with",
"value": "XMLHttpRequest"
}
],
"qs": [],
"bodyType": "raw",
"parseResponse": true,
"authUser": "my-api-key",
"authPass": "",
"timeout": "",
"shareCookies": false,
"ca": "",
"rejectUnauthorized": true,
"followRedirect": true,
"useQuerystring": false,
"gzip": true,
"useMtls": false,
"contentType": "application/json",
"data": "{\"cycle\":1}",
"followAllRedirects": false
},
"metadata": {
"designer": {
"x": -61,
"y": 6
},
"restore": {
"expect": {
"method": {
"mode": "chose",
"label": "POST"
},
"headers": {
"mode": "chose",
"items": [
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]
},
"qs": {
"mode": "chose"
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
}
},
"parameters": [
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"type": "array",
"label": "Headers",
"spec": [
{
"name": "name",
"label": "Name",
"type": "text",
"required": true
},
{
"name": "value",
"label": "Value",
"type": "text"
}
]
},
{
"name": "qs",
"type": "array",
"label": "Query String",
"spec": [
{
"name": "name",
"label": "Name",
"type": "text",
"required": true
},
{
"name": "value",
"label": "Value",
"type": "text"
}
]
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "authUser",
"type": "text",
"label": "User name"
},
{
"name": "authPass",
"type": "password",
"label": "Password"
},
{
"name": "timeout",
"type": "uinteger",
"label": "Timeout",
"validate": {
"max": 300,
"min": 1
}
},
{
"name": "shareCookies",
"type": "boolean",
"label": "Share cookies with other HTTP modules",
"required": true
},
{
"name": "ca",
"type": "cert",
"label": "Self-signed certificate"
},
{
"name": "rejectUnauthorized",
"type": "boolean",
"label": "Reject connections that are using unverified (self-signed) certificates",
"required": true
},
{
"name": "followRedirect",
"type": "boolean",
"label": "Follow redirect",
"required": true
},
{
"name": "useQuerystring",
"type": "boolean",
"label": "Disable serialization of multiple same query string keys as arrays",
"required": true
},
{
"name": "gzip",
"type": "boolean",
"label": "Request compressed content",
"required": true
},
{
"name": "useMtls",
"type": "boolean",
"label": "Use Mutual TLS",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
},
{
"name": "followAllRedirects",
"type": "boolean",
"label": "Follow all redirect",
"required": true
}
]
}
},
{
"id": 8,
"module": "util:FunctionSleep",
"version": 1,
"parameters": {},
"mapper": {
"duration": "2"
},
"metadata": {
"designer": {
"x": 262,
"y": 5
},
"restore": {},
"expect": [
{
"name": "duration",
"type": "uinteger",
"label": "Delay",
"required": true,
"validate": {
"max": 300,
"min": 1
}
}
]
}
},
{
"id": 7,
"module": "http:ActionSendData",
"version": 3,
"parameters": {
"handleErrors": false,
"useNewZLibDeCompress": true
},
"mapper": {
"url": "https://hook.us1.make.com/YOUR_MAKE_WEBHOOK",
"serializeUrl": false,
"method": "get",
"headers": [],
"qs": [],
"bodyType": "raw",
"parseResponse": true,
"authUser": "",
"authPass": "",
"timeout": "",
"shareCookies": false,
"ca": "",
"rejectUnauthorized": true,
"followRedirect": true,
"useQuerystring": false,
"gzip": true,
"useMtls": false,
"contentType": "application/json",
"data": "{{3.data[].data[]}}",
"followAllRedirects": false
},
"metadata": {
"designer": {
"x": 580,
"y": 1
},
"restore": {
"expect": {
"method": {
"mode": "chose",
"label": "GET"
},
"headers": {
"mode": "chose"
},
"qs": {
"mode": "chose"
},
"bodyType": {
"label": "Raw"
},
"contentType": {
"label": "JSON (application/json)"
}
}
},
"parameters": [
{
"name": "handleErrors",
"type": "boolean",
"label": "Evaluate all states as errors (except for 2xx and 3xx )",
"required": true
},
{
"name": "useNewZLibDeCompress",
"type": "hidden"
}
],
"expect": [
{
"name": "url",
"type": "url",
"label": "URL",
"required": true
},
{
"name": "serializeUrl",
"type": "boolean",
"label": "Serialize URL",
"required": true
},
{
"name": "method",
"type": "select",
"label": "Method",
"required": true,
"validate": {
"enum": [
"get",
"head",
"post",
"put",
"patch",
"delete",
"options"
]
}
},
{
"name": "headers",
"type": "array",
"label": "Headers",
"spec": [
{
"name": "name",
"label": "Name",
"type": "text",
"required": true
},
{
"name": "value",
"label": "Value",
"type": "text"
}
]
},
{
"name": "qs",
"type": "array",
"label": "Query String",
"spec": [
{
"name": "name",
"label": "Name",
"type": "text",
"required": true
},
{
"name": "value",
"label": "Value",
"type": "text"
}
]
},
{
"name": "bodyType",
"type": "select",
"label": "Body type",
"validate": {
"enum": [
"raw",
"x_www_form_urlencoded",
"multipart_form_data"
]
}
},
{
"name": "parseResponse",
"type": "boolean",
"label": "Parse response",
"required": true
},
{
"name": "authUser",
"type": "text",
"label": "User name"
},
{
"name": "authPass",
"type": "password",
"label": "Password"
},
{
"name": "timeout",
"type": "uinteger",
"label": "Timeout",
"validate": {
"max": 300,
"min": 1
}
},
{
"name": "shareCookies",
"type": "boolean",
"label": "Share cookies with other HTTP modules",
"required": true
},
{
"name": "ca",
"type": "cert",
"label": "Self-signed certificate"
},
{
"name": "rejectUnauthorized",
"type": "boolean",
"label": "Reject connections that are using unverified (self-signed) certificates",
"required": true
},
{
"name": "followRedirect",
"type": "boolean",
"label": "Follow redirect",
"required": true
},
{
"name": "useQuerystring",
"type": "boolean",
"label": "Disable serialization of multiple same query string keys as arrays",
"required": true
},
{
"name": "gzip",
"type": "boolean",
"label": "Request compressed content",
"required": true
},
{
"name": "useMtls",
"type": "boolean",
"label": "Use Mutual TLS",
"required": true
},
{
"name": "contentType",
"type": "select",
"label": "Content type",
"validate": {
"enum": [
"text/plain",
"application/json",
"application/xml",
"text/xml",
"text/html",
"custom"
]
}
},
{
"name": "data",
"type": "buffer",
"label": "Request content"
},
{
"name": "followAllRedirects",
"type": "boolean",
"label": "Follow all redirect",
"required": true
}
]
}
}
]
}
],
"metadata": {
"version": 1
}
}
In here, you can modify as you need it. Maybe add repeater to get around make’s 50 log limit in first module, also you can add data store to prevent same log being sent twice.