{
  "id": "P6LeLqxzbkO3FiPE",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "10 Track Email Campaign Performance",
  "tags": [],
  "nodes": [
    {
      "id": "75f14163-7400-49fe-aeb9-1f983dfe0c5e",
      "name": "\u23f0 Daily Campaign Check Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -60,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "3d85c239-8871-48ce-aecc-581a4a4be75c",
      "name": "\u270f\ufe0f Set Campaign Input Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        160,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "04df454e-d477-4dd4-a029-2c97cfd1bf8f",
              "name": "url",
              "type": "string",
              "value": "=https://www.mailchimp.com/campaigns/123/report"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "197f6678-606d-4e9d-91b9-2ed48fe6799c",
      "name": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        520,
        0
      ],
      "parameters": {
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "0fa379ec-3e22-4f69-97dc-c45e244121c6",
      "name": "\ud83e\udde0 LLM: Summarize & Format",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        500,
        300
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d1a27651-f1b3-412e-8452-563eba14c7d0",
      "name": "\ud83c\udf10 Bright Data MCP: Scrape Report",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        680,
        300
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb814c29-e412-4332-ae43-b5f8ce4f0783",
      "name": "\ud83d\udd0e IF: Open \u226530% & CTR <10%?",
      "type": "n8n-nodes-base.if",
      "position": [
        1100,
        0
      ],
      "parameters": {
        "options": {},
        "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
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b77a5854-6882-47ac-8dba-9af0bdcc0e1f",
      "name": "\ud83d\udce7 Send Follow-Up Engagement Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1340,
        -100
      ],
      "parameters": {
        "sendTo": "user@example.com",
        "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": {},
        "subject": "Did you miss this? Here\u2019s something special for you!",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "1259660d-e04c-4708-9319-22749360bdc3",
      "name": "\ud83d\udeab Skip \u2014 No Action Needed",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1340,
        100
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6e673900-d27b-4aba-be1d-8d9149fa6ceb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        -1180
      ],
      "parameters": {
        "color": 6,
        "width": 420,
        "height": 1360,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "d722faa7-9304-4145-9e22-f90b71b02053",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -1300
      ],
      "parameters": {
        "color": 3,
        "width": 420,
        "height": 1480,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "031503cb-3fa4-46b6-9b57-529b10553ec2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1060,
        -840
      ],
      "parameters": {
        "color": 5,
        "width": 420,
        "height": 1100,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "4502ee4c-219e-4495-b4ff-c8b3beec55e8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1560,
        -920
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 240,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "07751162-2ade-4591-93bc-a3dc2414553d",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1980,
        -1180
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "6c9e1f76-b6d0-4915-8f05-ada92abfcd89",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1980,
        -840
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 3118,
        "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"
      },
      "typeVersion": 1
    },
    {
      "id": "237aeaf4-64f1-411b-a013-9209f46fa320",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        840,
        300
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "f86d1724-c0c3-4820-9699-44f2d4101054",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        800,
        560
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "41e646ea-effa-40c0-8513-7fecd83762ee",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        980,
        560
      ],
      "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"
      },
      "typeVersion": 1.2
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "226f422b-33c6-4834-8653-5f7a501d9955",
  "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
          }
        ]
      ]
    },
    "\ud83c\udf10 Bright Data MCP: Scrape Report": {
      "ai_tool": [
        [
          {
            "node": "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 Agent: Scrape & Analyze Campaign Performance": {
      "main": [
        [
          {
            "node": "\ud83d\udd0e IF: Open \u226530% & CTR <10%?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}