UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports
Generate, track, and analyze marketing campaign performance with this comprehensive workflow that automates UTM link creation, QR code generation, and scheduled Google Analytics reporting. This manual trigger workflow begins by using OpenAI to set and create UTM parameters for your links, which are then immediately submitted to an Airtable database for organized storage and simultaneously used to generate a QR code via an HTTP request. For ongoing analysis, a scheduled trigger initiates a Google Analytics Data Analysis Agent, powered by OpenAI, to extract and interpret key performance metrics. Finally, this agent crafts a concise summary report that is automatically sent to your marketing manager via Gmail, ensuring timely insights without manual intervention. This solution is ideal for marketing teams, e-commerce businesses, or content creators who need to streamline their campaign setup, maintain a clean record of their marketing assets, and receive automated, intelligent reports on their campaign effectiveness, ultimately saving significant time in campaign management and data analysis.
Workflow JSON
{"id": "SJrqDqTBIAyaZQkq", "meta": {"instanceId": "73d9d5380db181d01f4e26492c771d4cb5c4d6d109f18e2621cf49cac4c50763", "templateCredsSetupCompleted": true}, "name": "UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports", "tags": [], "nodes": [{"id": "5efbd956-51b6-4f94-aebc-07e3e691f7eb", "name": "OpenAI Chat Model1", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": [-180, 480], "parameters": {"model": {"__rl": true, "mode": "list", "value": "gpt-4o-mini"}, "options": {}}, "credentials": {"openAiApi": {"id": "", "name": "[Your openAiApi]"}}, "typeVersion": 1.2}, {"id": "a1acd323-ed07-41b4-a51e-614afe361893", "name": "Window Buffer Memory", "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow", "position": [0, 480], "parameters": {"sessionKey": "={{ $json.timestamp }}", "sessionIdType": "customKey", "contextWindowLength": 200}, "typeVersion": 1.3}, {"id": "c3c2b5fa-c294-4306-a050-dccd592477fa", "name": "Google Analytics", "type": "n8n-nodes-base.googleAnalyticsTool", "position": [160, 480], "parameters": {"metricsGA4": {"metricValues": [{"listName": "sessions"}]}, "propertyId": {"__rl": true, "mode": "list", "value": "404306108", "cachedResultUrl": "https://analytics.google.com/analytics/web/#/p404306108/", "cachedResultName": "East Coast Concrete Coating"}, "dimensionsGA4": {"dimensionValues": [{}, {"listName": "sourceMedium"}]}, "additionalFields": {}}, "credentials": {"googleAnalyticsOAuth2": {"id": "", "name": "[Your googleAnalyticsOAuth2]"}}, "typeVersion": 2}, {"id": "cbc7b539-2fa6-493b-a66c-13db8d8d420c", "name": "Create UTM Link & Send To Database", "type": "n8n-nodes-base.manualTrigger", "position": [-440, -80], "parameters": {}, "typeVersion": 1}, {"id": "5358f2cc-bdb0-4e9b-a6b9-93418f83db02", "name": "Set UTM Parameters For Link", "type": "n8n-nodes-base.set", "position": [-220, -80], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "28d0a36d-5b03-4b74-9941-ef0e1aab86bf", "name": "website_url", "type": "string", "value": "https://ecconcretecoating.com/"}, {"id": "1a2ee174-4684-4246-813f-b67285af48b8", "name": "campaign_id", "type": "string", "value": "12246"}, {"id": "e15a846d-6e37-4fbf-a9f4-b3fce3441295", "name": "campaign_source", "type": "string", "value": "google"}, {"id": "f15e2bb1-08a6-48c4-8458-b753864e9364", "name": "campaign_medium", "type": "string", "value": "display"}, {"id": "548900ab-aa2c-498f-bbd9-a787306e72db", "name": "campaign_name", "type": "string", "value": "summerfun"}, {"id": "fd8d1bd4-a75d-4c49-b795-8fda7c377b66", "name": "campaign_term", "type": "string", "value": "conretecoating"}]}}, "typeVersion": 3.4}, {"id": "45daf73a-01c2-40ab-8546-7fdd489e2a1c", "name": "Create UTM Link With Parameters", "type": "n8n-nodes-base.code", "position": [40, -140], "parameters": {"jsCode": "const items = $input.all();\nconst updatedItems = items.map((item) => {\n const utmUrl = `${item?.json?.website_url}?utm_source=${item?.json?.campaign_source}&utm_medium=${item?.json?.campaign_medium}&utm_campaign=${item?.json?.campaign_name}&utm_term=${item?.json?.campaign_term}&utm_content=${item?.json?.campaign_id}`;\n item.json.utmUrl = utmUrl;\n return item;\n});\nreturn updatedItems;\n"}, "typeVersion": 2}, {"id": "a621984d-eea5-464d-9be3-e620e779abd5", "name": "Submit UTM Link To Database", "type": "n8n-nodes-base.airtable", "position": [280, -200], "parameters": {"base": {"__rl": true, "mode": "list", "value": "appIXd8a8JeB9bPaL", "cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL", "cachedResultName": "Untitled Base"}, "table": {"__rl": true, "mode": "list", "value": "tblXyFxXMHraieGCa", "cachedResultUrl": "https://airtable.com/appIXd8a8JeB9bPaL/tblXyFxXMHraieGCa", "cachedResultName": "UTM_URL"}, "columns": {"value": {"URL": "={{ $json.utmUrl }}"}, "schema": [{"id": "id", "type": "string", "display": true, "removed": false, "readOnly": true, "required": false, "displayName": "id", "defaultMatch": true}, {"id": "URL", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "URL", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "defineBelow", "matchingColumns": ["id"], "attemptToConvertTypes": false, "convertFieldsToString": false}, "options": {}, "operation": "upsert"}, "credentials": {"airtableTokenApi": {"id": "", "name": "[Your airtableTokenApi]"}}, "typeVersion": 2.1}, {"id": "19074462-d719-4fdf-bc59-d6b2ecd1ce20", "name": "Create QR Code With Submitted QR Link", "type": "n8n-nodes-base.httpRequest", "position": [280, -20], "parameters": {"url": "=https://quickchart.io/qr?text={{ $json.utmUrl }}&size=300&margin=10&ecLevel=H&dark=000000&light=FFFFFF\n", "options": {}}, "typeVersion": 4.2}, {"id": "a8c22bb2-f8eb-4e5f-b288-9c25e0aeb648", "name": "Schedule Google Analytics Report To Marketing Manager", "type": "n8n-nodes-base.scheduleTrigger", "position": [-460, 280], "parameters": {"rule": {"interval": [{}]}}, "typeVersion": 1.2}, {"id": "268c110c-2b7c-4450-b5b0-5d5326eac17f", "name": "Google Analytics Data Analysis Agent", "type": "@n8n/n8n-nodes-langchain.agent", "position": [-100, 280], "parameters": {"text": "={{ $json.timestamp }}", "options": {"systemMessage": "\"You are an advanced data analytics AI specializing in executive reporting. Your task is to analyze the provided dataset and generate a structured executive summary that highlights key insights, trends, and actionable takeaways. Structure your summary in the following format:\n\nOverview \u2013 Briefly describe the dataset and its significance.\nKey Performance Indicators (KPIs) \u2013 Highlight the most important metrics and compare them to previous periods if applicable.\nTrends & Insights \u2013 Identify patterns, growth areas, declines, and anomalies.\nOpportunities & Recommendations \u2013 Provide strategic recommendations based on the insights.\nConclusion \u2013 Summarize the key takeaways concisely.\n*Ensure the tone is professional, clear, and tailored for executives who require quick, data-driven insights without unnecessary details.\""}, "promptType": "define"}, "typeVersion": 1.7}, {"id": "1b012731-e67b-4e0d-95b7-a7f587754a05", "name": "Send Summary Report To Marketing Manager", "type": "n8n-nodes-base.gmail", "position": [300, 280], "webhookId": "a9b88615-c7e2-4b56-891a-98f4d6b34220", "parameters": {"sendTo": "john@marketingcanopy.com", "message": "={{ $json.output }}", "options": {}, "subject": "Google Analytics Metrics Summary Report"}, "credentials": {"gmailOAuth2": {"id": "", "name": "[Your gmailOAuth2]"}}, "typeVersion": 2.1}, {"id": "9da758e1-8aed-446b-a074-8fee5405583f", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [-540, -280], "parameters": {"width": 500, "height": 400, "content": "Create a marketing link with UTM parameters. Easily store in database and have QR code created and ready as well.\n\nType in requirements:\nwebsite URL\ncampaign id\ncampaign source\ncampaign medium\ncampaign name\ncampaign term\n\n"}, "typeVersion": 1}, {"id": "92f5df8d-88ca-4b58-b544-c0b2d3578a73", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [0, -380], "parameters": {"color": 4, "width": 580, "height": 540, "content": "Code node creates the URL with UTM parameters. \n\nIt then sends to your Airtable database to store for records. It also creates a QR code with the embedded link to be used for materials. \n\nSample Airtable Setup:\n-Website Link UTM column"}, "typeVersion": 1}, {"id": "408af10c-4b0e-4d94-b02d-5d887fb150c3", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-540, 180], "parameters": {"color": 5, "width": 1340, "height": 460, "content": "Schedule a Google Analytics Reports with Medium/Source to track UTM link performance. Update the reporting fields to fit your business needs. You can track traffic, conversions and other engagement metrics.\n\n*Sample Google Report Metrics: Sessions. Update metrics as needed."}, "typeVersion": 1}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1"}, "versionId": "6e6641fd-a59c-49e9-af43-1b2b9b458544", "connections": {"Google Analytics": {"ai_tool": [[{"node": "Google Analytics Data Analysis Agent", "type": "ai_tool", "index": 0}]]}, "OpenAI Chat Model1": {"ai_languageModel": [[{"node": "Google Analytics Data Analysis Agent", "type": "ai_languageModel", "index": 0}]]}, "Window Buffer Memory": {"ai_memory": [[{"node": "Google Analytics Data Analysis Agent", "type": "ai_memory", "index": 0}]]}, "Set UTM Parameters For Link": {"main": [[{"node": "Create UTM Link With Parameters", "type": "main", "index": 0}]]}, "Submit UTM Link To Database": {"main": [[]]}, "Create UTM Link With Parameters": {"main": [[{"node": "Create QR Code With Submitted QR Link", "type": "main", "index": 0}, {"node": "Submit UTM Link To Database", "type": "main", "index": 0}]]}, "Create UTM Link & Send To Database": {"main": [[{"node": "Set UTM Parameters For Link", "type": "main", "index": 0}]]}, "Google Analytics Data Analysis Agent": {"main": [[{"node": "Send Summary Report To Marketing Manager", "type": "main", "index": 0}]]}, "Send Summary Report To Marketing Manager": {"main": [[]]}, "Schedule Google Analytics Report To Marketing Manager": {"main": [[{"node": "Google Analytics Data Analysis Agent", "type": "main", "index": 0}]]}}}How to Import This Workflow
- 1Copy the workflow JSON above using the Copy Workflow JSON button.
- 2Open your n8n instance and go to Workflows.
- 3Click Import from JSON and paste the copied workflow.
Don't have an n8n instance? Start your free trial at n8nautomation.cloud
Related Templates
Visualize your SQL Agent queries with OpenAI and Quickchart.io
Visualize your SQL Agent queries with OpenAI and Quickchart.io empowers you to instantly transform complex SQL Agent query results into insightful charts and graphs, all through a simple chat interface. This workflow connects an OpenAI Chat Model to interpret your chat messages, determine if a chart is needed using a Text Classifier, and then leverages Quickchart.io by generating a chart definition with structured output via an HTTP Request node. It automates the entire process from receiving a chat message to extracting the user's question, passing it to an AI Agent, and then conditionally generating and displaying a chart, saving significant time and effort for data analysts, developers, and business intelligence professionals who frequently need to visualize their SQL data. By automating chart generation, this workflow eliminates the manual steps of data extraction, chart selection, and configuration, allowing users to quickly gain visual insights from their SQL Agent queries without needing to switch between multiple tools or possess advanced charting skills.
Analyze the sentiment of feedback and send a message on Mattermost
Automatically analyze customer feedback sentiment and notify your team on Mattermost with this n8n workflow. This automation connects Typeform submissions directly to Google Cloud Natural Language for sentiment analysis, then routes the results to your Mattermost channel. When a user submits a form through Typeform, the workflow extracts the feedback, sends it to Google Cloud Natural Language for sentiment scoring, and based on that score, sends a message to a designated Mattermost channel, allowing for immediate team awareness of positive, negative, or neutral feedback. This workflow is ideal for product managers, customer support teams, or marketing departments who need to quickly gauge public opinion or customer satisfaction from surveys, support tickets, or product reviews, enabling faster response times to critical feedback and reducing the manual effort of monitoring and reporting. It saves significant time and ensures that important customer insights are never missed, fostering a more responsive and customer-centric operation.
Qualify replies from Pipedrive persons with AI
Automate the qualification of inbound email replies from Pipedrive contacts using artificial intelligence. This workflow connects Gmail and OpenAI to your Pipedrive CRM, streamlining your lead nurturing process. When a new email arrives in either of your specified Gmail inboxes (Email box 1 or Email box 2), the workflow searches for the sender as a person in Pipedrive. It then retrieves their full person details and sends the email content to OpenAI for an AI-powered assessment of interest (Is interested?). Based on OpenAI's response, if the person is deemed interested, a new deal is automatically created in Pipedrive, ensuring hot leads are immediately acted upon. This is ideal for sales teams, marketers, and business development professionals who receive a high volume of email replies and need to quickly identify and prioritize genuinely interested prospects, saving significant manual review time and accelerating sales cycles.