Workflow: UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports
Integrations: airtable, code, gmail, googleAnalyticsTool, httpRequest, manualTrigger, noOp, scheduleTrigger, set, stickyNote

{"id": "SJrqDqTBIAyaZQkq", "meta": {"instanceId": "workflow-072f3978", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:43.471637", "updatedAt": "2025-09-29T07:07:43.471650", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "5efbd956-51b6-4f94-aebc-07e3e691f7eb", "name": "OpenAI Chat Model1", "type": "n8n-nodes-base.noOp", "position": [-180, 480], "parameters": {"model": {"__rl": true, "mode": "list", "value": "gpt-4o-mini"}, "options": {}}, "credentials": {"openAiApi": {"id": "95QGJD3XSz0piaNU", "name": "OpenAi account"}}, "typeVersion": 1.2, "notes": "This lmChatOpenAi node performs automated tasks as part of the workflow."}, {"id": "a1acd323-ed07-41b4-a51e-614afe361893", "name": "Window Buffer Memory", "type": "n8n-nodes-base.noOp", "position": [0, 480], "parameters": {"sessionKey": "YOUR_CREDENTIAL_HERE", "sessionIdType": "customKey", "contextWindowLength": 200}, "typeVersion": 1.3, "notes": "This memoryBufferWindow node performs automated tasks as part of the workflow."}, {"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": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "East Coast Concrete Coating"}, "dimensionsGA4": {"dimensionValues": [{}, {"listName": "sourceMedium"}]}, "additionalFields": {}}, "credentials": {"googleAnalyticsOAuth2": {"id": "sVZ61SpNfC2D1Z7V", "name": "Google Analytics account"}}, "typeVersion": 2, "notes": "This googleAnalyticsTool node performs automated tasks as part of the workflow."}, {"id": "cbc7b539-2fa6-493b-a66c-13db8d8d420c", "name": "Create UTM Link & Send To Database", "type": "n8n-nodes-base.manualTrigger", "position": [-440, -80], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow."}, {"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": "{{ $env.WEBHOOK_URL }}"}, {"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, "notes": "This set node performs automated tasks as part of the workflow."}, {"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, "notes": "This code node performs automated tasks as part of the workflow."}, {"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": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Untitled Base"}, "table": {"__rl": true, "mode": "list", "value": "tblXyFxXMHraieGCa", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "UTM_URL"}, "columns": {"value": {"URL": "{{ $env.BASE_URL }}"}, "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": "0ApVmNsLu7aFzQD6", "name": "Airtable Personal Access Token account"}}, "typeVersion": 2.1, "notes": "This airtable node performs automated tasks as part of the workflow."}, {"id": "19074462-d719-4fdf-bc59-d6b2ecd1ce20", "name": "Create QR Code With Submitted QR Link", "type": "n8n-nodes-base.httpRequest", "position": [280, -20], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"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, "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."}, {"id": "268c110c-2b7c-4450-b5b0-5d5326eac17f", "name": "Google Analytics Data Analysis Agent", "type": "n8n-nodes-base.noOp", "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, "notes": "This agent node performs automated tasks as part of the workflow."}, {"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": "pIXP1ZseBP4Z5CCp", "name": "Gmail account"}}, "typeVersion": 2.1, "notes": "This gmail node performs automated tasks as part of the workflow."}, {"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, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"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, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"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, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "6e6641fd-a59c-49e9-af43-1b2b9b458544", "connections": {"19074462-d719-4fdf-bc59-d6b2ecd1ce20": {"main": [[{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-c48440d5", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-a79f03e6", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-3c1d06d6", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-cab3e834", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-9b3513e1", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-cbeadb4e", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-1c6cc7ed", "type": "main", "index": 0}], [{"node": "error-handler-19074462-d719-4fdf-bc59-d6b2ecd1ce20-3f87a4c6", "type": "main", "index": 0}]]}, "5efbd956-51b6-4f94-aebc-07e3e691f7eb": {"main": [[{"node": "error-handler-5efbd956-51b6-4f94-aebc-07e3e691f7eb-e4f4a1ff", "type": "main", "index": 0}]]}, "c3c2b5fa-c294-4306-a050-dccd592477fa": {"main": [[{"node": "error-handler-c3c2b5fa-c294-4306-a050-dccd592477fa-3007659d", "type": "main", "index": 0}]]}}, "description": "Automated workflow: UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports. This workflow integrates 13 different services: stickyNote, googleAnalyticsTool, httpRequest, airtable, code. It contains 18 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}