AutomationFlowsSocial Media › Automate Instagram Influencer Contract Compliance with Claude AI & Slack Alerts

Automate Instagram Influencer Contract Compliance with Claude AI & Slack Alerts

ByOneclick AI Squad @oneclick-ai on n8n.io

This enterprise-grade n8n workflow automates influencer contract compliance for Instagram campaigns — from deadline tracking to breach detection — using Claude AI, Instagram API, and smart reminders. It ensures timely deliverables by monitoring posts, sending proactive alerts,…

Cron / scheduled trigger★★★★☆ complexity26 nodesGoogle SheetsSlackHTTP Request
Social Media Trigger: Cron / scheduled Nodes: 26 Complexity: ★★★★☆ Added:

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

This workflow follows the Google Sheets → HTTP Request 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
{
  "id": "xl4Z2irVR0uBoHoJ",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Influencer Deliverable & Contract Compliance Automation For Instagram",
  "tags": [],
  "nodes": [
    {
      "id": "03e0f79e-fd01-474c-8135-4bf0f0faeb1d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.cron",
      "position": [
        -624,
        -176
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "33aa1cec-3a0b-418a-b0ed-9af18722ef10",
      "name": "Get Contracts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -400,
        -176
      ],
      "parameters": {
        "options": {},
        "sheetId": "your-contracts-sheet-id!A:H"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5516f33e-16a1-4beb-bf07-f573ba8ccd08",
      "name": "Loop Over Contracts",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -176,
        -176
      ],
      "parameters": {
        "options": {},
        "batchSize": 1
      },
      "typeVersion": 1
    },
    {
      "id": "af25ad56-9311-49e8-842c-204b328d0ced",
      "name": "Calculate Deadline Status",
      "type": "n8n-nodes-base.code",
      "position": [
        48,
        -176
      ],
      "parameters": {
        "jsCode": "const deadline = new Date($json['deadline']);\nconst now = new Date();\nconst daysToDeadline = Math.ceil((deadline - now) / (1000 * 60 * 60 * 24));\n\nreturn {\n  json: {\n    ...$json,\n    daysToDeadline,\n    isApproaching: daysToDeadline > 0 && daysToDeadline <= 3,\n    isPassed: daysToDeadline <= 0\n  }\n};"
      },
      "typeVersion": 1
    },
    {
      "id": "6cb537be-9f88-4ef3-a6a7-d730ab782227",
      "name": "IF Approaching Deadline",
      "type": "n8n-nodes-base.if",
      "position": [
        272,
        -272
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json[\"isApproaching\"] }}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb583c49-8842-49c1-92ac-45511abeb67b",
      "name": "Send Reminder (Slack)",
      "type": "n8n-nodes-base.slack",
      "position": [
        496,
        -272
      ],
      "parameters": {
        "text": "=Reminder: Influencer {{ $json[\"influencerName\"] }} - Post due in {{ $json[\"daysToDeadline\"] }} days for campaign {{ $json[\"campaignId\"] }}. Required hashtag: {{ $json[\"requiredHashtag\"] }}",
        "channel": "your-slack-channel",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2b15e005-aee0-4b23-a078-cb0f07004b1d",
      "name": "IF Deadline Passed",
      "type": "n8n-nodes-base.if",
      "position": [
        288,
        112
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ $json[\"isPassed\"] }}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a08ad880-39e2-46e4-9428-56f019e43072",
      "name": "Get Influencer Posts",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        544,
        96
      ],
      "parameters": {
        "url": "=https://graph.facebook.com/v12.0/{{ $json[\"influencerUserId\"] }}/media?access_token=YOUR_INSTAGRAM_ACCESS_TOKEN",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "07a09646-85c3-4b67-a69b-8386e13589d2",
      "name": "Check Post Compliance (Claude AI)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        784,
        96
      ],
      "parameters": {
        "url": "https://api.anthropic.com/v1/messages",
        "options": {},
        "requestMethod": "POST",
        "jsonParameters": true,
        "bodyParametersJson": "={\"model\": \"claude-3-5-sonnet-20241022\", \"max_tokens\": 1024, \"messages\": [{\"role\": \"user\", \"content\": \"Check if any of these recent Instagram posts contain the required hashtag '{{ $json[\"requiredHashtag\"] }}' and match the campaign description '{{ $json[\"campaignDescription\"] }}'. Posts: {{ JSON.stringify($json[\"data\"]) }}. Output: is_compliant: yes/no\"}]}"
      },
      "typeVersion": 1
    },
    {
      "id": "dcbc21bb-95b1-4041-9bde-50fb12edc097",
      "name": "IF Breach Detected",
      "type": "n8n-nodes-base.if",
      "position": [
        992,
        96
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json[\"content\"][0][\"text\"].toLowerCase().split(':')[1].trim() }}",
              "value2": "no"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cf595681-b060-4f83-9733-b8e7fb3966b1",
      "name": "Notify Breach (Slack)",
      "type": "n8n-nodes-base.slack",
      "position": [
        1200,
        -144
      ],
      "parameters": {
        "text": "=Contract Breach Alert! Influencer {{ $json[\"influencerName\"] }} failed to post for campaign {{ $json[\"campaignId\"] }} by deadline {{ $json[\"deadline\"] }}.",
        "channel": "manager-slack-channel",
        "attachments": [],
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0f2431e2-d59e-4051-ac2c-29c6708cc529",
      "name": "Log Breach",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1200,
        48
      ],
      "parameters": {
        "options": {},
        "sheetId": "your-logs-sheet-id!A:F",
        "operation": "append"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "17dc2dd5-0e30-47e6-98a3-2ab651b9486e",
      "name": "End (Compliant Path)",
      "type": "n8n-nodes-base.set",
      "position": [
        1200,
        288
      ],
      "parameters": {
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "id": "99da3762-46c3-4f66-b95d-84b818e71011",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        -368
      ],
      "parameters": {
        "color": 3,
        "width": 176,
        "height": 480,
        "content": "Runs daily at 9 AM or via webhook (/influencer-compliance)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "11643a92-6d5d-4899-aef5-a6fc4787eeb9",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -224,
        -368
      ],
      "parameters": {
        "color": 5,
        "width": 176,
        "height": 336,
        "content": "Processes each contract individually\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a37ac9a7-71b4-4c4a-b835-cb730aef9074",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -64
      ],
      "parameters": {
        "color": 4,
        "width": 176,
        "height": 336,
        "content": "Fetches recent posts from influencer\u2019s Instagram\n"
      },
      "typeVersion": 1
    },
    {
      "id": "afd669d8-0961-4204-bc74-f04f27d6b25a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -64
      ],
      "parameters": {
        "width": 176,
        "height": 336,
        "content": "Branches if deadline has passed\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5d3990be-46b6-49f7-89e8-98a7d5a974a2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        -448
      ],
      "parameters": {
        "color": 3,
        "width": 176,
        "height": 336,
        "content": "Notifies influencer/team of upcoming deadline\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a6f8c630-09e3-41ee-93d1-98d2a9463a69",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        -448
      ],
      "parameters": {
        "color": 6,
        "width": 176,
        "height": 336,
        "content": "Branches if within 3 days\n"
      },
      "typeVersion": 1
    },
    {
      "id": "656ce4fc-f52d-477d-83f4-b40f2969bb7a",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        -368
      ],
      "parameters": {
        "color": 4,
        "width": 176,
        "height": 336,
        "content": "Computes days to deadline, flags approaching/passed\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c1844ae1-a433-47af-8d61-b979bd283676",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        -368
      ],
      "parameters": {
        "width": 176,
        "height": 336,
        "content": "Loads influencer contracts from Contracts sheet\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a69a2e61-b0c5-4430-9dd8-da77a0003450",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -64
      ],
      "parameters": {
        "color": 2,
        "width": 176,
        "height": 336,
        "content": "Branches if non-compliant\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fada9646-ea1a-41dc-a727-9e2233de03ba",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -64
      ],
      "parameters": {
        "color": 5,
        "width": 176,
        "height": 336,
        "content": "Uses AI to verify if post matches contract requirements\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8327329c-e485-4c3f-a75b-a9c8699e6dd4",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -544
      ],
      "parameters": {
        "color": 3,
        "width": 176,
        "height": 976,
        "content": "Alerts manager of contract breach\nand Records breach details in Logs sheet\n also\tTerminates compliant branches"
      },
      "typeVersion": 1
    },
    {
      "id": "318f9ab4-7200-4975-8e0c-9c401c1c48af",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -624,
        -16
      ],
      "parameters": {
        "path": "f50af7ff-5c16-4985-9f9f-d10b805b11d4",
        "options": {}
      },
      "typeVersion": 2.1
    },
    {
      "id": "ff7449ef-d08d-4a4f-b5f6-b2f83433aaa9",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1200,
        -336
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.4
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "a53b3923-88f0-485d-a994-5eee37e4b1f5",
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Get Contracts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Contracts": {
      "main": [
        [
          {
            "node": "Loop Over Contracts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Contracts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Breach Detected": {
      "main": [
        [
          {
            "node": "Notify Breach (Slack)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Log Breach",
            "type": "main",
            "index": 0
          },
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "End (Compliant Path)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Deadline Passed": {
      "main": [
        [
          {
            "node": "Get Influencer Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Contracts": {
      "main": [
        [
          {
            "node": "Calculate Deadline Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Influencer Posts": {
      "main": [
        [
          {
            "node": "Check Post Compliance (Claude AI)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF Approaching Deadline": {
      "main": [
        [
          {
            "node": "Send Reminder (Slack)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Deadline Status": {
      "main": [
        [
          {
            "node": "IF Approaching Deadline",
            "type": "main",
            "index": 0
          },
          {
            "node": "IF Deadline Passed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Post Compliance (Claude AI)": {
      "main": [
        [
          {
            "node": "IF Breach Detected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

This enterprise-grade n8n workflow automates influencer contract compliance for Instagram campaigns — from deadline tracking to breach detection — using Claude AI, Instagram API, and smart reminders. It ensures timely deliverables by monitoring posts, sending proactive alerts,…

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

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

This enterprise-grade n8n workflow automates the Instagram complaint handling process — from detection to resolution — using Claude AI, dynamic ticket assignment, and SLA enforcement. It converts cust

HTTP Request, Google Sheets, Slack
Social Media

Youtube Videos Checker. Uses httpRequest, googleSheets, slack. Scheduled trigger; 18 nodes.

HTTP Request, Google Sheets, Slack
Social Media

Turn your best 5-star reviews into a daily stream of branded social proof content -- fully automated. This workflow pulls the oldest unposted 5-star review from Google Sheets, generates a custom quote

Google Sheets, HTTP Request, N8N Nodes Uploadtourl +1
Social Media

This workflow automatically mirrors your YouTube to TikTok and Instagram, so you don’t have to manually download and re-upload your content across platforms.

@Blotato/N8N Nodes Blotato, Execute Command, HTTP Request +2
Social Media

How it works

Google Sheets, Google Drive, HTTP Request +1