AutomationFlowsWeb Scraping › Generate Dynamic Email Content

Generate Dynamic Email Content

Original n8n title: Generate Dynamic Contents for Emails or HTML Pages

Generate Dynamic Contents For Emails Or Html Pages. Uses manualTrigger, n8nTrainingCustomerDatastore, itemLists, n8n-nodes-document-generator. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexity8 nodesN8N Training Customer DatastoreItem ListsN8N Nodes Document GeneratorFunction ItemEmail Send
Web Scraping Trigger: Event Nodes: 8 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "4704e44a-80c6-41b4-a0b9-ece060d53836",
      "name": "On clicking 'execute'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -220,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "74a78b35-b453-4345-8cd9-9d8a62961c29",
      "name": "Customer Datastore",
      "type": "n8n-nodes-base.n8nTrainingCustomerDatastore",
      "position": [
        20,
        300
      ],
      "parameters": {
        "operation": "getAllPeople",
        "returnAll": true
      },
      "typeVersion": 1
    },
    {
      "id": "10b633de-e5e5-4fd2-bb4b-7a16bac5f69c",
      "name": "Item Lists",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        220,
        300
      ],
      "parameters": {
        "options": {},
        "operation": "sort",
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "name"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "aa90be4e-f548-459f-822b-a3dc1d20d58e",
      "name": "One item per template",
      "type": "n8n-nodes-document-generator.DocumentGenerator",
      "position": [
        660,
        160
      ],
      "parameters": {
        "template": "Date: {{created}}\nTo: {{name}} <{{email}}>\nAddress: {{country}}\nDetails:\n{{#each lines}}\n- \"{{description}}\" x {{quantity}} = {{amount}}\u20ac + {{vat}}\u20ac = {{total}}\u20ac\n{{/each}}\nTotal invoice: {{total}}\u20ac"
      },
      "typeVersion": 1
    },
    {
      "id": "914c4c67-81df-45ec-9eea-3efb96383dfc",
      "name": "All items, one template",
      "type": "n8n-nodes-document-generator.DocumentGenerator",
      "position": [
        660,
        400
      ],
      "parameters": {
        "template": "<html>\n<head>\n</head>\n<body>\nNew customers in last 24h:\n<ul id=\"customer_list\">\n  {{#each items}}\n  <li>{{name}}: {{email}}</li>\n  {{/each}}\n</ul>\n</body>\n</html>",
        "oneTemplate": true
      },
      "typeVersion": 1
    },
    {
      "id": "bc1821d1-7d08-4208-aa5e-7290f5604e91",
      "name": "Add lines",
      "type": "n8n-nodes-base.functionItem",
      "position": [
        440,
        160
      ],
      "parameters": {
        "functionCode": "item.lines = [\n  {\n    concept: \"Service\",\n    description: \"Design of HTML banners\",\n    quantity: 1,\n    amount: 22,\n    vat: 22 * 0.21,\n    total: 22 * 1.21\n  },\n  {\n    concept: \"Service\",\n    description: \"Design of PNG banners\",\n    quantity: 1,\n    amount: 33,\n    vat: 33 * 0.21,\n    total: 33 * 1.21\n  }\n]\n\nitem.date = \"2022-01-12\";\nitem.total = 133.10;\n\nreturn item;"
      },
      "typeVersion": 1
    },
    {
      "id": "99ccf5f0-6d82-4a9c-a314-711249fbdfc9",
      "name": "Send one TEXT email per item",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        880,
        160
      ],
      "parameters": {
        "html": "={{ $json[\"text\"] }}",
        "options": {},
        "subject": "=Invoice for {{ $node[\"Add lines\"].json[\"name\"] }}",
        "toEmail": "mcolomer@n8nhackers.com",
        "fromEmail": "mcolomer@n8nhackers.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3bc12345-da46-4c1f-8fe3-5bb0683cbcda",
      "name": "Send one HTML Email per list",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        880,
        400
      ],
      "parameters": {
        "html": "={{ $json[\"text\"] }}",
        "options": {},
        "subject": "New customers",
        "toEmail": "mcolomer@n8nhackers.com",
        "fromEmail": "mcolomer@n8nhackers.com"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Add lines": {
      "main": [
        [
          {
            "node": "One item per template",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Item Lists": {
      "main": [
        [
          {
            "node": "All items, one template",
            "type": "main",
            "index": 0
          },
          {
            "node": "Add lines",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Customer Datastore": {
      "main": [
        [
          {
            "node": "Item Lists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On clicking 'execute'": {
      "main": [
        [
          {
            "node": "Customer Datastore",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "One item per template": {
      "main": [
        [
          {
            "node": "Send one TEXT email per item",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "All items, one template": {
      "main": [
        [
          {
            "node": "Send one HTML Email per list",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Generate Dynamic Contents For Emails Or Html Pages. Uses manualTrigger, n8nTrainingCustomerDatastore, itemLists, n8n-nodes-document-generator. Event-driven trigger; 8 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

==Disclaimer: This template contains a community node and therefore only works for n8n self-hosted users==

N8N Training Customer Datastore, Item Lists, N8N Nodes Document Generator +2
Web Scraping

Create An Rss Feed Based On A Website S Content. Uses manualTrigger, itemLists, htmlExtract, httpRequest. Event-driven trigger; 12 nodes.

Item Lists, Html Extract, HTTP Request +1
Web Scraping

This workflow illustrates how HTML reports can be created using Markdown Node. An example data consists of a Time Sheet table for 2 persons. Based on this table a markdown document is generated using

Item Lists, Email Send, HTTP Request +1
Web Scraping

This workflow adds a new product in Stripe whenever a new product has been added to Pipedrive. Stripe account and Stripe credentials Pipedrive account and Pipedrive credentials Pipedrive trigger node

Pipedrive Trigger, Function Item, HTTP Request +1
Web Scraping

Form Html. Uses n8n-nodes-brightdata, n8n-nodes-document-generator, splitOut, emailSend. Event-driven trigger; 8 nodes.

N8N Nodes Brightdata, N8N Nodes Document Generator, Email Send +3