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 →
{
"name": "Marketing Copy Brand-Safety Approval with Verifiable Decision Receipts",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "copy-approval",
"options": {},
"responseMode": "responseNode"
},
"id": "9d7e4267-7f60-4746-b828-6dedee7bd2b8",
"name": "Marketing Copy Brand-Safety Approval",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
0,
300
]
},
{
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"messages": {
"values": [
{
"role": "system",
"content": "=You are a brand-safety / compliance AI for marketing copy. Return JSON: {\"decision\":\"APPROVE|REVISE|REJECT\",\"issues\":[\"...\"],\"reason\":\"...\"}."
},
{
"content": "=Return JSON only.\n\nInput:\n{{ JSON.stringify($json.body) }}"
}
]
},
"jsonOutput": true,
"options": {}
},
"id": "27b58e2f-c6f7-48ff-8133-2715316ae8aa",
"name": "AI Decision",
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 2.1,
"position": [
220,
300
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "generateReceipt",
"agentName": "BrandSafetyAgent",
"workflowName": "={{ $workflow.name }}",
"action": "={{ 'AI decision: ' + ($json.message.content.decision || $json.message.content.recommendation || 'completed') }}",
"decision": "={{ JSON.stringify($json.message.content) }}",
"additionalFields": {
"modelProvider": "openai",
"modelUsed": "gpt-4o",
"decisionType": "copy_approval",
"riskLevel": "medium",
"humanReview": false,
"policies": "brand-guidelines-v3, ad-standards",
"permissions": "copy.approve",
"tags": "marketing, brand-safety, compliance"
}
},
"id": "7e5b21ac-8343-48a6-9d25-2eb9e7fe535a",
"name": "Signatrust: Receipt",
"type": "n8n-nodes-signatrust.signatrust",
"typeVersion": 1,
"position": [
440,
300
],
"credentials": {
"signatrustApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ { status:\"OK\", receipt_id:$json.id, decision:$('AI Decision').item.json.message.content } }}",
"options": {}
},
"id": "bbe0334e-cd62-4df8-8111-b7309570dc52",
"name": "Respond",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
660,
300
]
},
{
"parameters": {
"content": "## Marketing Copy Brand-Safety Approval with Verifiable Decision Receipts\n**Why Signatrust?** Every AI decision here becomes a tamper-evident, Ed25519-signed receipt \u2014 verifiable for audits and disputes.",
"height": 170,
"width": 420,
"color": 5
},
"id": "5fab71f3-ef62-43a6-b5c5-1e385979e457",
"name": "Sticky Note d998dc",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-40,
40
]
}
],
"connections": {
"Marketing Copy Brand-Safety Approval": {
"main": [
[
{
"node": "AI Decision",
"type": "main",
"index": 0
}
]
]
},
"AI Decision": {
"main": [
[
{
"node": "Signatrust: Receipt",
"type": "main",
"index": 0
}
]
]
},
"Signatrust: Receipt": {
"main": [
[
{
"node": "Respond",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"tags": [
{
"name": "Marketing Copy Brand-Safety Approval \u2014 marketing"
},
{
"name": "Marketing Copy Brand-Safety Approval \u2014 brand-safety"
},
{
"name": "Marketing Copy Brand-Safety Approval \u2014 compliance"
},
{
"name": "Signatrust (21)"
}
],
"meta": {
"templateCredsSetupCompleted": false
},
"versionId": "92958df9-8d2f-4076-9380-393e4fd50f5d"
}
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.
openAiApisignatrustApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Marketing Copy Brand-Safety Approval with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust. Webhook trigger; 5 nodes.
Source: https://github.com/abokenan444/n8n-signatrust-workflows/blob/main/workflows/21-marketing-copy-approval.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
HR Resume Screening with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust, gmail. Webhook trigger; 5 nodes.
Loan Approval with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust. Webhook trigger; 5 nodes.
Insurance Claim Assessment with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust, googleSheets. Webhook trigger; 5 nodes.
Transaction Fraud Screening with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust, slack. Webhook trigger; 5 nodes.
Chargeback Dispute Decision with Verifiable Decision Receipts. Uses openAi, n8n-nodes-signatrust. Webhook trigger; 5 nodes.