{
  "updatedAt": "2025-10-13T17:24:18.853Z",
  "createdAt": "2025-10-13T17:24:18.853Z",
  "id": "BtOUYRJayFDQiei8",
  "name": "10 Track Email Campaign Performance",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "id": "b75bf461-4b00-4800-ab3d-8412a43b77e9",
      "name": "\u23f0 Daily Campaign Check Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -3568,
        1344
      ],
      "typeVersion": 1.2
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "04df454e-d477-4dd4-a029-2c97cfd1bf8f",
              "name": "url",
              "type": "string",
              "value": "=https://www.mailchimp.com/campaigns/123/report"
            }
          ]
        },
        "options": {}
      },
      "id": "9e59b6bc-fce9-4531-8fc0-b95a46ae13d0",
      "name": "\u270f\ufe0f Set Campaign Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -3344,
        1344
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {
        "promptType": "define",
        "hasOutputParser": true,
        "options": {}
      },
      "id": "8274ab1e-ddfa-4f36-9fff-44149e0e7681",
      "name": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2992,
        1344
      ],
      "typeVersion": 2
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "id": "7b3908ac-fa66-4bea-8657-e64c6ec9b4fb",
      "name": "\ud83e\udde0 LLM: Summarize & Format",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -3008,
        1632
      ],
      "typeVersion": 1.2
    },
    {
      "parameters": {},
      "id": "4d065e6d-26da-490d-99a4-adc7a0071970",
      "name": "\ud83c\udf10 Bright Data MCP: Scrape Report",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        -2848,
        1584
      ],
      "typeVersion": 1,
      "credentials": {}
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d5c41a60-cadf-47a6-9685-9bead865346d",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $json.open_rate }}",
              "rightValue": 20
            },
            {
              "id": "7a251b0b-a122-418d-8b0c-6714ebfa6018",
              "operator": {
                "type": "number",
                "operation": "lt"
              },
              "leftValue": "={{ $json.ctr }}",
              "rightValue": 130
            }
          ]
        },
        "options": {}
      },
      "id": "632fda9e-0f1e-4802-a93d-7dad3a0870fb",
      "name": "\ud83d\udd0e IF: Open \u226530% & CTR <10%?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2416,
        1344
      ],
      "typeVersion": 2.2
    },
    {
      "parameters": {
        "sendTo": "shahkar.genai@gmail.com",
        "subject": "Did you miss this? Here\u2019s something special for you!",
        "emailType": "text",
        "message": "Hi [First Name],  \nWe noticed you opened our recent email \u2014 thank you for staying connected! \n\ud83d\ude4c But we think you might have missed the best part\u2026  \n\ud83d\udc49 [Big Benefit or Offer \u2014 e.g., \u201cGet 20% off your next order \u2014 today only!\u201d]  \nWe don\u2019t want you to miss out \u2014 just click below and grab your exclusive [deal / resource / upgrade].  \n[CTA Button: \u201cClaim Your Offer\u201d]  Still not sure? We\u2019re here to help if you have any questions. Just hit reply \u2014 we love hearing from you!  Talk soon, [Your Name] [Your Company]",
        "options": {}
      },
      "id": "de624f92-4b9e-452f-8891-f3a73b44b39f",
      "name": "\ud83d\udce7 Send Follow-Up Engagement Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -2176,
        1232
      ],
      "typeVersion": 2.1
    },
    {
      "parameters": {},
      "id": "e8677fac-dbd7-4fbf-8c65-593536ea0a24",
      "name": "\ud83d\udeab Skip \u2014 No Action Needed",
      "type": "n8n-nodes-base.noOp",
      "position": [
        -2176,
        1440
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## \ud83c\udfaf **\ud83d\udd39 SECTION 1: Schedule & Prepare Inputs**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                             |\n| ---- | -------------------------------- |\n| \u23f0    | **Daily Campaign Check Trigger** |\n| \u270f\ufe0f   | **Set Campaign Input Fields**    |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\u23f0 Daily Campaign Check Trigger:**\n  This node automatically **starts the workflow on a schedule** \u2014 for example, every morning at 9\u202fAM.\n  It makes sure you **don\u2019t have to run it manually** every time. The goal is to check your email campaign performance **regularly and consistently**.\n\n* **\u270f\ufe0f Set Campaign Input Fields:**\n  This node **defines any input values** that your Agent needs.\n  For example:\n\n  * Campaign ID\n  * ESP URL\n  * Date range\n  * Any dynamic variables\n\n  It acts like **filling in a form** that the rest of the workflow will use.\n  You can **edit it easily** without changing the whole workflow.\n\n---\n\n### \ud83c\udfaf **Why It\u2019s Important**\n\n\u2705 Automates the whole thing on autopilot.\n\u2705 Ensures the Agent always has the **right data**.\n\u2705 Makes the workflow easy to maintain for non-tech users \u2014 just change a value in **Edit Fields**, done!\n\n---\n\n---\n\n",
        "height": 1360,
        "width": 420,
        "color": 6
      },
      "id": "e34cfa29-8c56-464f-abf8-16495559ce8f",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3632,
        160
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## \ud83e\udd16 **\ud83d\udd39 SECTION 2: Scrape & Analyze with AI Agent**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                                             |\n| ---- | ------------------------------------------------ |\n| \ud83e\udd16   | **Agent: Scrape & Analyze Campaign Performance** |\n| \ud83e\udde0   | **LLM: Summarize & Format**                      |\n| \ud83c\udf10   | **Bright Data MCP: Scrape Report**               |\n| \ud83d\uddc2\ufe0f  | **Parse Scrape Output**                          |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance**\n  This is your **AI Agent** \u2014 it does the smart part:\n\n  * Talks to the **Bright Data MCP Tool** to scrape the ESP report page.\n  * Uses an **LLM** (OpenAI Chat Model) to process the scraped data.\n  * Passes the result to an **Output Parser** to turn messy text into clean, structured data.\n\n* **\ud83c\udf10 Bright Data MCP: Scrape Report**\n  Bright Data logs in, navigates to your campaign report page, and **scrapes live open/click numbers**.\n\n* **\ud83e\udde0 LLM: Summarize & Format**\n  The Chat Model turns raw scraped info into easy-to-read Markdown or JSON.\n  This is like having a mini data analyst!\n\n* **\ud83d\uddc2\ufe0f Parse Scrape Output**\n  This node extracts the final numbers (open rate, CTR, bounces) so the logic can understand them.\n\n---\n\n### \ud83c\udfaf **Why It\u2019s Important**\n\n\u2705 You don\u2019t have to log in manually to get reports.\n\u2705 The AI cleans up messy scraped data.\n\u2705 Makes follow-up decisions possible without human effort.\n\u2705 Works for **any ESP** \u2014 if the layout changes, just adjust the scraper.\n\n---\n\n---\n\n",
        "height": 1480,
        "width": 420,
        "color": 3
      },
      "id": "f3f90ae3-cfad-4951-99d6-61746f7dd781",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3072,
        32
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## \ud83d\udcc8 **\ud83d\udd39 SECTION 3: Decide & Act Automatically**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                                |\n| ---- | ----------------------------------- |\n| \ud83d\udd0e   | **IF: Open \u226530% & CTR <10%?**       |\n| \ud83d\udce7   | **Send Follow-Up Engagement Email** |\n| \ud83d\udeab   | **Skip \u2014 No Action Needed**         |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\ud83d\udd0e IF: Open \u226530% & CTR <10%?**\n  This node checks:\n\n  * Is the open rate good? (\u226530%)\n  * But is the click-through rate low? (<10%)\n    If **true**, it triggers follow-up to re-engage the audience.\n\n* **\ud83d\udce7 Send Follow-Up Engagement Email**\n  If the condition is true, this node sends a **personalized follow-up email** automatically.\n  For example: \u201cHey, you opened but didn\u2019t click \u2014 here\u2019s your special offer!\u201d\n\n* **\ud83d\udeab Skip \u2014 No Action Needed**\n  If the condition is **false** (e.g. CTR is healthy), do nothing. The workflow ends safely.\n\n---\n\n",
        "height": 1100,
        "width": 420,
        "color": 5
      },
      "id": "d8843926-4832-4b94-9745-be32127cd5ad",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2448,
        496
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25",
        "height": 240,
        "width": 380,
        "color": 7
      },
      "id": "f9ed1775-00e1-4b4a-9f62-0780069add22",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1952,
        416
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n",
        "height": 320,
        "width": 1300,
        "color": 4
      },
      "id": "16c699a8-34e9-4705-bebd-39dd785e69d9",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5488,
        160
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "content": "# Dynamic Email Re-Engagement Automation\n---\n\n## \ud83c\udfaf **\ud83d\udd39 SECTION 1: Schedule & Prepare Inputs**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                             |\n| ---- | -------------------------------- |\n| \u23f0    | **Daily Campaign Check Trigger** |\n| \u270f\ufe0f   | **Set Campaign Input Fields**    |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\u23f0 Daily Campaign Check Trigger:**\n  This node automatically **starts the workflow on a schedule** \u2014 for example, every morning at 9\u202fAM.\n  It makes sure you **don\u2019t have to run it manually** every time. The goal is to check your email campaign performance **regularly and consistently**.\n\n* **\u270f\ufe0f Set Campaign Input Fields:**\n  This node **defines any input values** that your Agent needs.\n  For example:\n\n  * Campaign ID\n  * ESP URL\n  * Date range\n  * Any dynamic variables\n\n  It acts like **filling in a form** that the rest of the workflow will use.\n  You can **edit it easily** without changing the whole workflow.\n\n---\n\n### \ud83c\udfaf **Why It\u2019s Important**\n\n\u2705 Automates the whole thing on autopilot.\n\u2705 Ensures the Agent always has the **right data**.\n\u2705 Makes the workflow easy to maintain for non-tech users \u2014 just change a value in **Edit Fields**, done!\n\n---\n\n---\n\n## \ud83e\udd16 **\ud83d\udd39 SECTION 2: Scrape & Analyze with AI Agent**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                                             |\n| ---- | ------------------------------------------------ |\n| \ud83e\udd16   | **Agent: Scrape & Analyze Campaign Performance** |\n| \ud83e\udde0   | **LLM: Summarize & Format**                      |\n| \ud83c\udf10   | **Bright Data MCP: Scrape Report**               |\n| \ud83d\uddc2\ufe0f  | **Parse Scrape Output**                          |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance**\n  This is your **AI Agent** \u2014 it does the smart part:\n\n  * Talks to the **Bright Data MCP Tool** to scrape the ESP report page.\n  * Uses an **LLM** (OpenAI Chat Model) to process the scraped data.\n  * Passes the result to an **Output Parser** to turn messy text into clean, structured data.\n\n* **\ud83c\udf10 Bright Data MCP: Scrape Report**\n  Bright Data logs in, navigates to your campaign report page, and **scrapes live open/click numbers**.\n\n* **\ud83e\udde0 LLM: Summarize & Format**\n  The Chat Model turns raw scraped info into easy-to-read Markdown or JSON.\n  This is like having a mini data analyst!\n\n* **\ud83d\uddc2\ufe0f Parse Scrape Output**\n  This node extracts the final numbers (open rate, CTR, bounces) so the logic can understand them.\n\n---\n\n### \ud83c\udfaf **Why It\u2019s Important**\n\n\u2705 You don\u2019t have to log in manually to get reports.\n\u2705 The AI cleans up messy scraped data.\n\u2705 Makes follow-up decisions possible without human effort.\n\u2705 Works for **any ESP** \u2014 if the layout changes, just adjust the scraper.\n\n---\n\n---\n\n## \ud83d\udcc8 **\ud83d\udd39 SECTION 3: Decide & Act Automatically**\n\n### \u2705 **Nodes in this Section**\n\n| Node | Name                                |\n| ---- | ----------------------------------- |\n| \ud83d\udd0e   | **IF: Open \u226530% & CTR <10%?**       |\n| \ud83d\udce7   | **Send Follow-Up Engagement Email** |\n| \ud83d\udeab   | **Skip \u2014 No Action Needed**         |\n\n---\n\n### \ud83d\udca1 **What Happens Here**\n\n* **\ud83d\udd0e IF: Open \u226530% & CTR <10%?**\n  This node checks:\n\n  * Is the open rate good? (\u226530%)\n  * But is the click-through rate low? (<10%)\n    If **true**, it triggers follow-up to re-engage the audience.\n\n* **\ud83d\udce7 Send Follow-Up Engagement Email**\n  If the condition is true, this node sends a **personalized follow-up email** automatically.\n  For example: \u201cHey, you opened but didn\u2019t click \u2014 here\u2019s your special offer!\u201d\n\n* **\ud83d\udeab Skip \u2014 No Action Needed**\n  If the condition is **false** (e.g. CTR is healthy), do nothing. The workflow ends safely.\n\n---\n\n### \ud83c\udfaf **Why It\u2019s Important**\n\n\u2705 Takes action **only when needed**, saving time.\n\u2705 Boosts click rates without extra manual work.\n\u2705 Protects your audience from spam by not sending unnecessary follow-ups.\n\n---\n\n## \ud83c\udf1f **\u2728 Why This Whole Flow is Powerful**\n\n* Runs daily \u2014 **no manual checks**.\n* Scrapes live data \u2014 **no API? No problem!**\n* Uses AI to process messy data \u2014 **no coding required!**\n* Makes smart decisions \u2014 **no human micromanagement**.\n* Sends the right email to the right audience at the right time \u2014 **better engagement, better ROI!**\n\n---\n\n",
        "height": 3118,
        "width": 1289,
        "color": 4
      },
      "id": "b5468916-16ea-45ac-95d0-25fd44b7c9fa",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -5488,
        496
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "7cd92915-eef4-4a66-9636-e426761990a3",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        -2672,
        1632
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "id": "fe745c2d-80b3-4cf4-92c4-7cb1f344cf16",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2704,
        1904
      ],
      "typeVersion": 1.2
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n  \"campaign_name\": \"Summer Promo Blast\",\n  \"campaign_id\": \"123456789\",\n  \"date_sent\": \"2025-06-29\",\n  \"unique_opens\": 1230,\n  \"total_opens\": 1590,\n  \"open_rate\": 47,\n  \"unique_clicks\": 530,\n  \"total_clicks\": 670,\n  \"ctr\": 20,\n  \"soft_bounces\": 25,\n  \"hard_bounces\": 10,\n  \"bounce_rate\": 1.8,\n  \"unsubscribed\": 15,\n  \"unsubscribe_rate\": 0.6\n}\n"
      },
      "id": "703693aa-3849-42fa-a066-39ba65f452fe",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -2528,
        1904
      ],
      "typeVersion": 1.2
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde0 LLM: Summarize & Format": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\u23f0 Daily Campaign Check Trigger": {
      "main": [
        [
          {
            "node": "\u270f\ufe0f Set Campaign Input Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u270f\ufe0f Set Campaign Input Fields": {
      "main": [
        [
          {
            "node": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd0e IF: Open \u226530% & CTR <10%?": {
      "main": [
        [
          {
            "node": "\ud83d\udce7 Send Follow-Up Engagement Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\ud83d\udeab Skip \u2014 No Action Needed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance": {
      "main": [
        [
          {
            "node": "\ud83d\udd0e IF: Open \u226530% & CTR <10%?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "e7bfaba4-75f9-46d0-a400-e06ae7f43929",
  "activeVersionId": null,
  "triggerCount": 0,
  "shared": [
    {
      "updatedAt": "2025-10-13T17:24:18.853Z",
      "createdAt": "2025-10-13T17:24:18.853Z",
      "role": "workflow:owner",
      "workflowId": "BtOUYRJayFDQiei8",
      "projectId": "Fm4IyGowkpuhQseY"
    }
  ],
  "activeVersion": null,
  "tags": []
}