Workflow: Code Webhook Send

Workflow Details

Download Workflow
{
    "meta": {
        "instanceId": "bb6a1286a4ce98dce786d6c2748b867c1252d53458c87d87fbf6824b862d4c9c"
    },
    "nodes": [
        {
            "id": "faade37e-908d-494c-af74-93c8f01adcc5",
            "name": "Everyday at 7PM",
            "type": "n8n-nodes-base.scheduleTrigger",
            "position": [
                440,
                520
            ],
            "parameters": {
                "rule": {
                    "interval": [
                        {
                            "field": "cronExpression",
                            "expression": "0 0 19 * * *"
                        }
                    ]
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "4abddfea-fee9-419c-92c4-3055faa2dd09",
            "name": "Airtable Get Today's Orders",
            "type": "n8n-nodes-base.airtable",
            "position": [
                900,
                520
            ],
            "parameters": {
                "base": {
                    "__rl": true,
                    "mode": "list",
                    "value": "appdtUVSpfWswMwNC",
                    "cachedResultUrl": "https:\/\/airtable.com\/appdtUVSpfWswMwNC",
                    "cachedResultName": "Untitled Base"
                },
                "table": {
                    "__rl": true,
                    "mode": "list",
                    "value": "tblu6F5rLbR3Axtgj",
                    "cachedResultUrl": "https:\/\/airtable.com\/appdtUVSpfWswMwNC\/tblu6F5rLbR3Axtgj",
                    "cachedResultName": "orders"
                },
                "options": [],
                "operation": "search",
                "filterByFormula": "=AND(time < \"{{ $json.now }}\", time > \"{{ $json.yesterday }}\")"
            },
            "credentials": {
                "airtableTokenApi": {
                    "id": "uSxVhc7fcMM7uPM2",
                    "name": "Airtable Personal Access Token account"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "ea29159e-3674-4385-a0bd-2a9df7d7117c",
            "name": "Yesterday Date",
            "type": "n8n-nodes-base.code",
            "position": [
                660,
                520
            ],
            "parameters": {
                "jsCode": "\/\/ Create a new date object for yesterday, 7pm\nconst yesterday = new Date();\nyesterday.setDate( new Date().getDate() - 1); \nyesterday.setHours(19, 0, 0, 0);\nconst isoString = yesterday.toISOString();\nreturn {yesterday:isoString, now:new Date().toISOString()}"
            },
            "typeVersion": 2
        },
        {
            "id": "8254aa63-2682-4c48-8843-c93830c724de",
            "name": "HTML",
            "type": "n8n-nodes-base.html",
            "position": [
                1120,
                520
            ],
            "parameters": {
                "html": "<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\" \/>\n<\/head>\n<body>\n  <table>\n    <tr> \n      {{ Object.keys($input.first().json).map(propname=>'<td>'+propname+'<\/td>').join('')  \n      }}\n    <\/tr>\n      \n    {{ $input.all().map(order=>{\n        \n        return \"<tr>\"+Object.values(order.json).map(prop=>{\n            return \"<td>\"+prop+\"<\/td>\"\n          }).join('') +\"<\/tr>\"\n      }).join('') \n    }}\n  <\/table>\n<\/body>\n<\/html>\n\n<style>\n.container {\n  background-color: #ffffff;\n  text-align: center;\n  padding: 16px;\n  border-radius: 8px;\n}\n\nh1 {\n  color: #ff6d5a;\n  font-size: 24px;\n  font-weight: bold;\n  padding: 8px;\n}\n\nh2 {\n  color: #909399;\n  font-size: 18px;\n  font-weight: bold;\n  padding: 8px;\n}\n<\/style>\n"
            },
            "executeOnce": true,
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "5e9f6ad7-e4fc-41e3-991b-cae9210dfb71",
            "name": "Set Order Fields",
            "type": "n8n-nodes-base.set",
            "position": [
                660,
                220
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "2c2f9e3c-696a-466a-8bfe-5c8aa942c9ab",
                            "name": "time",
                            "type": "string",
                            "value": "={{ new Date().toISOString() }}"
                        },
                        {
                            "id": "5618b2a7-8149-469d-87ee-535f1adac121",
                            "name": "orderID",
                            "type": "string",
                            "value": "={{ $json.body.orderID }}"
                        },
                        {
                            "id": "dc31db55-24e4-468f-a9fd-456298f5e5ab",
                            "name": "orderPrice",
                            "type": "number",
                            "value": "={{ $json.body.orderPrice }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "68eaa8f7-3b67-484e-8bad-87e621adc1df",
            "name": "Send to Gmail",
            "type": "n8n-nodes-base.gmail",
            "position": [
                1340,
                520
            ],
            "parameters": {
                "sendTo": "axelrose20272027@gmail.com",
                "message": "={{ $json.html }}",
                "options": [],
                "subject": "Daily Order Summary"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "qMvN3j2E5MFAguNF",
                    "name": "Gmail account"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "9f22bedc-fbe1-421b-8212-189c7d436cab",
            "name": "Store Order",
            "type": "n8n-nodes-base.airtable",
            "position": [
                900,
                220
            ],
            "parameters": {
                "base": {
                    "__rl": true,
                    "mode": "list",
                    "value": "appdtUVSpfWswMwNC",
                    "cachedResultUrl": "https:\/\/airtable.com\/appdtUVSpfWswMwNC",
                    "cachedResultName": "Untitled Base"
                },
                "table": {
                    "__rl": true,
                    "mode": "list",
                    "value": "tblu6F5rLbR3Axtgj",
                    "cachedResultUrl": "https:\/\/airtable.com\/appdtUVSpfWswMwNC\/tblu6F5rLbR3Axtgj",
                    "cachedResultName": "orders"
                },
                "columns": {
                    "value": {
                        "orderID": 0,
                        "customerID": 0,
                        "orderPrice": 0
                    },
                    "schema": [
                        {
                            "id": "time",
                            "type": "dateTime",
                            "display": true,
                            "removed": false,
                            "readOnly": false,
                            "required": false,
                            "displayName": "time",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "orderID",
                            "type": "number",
                            "display": true,
                            "removed": false,
                            "readOnly": false,
                            "required": false,
                            "displayName": "orderID",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "customerID",
                            "type": "number",
                            "display": true,
                            "removed": false,
                            "readOnly": false,
                            "required": false,
                            "displayName": "customerID",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "orderPrice",
                            "type": "number",
                            "display": true,
                            "removed": false,
                            "readOnly": false,
                            "required": false,
                            "displayName": "orderPrice",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "orderStatus",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "readOnly": false,
                            "required": false,
                            "displayName": "orderStatus",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "autoMapInputData",
                    "matchingColumns": []
                },
                "options": {
                    "typecast": true
                },
                "operation": "create"
            },
            "credentials": {
                "airtableTokenApi": {
                    "id": "uSxVhc7fcMM7uPM2",
                    "name": "Airtable Personal Access Token account"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "6ace0e8f-85e1-45bc-ae81-331c5722ef46",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                340,
                160
            ],
            "parameters": {
                "width": 857.9236217062974674263386987149715423583984375,
                "height": 220.18022408852067428597365505993366241455078125,
                "content": "### New order is sent to the Webhook via POST with params {orderID, orderPrice}"
            },
            "typeVersion": 1
        },
        {
            "id": "6907ae8d-90b7-4e07-883d-3ebd4440d811",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                340,
                460
            ],
            "parameters": {
                "width": 1202.24347309024642527219839394092559814453125,
                "height": 235.62797364881822659299359656870365142822265625,
                "content": "### Daily summary sent to email at 7PM"
            },
            "typeVersion": 1
        },
        {
            "id": "848c6acb-2f9c-4d85-8349-a4a31204922b",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -620,
                -80
            ],
            "parameters": {
                "color": 4,
                "width": 607.7708924207208838197402656078338623046875,
                "height": 893.118718158953242891584523022174835205078125,
                "content": "# Aggregate Daily Orders with Airtable\n### This workflow will collect order data as it is produced, then send a summary email of all orders at the end of every day, formatted in a table.\n\n## Setup:\n 1. Create a new table in Airtable and give it a field *time* with type date, *orderID* with type number, and *orderPrice* also with type number. \n 2. Create a new access token if you haven't already at https:\/\/airtable.com\/create\/tokens\/new. Make sure to give the token the scopes *data.records:read*, *data.records:write*, *schema.bases:read* and access to whichever table you choose to store the orders. A pop-up window appears with the token. Use this token to make `Create New Credential` > `Access Token` for Airtable in the `Store Order` and `Airtable Get Today's Orders` nodes.\n 3. Create access credentials for your Gmail as described here: https:\/\/developers.google.com\/workspace\/guides\/create-credentials. Use the credentials from your *client_secret.json* in the `Send to Gmail` node.\n 4. In the `Store Order` node, change *Base* and *Table* to the database and table in your Airtable account you wish to use to store orders. Make sure to use these same values in the `Airtable Get Today's Orders` node.\n 5. Every time an order is created in your system, send a POST request to Webhook from your order software. Each request must contain a single order containing fields *'orderID'* and *'orderPrice'* (or, edit `Set Order Fields` to select which incoming fields you wish to save)\n 6. Change the schedule time for sending email from `Everyday at 7PM` to whichever time you choose. \n \n\n## Test:\n- Activate the workflow.\n- From the node `Webhook`, copy *Production URL*\n- Send the following CURL request to the URL given to you:\n` curl -X POST   -H \"Content-Type: application\/json\"   -d '{\"orderID\": 12345, \"orderPrice\": 99.99}' YOUR_URL_HERE`\n- It should say *Node executed successfully*. Now check your Airtable and confirm the order was stored in the right place."
            },
            "typeVersion": 1
        },
        {
            "id": "d9a5ef05-beba-480f-967e-840cf1b71248",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                200,
                240
            ],
            "parameters": {
                "color": 3,
                "width": 170,
                "height": 80,
                "content": "- New Order!"
            },
            "typeVersion": 1
        },
        {
            "id": "0f433e34-79cd-42d0-9b56-4a306eb91907",
            "name": "Sticky Note5",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                200,
                540
            ],
            "parameters": {
                "color": 3,
                "width": 170,
                "height": 80,
                "content": " - It's 7PM!"
            },
            "typeVersion": 1
        },
        {
            "id": "fb9c4b49-ee1f-4233-8277-4c35fb423fde",
            "name": "Webhook",
            "type": "n8n-nodes-base.webhook",
            "position": [
                440,
                220
            ],
            "webhookId": "e9e62c98-390d-4d16-bc77-a13b043bf1cf",
            "parameters": {
                "path": "e9e62c98-390d-4d16-bc77-a13b043bf1cf",
                "options": [],
                "httpMethod": "POST"
            },
            "typeVersion": 2
        }
    ],
    "pinData": [],
    "connections": {
        "HTML": {
            "main": [
                [
                    {
                        "node": "Send to Gmail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Webhook": {
            "main": [
                [
                    {
                        "node": "Set Order Fields",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Yesterday Date": {
            "main": [
                [
                    {
                        "node": "Airtable Get Today's Orders",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Everyday at 7PM": {
            "main": [
                [
                    {
                        "node": "Yesterday Date",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Set Order Fields": {
            "main": [
                [
                    {
                        "node": "Store Order",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Airtable Get Today's Orders": {
            "main": [
                [
                    {
                        "node": "HTML",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Search LinkedIn companies, Score with AI and add them to Google Sheet CRM
View
Manual Stickynote Send Triggered
View
Openweathermap Twilio Automate Webhook
View
All-in-One Telegram/Baserow AI Assistant 🤖🧠 Voice/Photo/Save Notes/Long Term Mem
View
Push Multiple Files to Github Repo via Github REST API
View
Schedule HTTP Create Scheduled
View
Manual Stickynote Automate Webhook
View
New invoice email notification
View
mails2notion V2
View
HTTP Stickynote Create Webhook
View