AutomationFlowsData & Sheets › Multi-jurisdiction Smart Contract Compliance Monitor with Automated Alerts

Multi-jurisdiction Smart Contract Compliance Monitor with Automated Alerts

ByRodrigue Gbadou @gbadou on n8n.io

Regulatory monitoring: Continuously tracks changes in laws, regulations, and compliance requirements across multiple jurisdictions Contract analysis: AI-powered review of existing contracts to identify compliance gaps and risks Automated alerts: Real-time notifications when…

Cron / scheduled trigger★★★★☆ complexity16 nodesHTTP RequestPostgresGmailGoogle Sheets
Data & Sheets Trigger: Cron / scheduled Nodes: 16 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #6075 — we link there as the canonical source.

This workflow follows the Gmail → Google Sheets recipe pattern — see all workflows that pair these two integrations.

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": "1",
      "name": "Daily Compliance Check",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        240,
        300
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "value": "0 8 * * 1-5"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        140,
        180
      ],
      "parameters": {
        "width": 240,
        "height": 160,
        "content": "## Compliance Monitor Setup\n\n\u2699\ufe0f **Configure monitoring:**\n- Jurisdictions to monitor\n- Contract types and categories\n- Risk thresholds\n- Legal team notifications"
      },
      "typeVersion": 1
    },
    {
      "id": "3",
      "name": "Compliance Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        440,
        300
      ],
      "parameters": {
        "values": {
          "number": [
            {
              "name": "mediumRiskThreshold",
              "value": 31
            },
            {
              "name": "highRiskThreshold",
              "value": 61
            },
            {
              "name": "criticalRiskThreshold",
              "value": 81
            }
          ],
          "string": [
            {
              "name": "jurisdictions",
              "value": "EU,US,UK,FR"
            },
            {
              "name": "legalEmail",
              "value": "user@example.com"
            },
            {
              "name": "complianceOfficer",
              "value": "user@example.com"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4",
      "name": "Monitor EU Regulations",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        200
      ],
      "parameters": {
        "qs": {
          "qid": "regulatory_updates",
          "DD_YEAR": "{{ new Date().getFullYear() }}",
          "DD_MONTH": "{{ String(new Date().getMonth() + 1).padStart(2, '0') }}",
          "SUBDOM_INIT": "LEGISLATION"
        },
        "url": "https://eur-lex.europa.eu/legal-content/EN/ALL/",
        "method": "GET"
      },
      "typeVersion": 1
    },
    {
      "id": "5",
      "name": "Monitor US Federal Register",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        300
      ],
      "parameters": {
        "qs": {
          "order": "newest",
          "fields[]": "title,html_url,publication_date,abstract",
          "per_page": 20,
          "conditions[publication_date][gte]": "{{ new Date(Date.now() - 7*24*60*60*1000).toISOString().split('T')[0] }}"
        },
        "url": "https://www.federalregister.gov/api/v1/documents.json",
        "method": "GET"
      },
      "typeVersion": 1
    },
    {
      "id": "6",
      "name": "Monitor UK Legislation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        400
      ],
      "parameters": {
        "qs": {
          "limit": 20,
          "format": "json"
        },
        "url": "https://www.legislation.gov.uk/new",
        "method": "GET"
      },
      "typeVersion": 1
    },
    {
      "id": "7",
      "name": "Get Active Contracts",
      "type": "n8n-nodes-base.postgres",
      "position": [
        640,
        500
      ],
      "parameters": {
        "query": "SELECT contract_id, contract_type, jurisdiction, signing_date, expiry_date, key_clauses, compliance_tags FROM contracts WHERE status = 'active'"
      },
      "typeVersion": 1
    },
    {
      "id": "8",
      "name": "Analyze Compliance Impact",
      "type": "n8n-nodes-base.code",
      "position": [
        840,
        350
      ],
      "parameters": {
        "jsCode": "// Advanced compliance risk analysis\nconst complianceSettings = $node['Compliance Settings'].json;\nconst jurisdictions = complianceSettings.jurisdictions.split(',');\n\n// Collect all regulatory updates\nconst regulatoryUpdates = [];\n\n// Process EU regulations\nconst euData = $node['Monitor EU Regulations'].json;\nif (euData && euData.results) {\n  euData.results.forEach(reg => {\n    regulatoryUpdates.push({\n      jurisdiction: 'EU',\n      title: reg.title,\n      url: reg.url,\n      date: reg.date,\n      category: 'legislation',\n      impact_areas: extractImpactAreas(reg.title + ' ' + reg.abstract)\n    });\n  });\n}\n\n// Process US Federal Register\nconst usData = $node['Monitor US Federal Register'].json;\nif (usData && usData.results) {\n  usData.results.forEach(reg => {\n    regulatoryUpdates.push({\n      jurisdiction: 'US',\n      title: reg.title,\n      url: reg.html_url,\n      date: reg.publication_date,\n      category: 'federal_register',\n      impact_areas: extractImpactAreas(reg.title + ' ' + reg.abstract)\n    });\n  });\n}\n\n// Process UK legislation\nconst ukData = $node['Monitor UK Legislation'].json;\nif (ukData && ukData.results) {\n  ukData.results.forEach(reg => {\n    regulatoryUpdates.push({\n      jurisdiction: 'UK',\n      title: reg.title,\n      url: reg.uri,\n      date: reg.date,\n      category: 'legislation',\n      impact_areas: extractImpactAreas(reg.title)\n    });\n  });\n}\n\n// Get active contracts\nconst contracts = $node['Get Active Contracts'].json;\n\n// Analyze compliance risks\nconst complianceAnalysis = [];\n\nregulatoryUpdates.forEach(update => {\n  // Find potentially affected contracts\n  const affectedContracts = contracts.filter(contract => {\n    const contractJurisdiction = contract.jurisdiction;\n    const contractType = contract.contract_type;\n    const contractClauses = contract.key_clauses || '';\n    const complianceTags = contract.compliance_tags || '';\n    \n    // Check jurisdiction match\n    if (contractJurisdiction !== update.jurisdiction) return false;\n    \n    // Check impact area relevance\n    const isRelevant = update.impact_areas.some(area => \n      contractClauses.toLowerCase().includes(area) || \n      complianceTags.toLowerCase().includes(area)\n    );\n    \n    return isRelevant;\n  });\n  \n  if (affectedContracts.length > 0) {\n    // Calculate risk score\n    let riskScore = 0;\n    \n    // Base risk from number of affected contracts\n    riskScore += Math.min(affectedContracts.length * 10, 40);\n    \n    // Risk from impact areas\n    const highRiskAreas = ['data protection', 'financial services', 'healthcare', 'employment'];\n    const impactRisk = update.impact_areas.filter(area => \n      highRiskAreas.some(hrArea => area.includes(hrArea))\n    ).length * 15;\n    riskScore += Math.min(impactRisk, 30);\n    \n    // Recency risk\n    const daysSinceUpdate = (new Date() - new Date(update.date)) / (1000 * 60 * 60 * 24);\n    if (daysSinceUpdate <= 7) riskScore += 20;\n    else if (daysSinceUpdate <= 30) riskScore += 10;\n    \n    // Contract expiry urgency\n    const nearExpiryContracts = affectedContracts.filter(contract => {\n      const daysToExpiry = (new Date(contract.expiry_date) - new Date()) / (1000 * 60 * 60 * 24);\n      return daysToExpiry <= 90;\n    });\n    riskScore += nearExpiryContracts.length * 5;\n    \n    // Determine risk level\n    let riskLevel = 'low';\n    let riskColor = '\ud83d\udfe2';\n    let recommendedAction = 'monitor';\n    \n    if (riskScore >= complianceSettings.criticalRiskThreshold) {\n      riskLevel = 'critical';\n      riskColor = '\ud83d\udd34';\n      recommendedAction = 'emergency_review';\n    } else if (riskScore >= complianceSettings.highRiskThreshold) {\n      riskLevel = 'high';\n      riskColor = '\ud83d\udfe0';\n      recommendedAction = 'immediate_review';\n    } else if (riskScore >= complianceSettings.mediumRiskThreshold) {\n      riskLevel = 'medium';\n      riskColor = '\ud83d\udfe1';\n      recommendedAction = 'scheduled_review';\n    }\n    \n    complianceAnalysis.push({\n      regulatory_update: update,\n      affected_contracts: affectedContracts,\n      risk_score: Math.round(riskScore),\n      risk_level: riskLevel,\n      risk_color: riskColor,\n      recommended_action: recommendedAction,\n      impact_assessment: {\n        contract_count: affectedContracts.length,\n        jurisdictions_affected: [update.jurisdiction],\n        high_priority_contracts: nearExpiryContracts.length,\n        estimated_review_hours: affectedContracts.length * 2\n      },\n      analyzed_at: new Date().toISOString()\n    });\n  }\n});\n\n// Helper function to extract impact areas\nfunction extractImpactAreas(text) {\n  const impactKeywords = {\n    'data protection': ['gdpr', 'privacy', 'data protection', 'personal data'],\n    'financial services': ['banking', 'finance', 'securities', 'investment'],\n    'healthcare': ['healthcare', 'medical', 'pharmaceutical', 'hipaa'],\n    'employment': ['employment', 'labor', 'workplace', 'discrimination'],\n    'environmental': ['environmental', 'sustainability', 'climate', 'carbon'],\n    'cybersecurity': ['cyber', 'security', 'breach', 'information security']\n  };\n  \n  const areas = [];\n  const lowerText = text.toLowerCase();\n  \n  Object.entries(impactKeywords).forEach(([area, keywords]) => {\n    if (keywords.some(keyword => lowerText.includes(keyword))) {\n      areas.push(area);\n    }\n  });\n  \n  return areas;\n}\n\nreturn complianceAnalysis.filter(analysis => analysis.risk_score > 0);"
      },
      "typeVersion": 1
    },
    {
      "id": "9",
      "name": "Filter Critical Compliance Issues",
      "type": "n8n-nodes-base.if",
      "position": [
        1040,
        250
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.risk_level }}",
              "rightValue": "critical"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "10",
      "name": "Send Critical Legal Alert",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1240,
        150
      ],
      "parameters": {
        "sendTo": "={{ $node['Compliance Settings'].json.legalEmail }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; margin: 20px; background-color: #f8f9fa; }\n    .container { max-width: 700px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; }\n    .critical-alert { background: linear-gradient(45deg, #dc3545, #b21e2f); color: white; padding: 20px; text-align: center; margin: -30px -30px 30px -30px; border-radius: 10px 10px 0 0; }\n    .regulatory-update { background: #f8d7da; padding: 15px; margin: 15px 0; border-radius: 5px; border-left: 4px solid #dc3545; }\n    .affected-contracts { background: #fff3cd; padding: 15px; margin: 15px 0; border-radius: 5px; }\n    .impact-assessment { background: #e2e3e5; padding: 15px; margin: 15px 0; border-radius: 5px; }\n    .immediate-actions { background: #d4edda; padding: 15px; margin: 15px 0; border-radius: 5px; border-left: 4px solid #28a745; }\n    .contract-list { background: #f8f9fa; padding: 10px; margin: 10px 0; border-radius: 3px; }\n    .cta { background: #007bff; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"critical-alert\">\n      <h2>\u2696\ufe0f CRITICAL COMPLIANCE EMERGENCY</h2>\n      <p>Immediate legal intervention required - Risk Level: {{ $json.risk_score }}/100</p>\n    </div>\n    \n    <div class=\"regulatory-update\">\n      <h3>\ud83d\udccb Regulatory Change Details</h3>\n      <p><strong>Jurisdiction:</strong> {{ $json.regulatory_update.jurisdiction }}</p>\n      <p><strong>Title:</strong> {{ $json.regulatory_update.title }}</p>\n      <p><strong>Date:</strong> {{ new Date($json.regulatory_update.date).toLocaleDateString() }}</p>\n      <p><strong>Source:</strong> <a href=\"{{ $json.regulatory_update.url }}\">{{ $json.regulatory_update.url }}</a></p>\n      <p><strong>Impact Areas:</strong> {{ $json.regulatory_update.impact_areas.join(', ') }}</p>\n    </div>\n    \n    <div class=\"affected-contracts\">\n      <h3>\ud83d\udcc4 Affected Contracts ({{ $json.affected_contracts.length }})</h3>\n      {{#each $json.affected_contracts}}\n      <div class=\"contract-list\">\n        <p><strong>Contract ID:</strong> {{ this.contract_id }}</p>\n        <p><strong>Type:</strong> {{ this.contract_type }}</p>\n        <p><strong>Expiry:</strong> {{ new Date(this.expiry_date).toLocaleDateString() }}</p>\n      </div>\n      {{/each}}\n    </div>\n    \n    <div class=\"impact-assessment\">\n      <h3>\ud83d\udcca Impact Assessment</h3>\n      <p><strong>Risk Score:</strong> {{ $json.risk_color }} {{ $json.risk_score }}/100</p>\n      <p><strong>Contracts Affected:</strong> {{ $json.impact_assessment.contract_count }}</p>\n      <p><strong>High Priority Contracts:</strong> {{ $json.impact_assessment.high_priority_contracts }}</p>\n      <p><strong>Estimated Review Time:</strong> {{ $json.impact_assessment.estimated_review_hours }} hours</p>\n    </div>\n    \n    <div class=\"immediate-actions\">\n      <h3>\ud83d\udea8 Immediate Actions Required</h3>\n      <ul>\n        <li>Convene emergency legal review meeting within 24 hours</li>\n        <li>Conduct detailed analysis of regulatory impact on affected contracts</li>\n        <li>Prepare contract amendment strategies and compliance roadmap</li>\n        <li>Notify relevant stakeholders and department heads</li>\n        <li>Document all compliance actions and decisions</li>\n        <li>Establish timeline for contract modifications</li>\n      </ul>\n    </div>\n    \n    <div style=\"text-align: center;\">\n      <a href=\"{{ $json.regulatory_update.url }}\" class=\"cta\">\ud83d\udcd6 Review Regulation</a>\n      <a href=\"mailto:{{ $node['Compliance Settings'].json.complianceOfficer }}\" class=\"cta\">\ud83d\udce7 Alert Compliance</a>\n    </div>\n    \n    <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n      Alert generated: {{ $json.analyzed_at }}<br>\n      This is an automated compliance alert requiring immediate attention.\n    </p>\n  </div>\n</body>\n</html>",
        "options": {
          "contentType": "html"
        },
        "subject": "\ud83d\udea8 CRITICAL COMPLIANCE ALERT - Immediate Legal Review Required"
      },
      "typeVersion": 1
    },
    {
      "id": "11",
      "name": "Filter High Risk Issues",
      "type": "n8n-nodes-base.if",
      "position": [
        1040,
        350
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.risk_level }}",
              "rightValue": "high"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "12",
      "name": "Send High Risk Alert",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1240,
        350
      ],
      "parameters": {
        "sendTo": "={{ $node['Compliance Settings'].json.legalEmail }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; margin: 20px; background-color: #f8f9fa; }\n    .container { max-width: 600px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; }\n    .high-risk-YOUR_OPENAI_KEY_HERE { background: linear-gradient(45deg, #fd7e14, #e8590c); color: white; padding: 20px; text-align: center; margin: -30px -30px 30px -30px; border-radius: 10px 10px 0 0; }\n    .regulatory-summary { background: #fff3cd; padding: 15px; margin: 15px 0; border-radius: 5px; border-left: 4px solid #ffc107; }\n    .contract-summary { background: #e8f4f8; padding: 15px; margin: 15px 0; border-radius: 5px; }\n    .action-plan { background: #d1ecf1; padding: 15px; margin: 15px 0; border-radius: 5px; border-left: 4px solid #17a2b8; }\n    .cta { background: #007bff; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"high-risk-YOUR_OPENAI_KEY_HERE\">\n      <h2>\ud83d\udfe0 HIGH PRIORITY COMPLIANCE REVIEW</h2>\n      <p>Legal review required within 72 hours</p>\n    </div>\n    \n    <p>A regulatory change has been identified that requires prompt legal review of affected contracts.</p>\n    \n    <div class=\"regulatory-summary\">\n      <h3>\ud83d\udccb Regulatory Update Summary</h3>\n      <p><strong>Jurisdiction:</strong> {{ $json.regulatory_update.jurisdiction }}</p>\n      <p><strong>Title:</strong> {{ $json.regulatory_update.title }}</p>\n      <p><strong>Impact Areas:</strong> {{ $json.regulatory_update.impact_areas.join(', ') }}</p>\n      <p><strong>Risk Score:</strong> {{ $json.risk_color }} {{ $json.risk_score }}/100</p>\n    </div>\n    \n    <div class=\"contract-summary\">\n      <h3>\ud83d\udcc4 Contract Impact</h3>\n      <p><strong>Affected Contracts:</strong> {{ $json.impact_assessment.contract_count }}</p>\n      <p><strong>Estimated Review Time:</strong> {{ $json.impact_assessment.estimated_review_hours }} hours</p>\n      <p><strong>High Priority Contracts:</strong> {{ $json.impact_assessment.high_priority_contracts }}</p>\n    </div>\n    \n    <div class=\"action-plan\">\n      <h3>\ud83d\udcc5 Recommended Timeline</h3>\n      <ul>\n        <li><strong>Day 1:</strong> Initial regulatory analysis and contract review</li>\n        <li><strong>Day 2:</strong> Identify specific compliance gaps and risks</li>\n        <li><strong>Day 3:</strong> Develop remediation strategy and timeline</li>\n        <li><strong>Week 1:</strong> Begin contract amendment process</li>\n      </ul>\n    </div>\n    \n    <div style=\"text-align: center;\">\n      <a href=\"{{ $json.regulatory_update.url }}\" class=\"cta\">\ud83d\udcd6 Review Regulation</a>\n      <a href=\"#\" class=\"cta\">\ud83d\udccb Schedule Review</a>\n    </div>\n    \n    <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n      Please prioritize this review based on the risk assessment. Contact the compliance team with any questions.\n    </p>\n  </div>\n</body>\n</html>",
        "options": {
          "contentType": "html"
        },
        "subject": "\ud83d\udfe0 High Priority Compliance Review - {{ $json.regulatory_update.jurisdiction }}"
      },
      "typeVersion": 1
    },
    {
      "id": "13",
      "name": "Filter Medium Risk Issues",
      "type": "n8n-nodes-base.if",
      "position": [
        1040,
        450
      ],
      "parameters": {
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.risk_level }}",
              "rightValue": "medium"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "14",
      "name": "Send Medium Risk Alert",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1240,
        450
      ],
      "parameters": {
        "sendTo": "={{ $node['Compliance Settings'].json.complianceOfficer }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n  <style>\n    body { font-family: Arial, sans-serif; margin: 20px; background-color: #f8f9fa; }\n    .container { max-width: 600px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; }\n    .medium-risk { background: #ffc107; color: #212529; padding: 20px; text-align: center; margin: -30px -30px 30px -30px; border-radius: 10px 10px 0 0; }\n    .update-summary { background: #fff3cd; padding: 15px; margin: 15px 0; border-radius: 5px; }\n    .monitoring-plan { background: #e8f4f8; padding: 15px; margin: 15px 0; border-radius: 5px; }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"medium-risk\">\n      <h2>\ud83d\udfe1 COMPLIANCE MONITORING UPDATE</h2>\n      <p>Scheduled review recommended</p>\n    </div>\n    \n    <p>A regulatory change has been identified that may impact some of our contracts. Please schedule a review within the next 2 weeks.</p>\n    \n    <div class=\"update-summary\">\n      <h3>\ud83d\udcca Update Summary</h3>\n      <p><strong>Regulation:</strong> {{ $json.regulatory_update.title }}</p>\n      <p><strong>Jurisdiction:</strong> {{ $json.regulatory_update.jurisdiction }}</p>\n      <p><strong>Contracts Affected:</strong> {{ $json.impact_assessment.contract_count }}</p>\n      <p><strong>Risk Level:</strong> {{ $json.risk_color }} {{ $json.risk_level }} ({{ $json.risk_score }}/100)</p>\n    </div>\n    \n    <div class=\"monitoring-plan\">\n      <h3>\ud83d\udccb Recommended Actions</h3>\n      <ul>\n        <li>Schedule contract review meeting within 2 weeks</li>\n        <li>Assess specific impact on affected contracts</li>\n        <li>Determine if contract amendments are needed</li>\n        <li>Update compliance documentation</li>\n        <li>Monitor for additional regulatory guidance</li>\n      </ul>\n    </div>\n    \n    <p>No immediate action required, but please ensure this is added to your compliance review calendar.</p>\n    \n    <p style=\"color: #666; font-size: 14px; margin-top: 30px;\">\n      Next compliance check: {{ new Date(Date.now() + 14*24*60*60*1000).toLocaleDateString() }}\n    </p>\n  </div>\n</body>\n</html>",
        "options": {
          "contentType": "html"
        },
        "subject": "\ud83d\udfe1 Compliance Monitoring Update - {{ $json.regulatory_update.jurisdiction }}"
      },
      "typeVersion": 1
    },
    {
      "id": "15",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1140,
        60
      ],
      "parameters": {
        "width": 240,
        "height": 160,
        "content": "## Legal Compliance\n\n\u2696\ufe0f **Automated responses:**\n- Critical: Emergency legal review\n- High: Priority compliance check\n- Medium: Scheduled review\n- Low: Routine monitoring"
      },
      "typeVersion": 1
    },
    {
      "id": "16",
      "name": "Log Compliance Check",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1040,
        570
      ],
      "parameters": {
        "values": {
          "values": [
            "={{ $json.regulatory_update.title }}",
            "={{ $json.regulatory_update.jurisdiction }}",
            "={{ $json.risk_score }}",
            "={{ $json.risk_level }}",
            "={{ $json.impact_assessment.contract_count }}",
            "={{ $json.recommended_action }}",
            "={{ $json.analyzed_at }}"
          ]
        },
        "resource": "sheet",
        "operation": "appendRow",
        "sheetName": "Compliance Monitoring Log",
        "documentId": "your-google-sheet-id"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Compliance Settings": {
      "main": [
        [
          {
            "node": "Monitor EU Regulations",
            "type": "main",
            "index": 0
          },
          {
            "node": "Monitor US Federal Register",
            "type": "main",
            "index": 0
          },
          {
            "node": "Monitor UK Legislation",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Active Contracts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Active Contracts": {
      "main": [
        [
          {
            "node": "Analyze Compliance Impact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Compliance Check": {
      "main": [
        [
          {
            "node": "Compliance Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monitor EU Regulations": {
      "main": [
        [
          {
            "node": "Analyze Compliance Impact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monitor UK Legislation": {
      "main": [
        [
          {
            "node": "Analyze Compliance Impact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter High Risk Issues": {
      "main": [
        [
          {
            "node": "Send High Risk Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Compliance Impact": {
      "main": [
        [
          {
            "node": "Filter Critical Compliance Issues",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter High Risk Issues",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter Medium Risk Issues",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log Compliance Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Medium Risk Issues": {
      "main": [
        [
          {
            "node": "Send Medium Risk Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Monitor US Federal Register": {
      "main": [
        [
          {
            "node": "Analyze Compliance Impact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Critical Compliance Issues": {
      "main": [
        [
          {
            "node": "Send Critical Legal Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

Regulatory monitoring: Continuously tracks changes in laws, regulations, and compliance requirements across multiple jurisdictions Contract analysis: AI-powered review of existing contracts to identify compliance gaps and risks Automated alerts: Real-time notifications when…

Source: https://n8n.io/workflows/6075/ — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

This workflow monitors customer health by combining payment behavior, complaint signals, and AI-driven feedback analysis. It runs on daily and weekly schedules to evaluate risk levels, escalate high-r

Google Sheets, HTTP Request, Gmail +2
Data & Sheets

Continuous monitoring: Real-time surveillance of supplier performance, financial health, and operational status Risk scoring: AI-powered assessment of supplier risks across multiple dimensions (financ

Postgres, HTTP Request, Gmail +1
Data & Sheets

This workflow is designed for Customer Success Managers, Growth Teams, and SaaS Business Owners who want to proactively reduce churn using AI. It automates the analysis of customer health and the deli

HTTP Request, Postgres, OpenAI +2
Data & Sheets

Code Postgres. Uses httpRequest, splitInBatches, postgres, hubspot. Scheduled trigger; 23 nodes.

HTTP Request, Postgres, HubSpot +1
Data & Sheets

This workflow automatically monitors and reports data quality for any SQL table using configurable checks and thresholds. It evaluates key metrics—including null values, duplicate records, row count a

Postgres, Google Sheets, Gmail