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

Youtube Searcher
View
Umami analytics template
View
Manual Stickynote Process Triggered
View
Summarize YouTube Videos & Chat About Content with GPT-4o-mini via Telegram
View
HR Job Posting and Evaluation with AI
View
Manual Schedule Automation Scheduled
View
HubSpot Clearbit Update Triggered
View
Get Product Feedback
View
Code Pipedrive Create Triggered
View
Receive updates when a form is submitted in Mautic, and send a confirmation SMS
View