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

Dynamically generate HTML page from user request using OpenAI Structured Output
View
Manual N8Ntrainingcustomerdatastore Automation Webhook
View
Bannerbear Discord Automation Webhook
View
Summarize emails with A.I. then send to messenger
View
Manual Invoiceninja Automate Triggered
View
Get all orders in Squarespace to Google Sheets
View
Error N8N Import Triggered
View
AI Social Media Caption Creator
View
AI-Powered WhatsApp Chatbot for Text, Voice, Images & PDFs
View
Netlify Airtable Automate Triggered
View