This workflow corresponds to n8n.io template #17214 — we link there as the canonical source.
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": "OSuite enterprise action governance for marketplace operations",
"tags": [
{
"name": "osuite"
},
{
"name": "agent-governance"
},
{
"name": "marketplace-operations"
},
{
"name": "enterprise-workflow"
}
],
"nodes": [
{
"id": "c40a681b-a5a1-4c75-b291-1a9063fa42a2",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1888,
-240
],
"parameters": {
"width": 480,
"height": 784,
"content": "## OSuite enterprise action governance for marketplace operations\n\n### How it works\n\nThis workflow governs an enterprise marketplace operations support action through OSuite approval controls. It starts from a manual intake, validates the request locally, runs OSuite exposure and planned-work checks, and then branches based on whether the action is blocked or approved. Approved actions generate a safe internal recommendation and record the final outcome, while failed, blocked, or pending actions stop with structured status information.\n\n### Setup steps\n\n- Configure the OSuite credentials used by all OSuite nodes.\n- Review the initial Set node values for case_id, action_title, requester, and business_goal so they match the intended support action.\n- Verify the local preflight code enforces the required intake rules for your organization.\n- Confirm the OSuite approval, blocking, replay URL, and final outcome fields match your OSuite tenant schema.\n\n### Customization\n\nCustomize the intake fields, preflight validation rules, approval packet contents, and final recommendation text to match the marketplace operation being governed."
},
"typeVersion": 1
},
{
"id": "89b04689-bfee-44b0-85e7-41e5ef5de55e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1328,
-80
],
"parameters": {
"color": 7,
"width": 496,
"height": 320,
"content": "## Start action intake\n\nStarts the workflow manually and creates the initial enterprise support action payload with the case, requester, title, and business goal."
},
"typeVersion": 1
},
{
"id": "3d7fc384-9dab-46ff-8ba8-f4f72d35fe08",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
-48
],
"parameters": {
"color": 7,
"width": 816,
"height": 512,
"content": "## Validate intake request\n\nRuns a local preflight check, decides whether the request is usable, and stops with intake-fix guidance if required fields or validation checks fail."
},
"typeVersion": 1
},
{
"id": "17abc47f-b88f-4b3e-8cce-5d605ab455af",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-240
],
"parameters": {
"color": 7,
"width": 496,
"height": 480,
"content": "## Review OSuite exposure\n\nSends usable requests through OSuite runtime exposure and planned-work review checks before an operator approval packet is assembled."
},
"typeVersion": 1
},
{
"id": "114633ad-261a-46b9-b3b2-a9939ef6d727",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
-208
],
"parameters": {
"color": 7,
"width": 832,
"height": 544,
"content": "## Gate blocked actions\n\nBuilds the approval packet, checks whether OSuite has blocked the proposed action, stops blocked actions with a reason, or continues to check approval status."
},
"typeVersion": 1
},
{
"id": "23d19ad2-a0ef-494e-8fff-627b96cb434d",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1536,
-80
],
"parameters": {
"color": 7,
"width": 512,
"height": 576,
"content": "## Handle approval outcome\n\nEvaluates whether OSuite approval has been granted, either producing a safe internal recommendation draft or stopping while the action waits for approval."
},
"typeVersion": 1
},
{
"id": "afb8e2d1-a142-4995-a313-6726ed8ff2f1",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2160,
-128
],
"parameters": {
"color": 7,
"width": 240,
"height": 368,
"content": "## Record final outcome\n\nRecords the completed approved recommendation outcome back into OSuite for governance and audit tracking."
},
"typeVersion": 1
},
{
"id": "manual-trigger",
"name": "Start Manual Process",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1280,
80
],
"parameters": {},
"typeVersion": 1
},
{
"id": "prepare-enterprise-action",
"name": "Set Enterprise Action Data",
"type": "n8n-nodes-base.set",
"position": [
-980,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "case-id",
"name": "case_id",
"type": "string",
"value": "DEMO-CASE-1042"
},
{
"id": "action-title",
"name": "action_title",
"type": "string",
"value": "High-value refund recommendation"
},
{
"id": "requester",
"name": "requester",
"type": "string",
"value": "marketplace-support-ops"
},
{
"id": "business-goal",
"name": "business_goal",
"type": "string",
"value": "Review a high-value refund request and prepare an internal recommendation before customer-facing or ledger action."
},
{
"id": "proposed-action",
"name": "proposed_action",
"type": "string",
"value": "Read synthetic support/order context, draft a refund-risk recommendation, and prepare an internal Slack approval summary."
},
{
"id": "action-kind",
"name": "action_kind",
"type": "string",
"value": "data_access"
},
{
"id": "systems-touched",
"name": "systems_touched",
"type": "string",
"value": "support workspace, order context, Slack"
},
{
"id": "data-classification",
"name": "data_classification",
"type": "string",
"value": "customer support context, order metadata, refund-risk notes"
},
{
"id": "destination-boundary",
"name": "destination_boundary",
"type": "string",
"value": "internal Slack approval channel"
},
{
"id": "expected-side-effects",
"name": "expected_side_effects",
"type": "string",
"value": "draft internal recommendation only; no refund issued"
},
{
"id": "customer-impact",
"name": "customer_impact",
"type": "string",
"value": "may influence refund handling for a high-value support case"
},
{
"id": "policy-posture",
"name": "policy_posture",
"type": "string",
"value": "strict"
},
{
"id": "approval-channel",
"name": "approval_channel",
"type": "string",
"value": "support-risk-approvals"
},
{
"id": "risk-level",
"name": "risk_level",
"type": "number",
"value": 72
},
{
"id": "reversible",
"name": "reversible",
"type": "boolean",
"value": false
},
{
"id": "decision-context",
"name": "decision_context",
"type": "string",
"value": "Synthetic demo action. OSuite should bind approval to this exact action before any external message, refund update, or production side effect occurs."
},
{
"id": "demo-data-only",
"name": "demo_data_only",
"type": "boolean",
"value": true
}
]
}
},
"typeVersion": 3.4
},
{
"id": "local-enterprise-preflight",
"name": "Execute Preflight Checks",
"type": "n8n-nodes-base.code",
"position": [
-660,
80
],
"parameters": {
"jsCode": "const input = $input.first().json;\nconst s = (value) => String(value ?? '').trim();\nconst lower = (value) => s(value).toLowerCase();\n\nconst title = s(input.action_title);\nconst goal = s(input.business_goal);\nconst action = s(input.proposed_action);\nconst systems = s(input.systems_touched);\nconst dataClass = s(input.data_classification) || 'unspecified';\nconst destination = s(input.destination_boundary) || 'unspecified';\nconst sideEffects = s(input.expected_side_effects) || 'unspecified';\nconst impact = s(input.customer_impact) || 'unspecified';\nconst posture = lower(input.policy_posture) || 'standard';\nconst reversibleText = lower(input.reversible) || 'unknown';\nlet risk = Number(input.risk_level ?? 0);\nif (!Number.isFinite(risk)) risk = 0;\nrisk = Math.max(0, Math.min(100, Math.round(risk)));\n\nconst combined = [action, systems, dataClass, destination, sideEffects, impact].join(' ').toLowerCase();\nconst writeWords = ['send', 'publish', 'update', 'refund', 'delete', 'export', 'sync', 'write', 'notify', 'post', 'create'];\nconst dataWords = ['customer', 'personal', 'pii', 'account', 'payment', 'support', 'ticket', 'order', 'email'];\nconst externalWords = ['external', 'public', 'customer', 'vendor', 'partner', 'slack', 'email', 'webhook', 'api'];\n\nconst hasSideEffect = writeWords.some((word) => combined.includes(word)) || sideEffects !== 'unspecified';\nconst touchesSensitiveData = dataWords.some((word) => combined.includes(word));\nconst crossesBoundary = externalWords.some((word) => destination.toLowerCase().includes(word));\nconst reversible = ['true', 'yes', 'y', '1'].includes(reversibleText);\n\nconst blockers = [];\nconst warnings = [];\nif (!title) blockers.push('missing action title');\nif (!goal) blockers.push('missing business goal');\nif (!action) blockers.push('missing proposed action');\nif (!systems) blockers.push('missing systems touched');\nif (dataClass === 'unspecified') warnings.push('data classification was not provided');\nif (destination === 'unspecified') warnings.push('destination/boundary was not provided');\n\nlet exposureLevel = 'low';\nif (risk >= 70 || (touchesSensitiveData && hasSideEffect && !reversible)) exposureLevel = 'high';\nelse if (risk >= 40 || touchesSensitiveData || hasSideEffect || crossesBoundary) exposureLevel = 'medium';\n\nlet recommendedControl = 'log_only';\nif (blockers.length) recommendedControl = 'fix_intake';\nelse if (exposureLevel === 'high' || ['strict', 'regulated', 'approval-first'].includes(posture)) recommendedControl = 'require_approval';\nelse if (exposureLevel === 'medium') recommendedControl = 'review_or_approve';\n\nconst blastRadius = [];\nif (touchesSensitiveData) blastRadius.push('customer/support data');\nif (hasSideEffect) blastRadius.push('operational side effects');\nif (crossesBoundary) blastRadius.push('external or cross-system boundary');\nif (!blastRadius.length) blastRadius.push('read-only or internal analysis');\n\nconst usable = blockers.length === 0;\nconst preflightEnvelope = {\n requester: s(input.requester) || 'unspecified',\n policy_posture: posture,\n approval_channel: s(input.approval_channel) || 'unspecified',\n data_classification: dataClass,\n destination_boundary: destination,\n expected_side_effects: sideEffects,\n customer_impact: impact,\n normalized_risk: risk,\n reversible,\n touches_sensitive_data: touchesSensitiveData,\n has_side_effect: hasSideEffect,\n crosses_boundary: crossesBoundary,\n exposure_level: exposureLevel,\n recommended_control: recommendedControl,\n blast_radius: blastRadius,\n warnings,\n blockers,\n};\nconst preflightSummary = `usable=${usable}; normalized_risk=${risk}; exposure_level=${exposureLevel}; recommended_control=${recommendedControl}; data_classification=${dataClass}; destination_boundary=${destination}; side_effects=${sideEffects}; blast_radius=${blastRadius.join(', ')}; warnings=${warnings.join('; ') || 'none'}; blockers=${blockers.join('; ') || 'none'}`;\n\nreturn [{\n json: {\n ...input,\n usable,\n normalized_risk: risk,\n exposure_level: exposureLevel,\n recommended_control: recommendedControl,\n blast_radius: blastRadius.join(', '),\n warnings: warnings.join('; ') || 'none',\n blockers: blockers.join('; ') || 'none',\n preflight_summary: preflightSummary,\n preflight_envelope: preflightEnvelope,\n preflight_envelope_json: JSON.stringify(preflightEnvelope, null, 2),\n },\n}];"
},
"typeVersion": 2
},
{
"id": "request-usable-gate",
"name": "If Request Is Usable",
"type": "n8n-nodes-base.if",
"position": [
-360,
80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "request-usable-gate-condition",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.usable }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "stop-fix-intake",
"name": "Prepare Fix Intake Data",
"type": "n8n-nodes-base.set",
"position": [
-40,
300
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "fix-status",
"name": "status",
"type": "string",
"value": "needs_intake_fix"
},
{
"id": "fix-blockers",
"name": "blockers",
"type": "string",
"value": "={{ $('Execute Preflight Checks').item.json.blockers }}"
},
{
"id": "fix-warnings",
"name": "warnings",
"type": "string",
"value": "={{ $('Execute Preflight Checks').item.json.warnings }}"
},
{
"id": "fix-message",
"name": "message",
"type": "string",
"value": "Add action title, business goal, proposed action, systems touched, data classification, destination/boundary, expected side effects, and reversibility before OSuite review."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "runtime-exposure-snapshot",
"name": "Capture Runtime Exposure Snapshot",
"type": "n8n-nodes-osuite.osuite",
"position": [
192,
-80
],
"parameters": {
"operation": "summarizeRuntimeExposure"
},
"typeVersion": 1
},
{
"id": "osuite-review-planned-work",
"name": "Analyze Planned Work",
"type": "n8n-nodes-osuite.osuite",
"position": [
480,
80
],
"parameters": {
"goal": "={{ $('Set Enterprise Action Data').item.json.business_goal }}",
"advanced": {
"nodeId": "osuite-review-planned-work",
"agentId": "n8n-marketplace-support-guardrail",
"agentName": "n8n marketplace support guardrail",
"workflowId": "osuite-enterprise-action-governance-template"
},
"operation": "reviewPlannedWork",
"riskLevel": "={{ $('Execute Preflight Checks').item.json.normalized_risk }}",
"actionKind": "={{ $('Set Enterprise Action Data').item.json.action_kind }}",
"reversible": "={{ $('Set Enterprise Action Data').item.json.reversible }}",
"toolInputJson": "={{ JSON.stringify({ scenario: 'enterprise_marketplace_support_action_governance', case_id: $('Set Enterprise Action Data').item.json.case_id, action_title: $('Set Enterprise Action Data').item.json.action_title, requester: $('Set Enterprise Action Data').item.json.requester, business_goal: $('Set Enterprise Action Data').item.json.business_goal, proposed_action: $('Set Enterprise Action Data').item.json.proposed_action, action_kind: $('Set Enterprise Action Data').item.json.action_kind, systems_touched: $('Set Enterprise Action Data').item.json.systems_touched, data_classification: $('Set Enterprise Action Data').item.json.data_classification, destination_boundary: $('Set Enterprise Action Data').item.json.destination_boundary, expected_side_effects: $('Set Enterprise Action Data').item.json.expected_side_effects, customer_impact: $('Set Enterprise Action Data').item.json.customer_impact, policy_posture: $('Set Enterprise Action Data').item.json.policy_posture, approval_channel: $('Set Enterprise Action Data').item.json.approval_channel, local_preflight: $('Execute Preflight Checks').item.json.preflight_envelope, runtime_exposure: $('Capture Runtime Exposure Snapshot').item.json, demo_data_only: true }, null, 2) }}",
"proposedAction": "={{ $('Set Enterprise Action Data').item.json.proposed_action }}",
"systemsTouched": "={{ $('Set Enterprise Action Data').item.json.systems_touched }}",
"decisionContext": "={{ $('Execute Preflight Checks').item.json.preflight_summary + '\\n\\nOperator context: ' + $('Set Enterprise Action Data').item.json.decision_context }}"
},
"typeVersion": 1
},
{
"id": "build-approval-packet",
"name": "Build Approval Packet",
"type": "n8n-nodes-base.set",
"position": [
720,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "packet-status",
"name": "status",
"type": "string",
"value": "reviewed_by_osuite"
},
{
"id": "packet-action-id",
"name": "action_id",
"type": "string",
"value": "={{ $('Analyze Planned Work').item.json.action_id }}"
},
{
"id": "packet-blocked",
"name": "blocked",
"type": "boolean",
"value": "={{ $('Analyze Planned Work').item.json.blocked }}"
},
{
"id": "packet-approval-required",
"name": "approval_required",
"type": "boolean",
"value": "={{ $('Analyze Planned Work').item.json.approval_required }}"
},
{
"id": "packet-replay-url",
"name": "replay_url",
"type": "string",
"value": "={{ $('Analyze Planned Work').item.json.replay_url }}"
},
{
"id": "packet-risk-score",
"name": "risk_score",
"type": "string",
"value": "={{ $('Analyze Planned Work').item.json.risk_score }}"
},
{
"id": "packet-policy-reason",
"name": "policy_reason",
"type": "string",
"value": "={{ $('Analyze Planned Work').item.json.policy_reason }}"
},
{
"id": "packet-summary",
"name": "approval_packet",
"type": "string",
"value": "={{ 'Preflight: ' + $('Execute Preflight Checks').item.json.preflight_summary + '\\nOSuite action: ' + $('Analyze Planned Work').item.json.action_id + '\\nReplay: ' + $('Analyze Planned Work').item.json.replay_url + '\\nOperator checklist: confirm goal, destination, side effects, and approve this exact action only.' }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "blocked-gate",
"name": "Check OSuite Block Status",
"type": "n8n-nodes-base.if",
"position": [
1040,
80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "blocked-gate-condition",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.blocked }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "stop-blocked",
"name": "Log OSuite Block Details",
"type": "n8n-nodes-base.set",
"position": [
1360,
-80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "blocked-status",
"name": "status",
"type": "string",
"value": "blocked_by_osuite"
},
{
"id": "blocked-action-id",
"name": "action_id",
"type": "string",
"value": "={{ $('Build Approval Packet').item.json.action_id }}"
},
{
"id": "blocked-packet",
"name": "approval_packet",
"type": "string",
"value": "={{ $('Build Approval Packet').item.json.approval_packet }}"
},
{
"id": "blocked-reason",
"name": "reason",
"type": "string",
"value": "OSuite blocked this planned enterprise action before execution."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "osuite-check-if-approved",
"name": "Verify OSuite Approval",
"type": "n8n-nodes-osuite.osuite",
"position": [
1360,
160
],
"parameters": {
"actionId": "={{ $('Build Approval Packet').item.json.action_id }}",
"operation": "checkIfApproved"
},
"typeVersion": 1
},
{
"id": "approved-gate",
"name": "Check OSuite Approval Status",
"type": "n8n-nodes-base.if",
"position": [
1584,
160
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "approved-gate-condition",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.approved }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "stop-waiting",
"name": "Log Approval Wait Details",
"type": "n8n-nodes-base.set",
"position": [
1904,
336
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "waiting-status",
"name": "status",
"type": "string",
"value": "waiting_for_osuite_approval"
},
{
"id": "waiting-action-id",
"name": "action_id",
"type": "string",
"value": "={{ $('Build Approval Packet').item.json.action_id }}"
},
{
"id": "waiting-replay-url",
"name": "replay_url",
"type": "string",
"value": "={{ $('Build Approval Packet').item.json.replay_url }}"
},
{
"id": "waiting-packet",
"name": "approval_packet",
"type": "string",
"value": "={{ $('Build Approval Packet').item.json.approval_packet }}"
},
{
"id": "waiting-message",
"name": "message",
"type": "string",
"value": "Approve this exact action in OSuite Studio, then run Check If Approved again."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "safe-internal-recommendation",
"name": "Draft Internal Recommendation",
"type": "n8n-nodes-base.set",
"position": [
1904,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "action-performed",
"name": "action_performed",
"type": "string",
"value": "Prepared internal refund-risk recommendation"
},
{
"id": "recommendation",
"name": "recommendation",
"type": "string",
"value": "={{ 'Recommend manual review before any refund. Evidence boundary: synthetic support/order context only. Customer-facing message: not generated. Refund action: not executed. Approval action ID: ' + $('Build Approval Packet').item.json.action_id }}"
},
{
"id": "destination",
"name": "destination",
"type": "string",
"value": "demo-internal-approval-channel"
},
{
"id": "records-processed",
"name": "records_processed",
"type": "number",
"value": 1
},
{
"id": "status",
"name": "status",
"type": "string",
"value": "completed"
},
{
"id": "external-side-effects",
"name": "external_side_effects",
"type": "string",
"value": "none in template; internal draft only"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "osuite-record-final-outcome",
"name": "Record Final Outcome in OSuite",
"type": "n8n-nodes-osuite.osuite",
"position": [
2200,
80
],
"parameters": {
"outcome": "completed",
"summary": "={{ 'n8n generated a safe internal recommendation after OSuite approval was verified. Preflight: ' + $('Execute Preflight Checks').item.json.preflight_summary + '\\nApproval packet: ' + $('Build Approval Packet').item.json.approval_packet + '\\nRecommendation: ' + $('Draft Internal Recommendation').item.json.recommendation }}",
"actionId": "={{ $('Build Approval Packet').item.json.action_id }}",
"operation": "recordFinalOutcome",
"sideEffects": "internal recommendation drafted only; no external side effects; no production mutations",
"artifactsCreated": "n8n execution record, OSuite replay record, operator approval packet"
},
"typeVersion": 1
}
],
"settings": {
"executionOrder": "v1"
},
"versionId": "osuite-enterprise-action-governance-v2-annotated",
"connections": {
"Analyze Planned Work": {
"main": [
[
{
"node": "Build Approval Packet",
"type": "main",
"index": 0
}
]
]
},
"If Request Is Usable": {
"main": [
[
{
"node": "Capture Runtime Exposure Snapshot",
"type": "main",
"index": 0
}
],
[
{
"node": "Prepare Fix Intake Data",
"type": "main",
"index": 0
}
]
]
},
"Start Manual Process": {
"main": [
[
{
"node": "Set Enterprise Action Data",
"type": "main",
"index": 0
}
]
]
},
"Build Approval Packet": {
"main": [
[
{
"node": "Check OSuite Block Status",
"type": "main",
"index": 0
}
]
]
},
"Verify OSuite Approval": {
"main": [
[
{
"node": "Check OSuite Approval Status",
"type": "main",
"index": 0
}
]
]
},
"Execute Preflight Checks": {
"main": [
[
{
"node": "If Request Is Usable",
"type": "main",
"index": 0
}
]
]
},
"Check OSuite Block Status": {
"main": [
[
{
"node": "Log OSuite Block Details",
"type": "main",
"index": 0
}
],
[
{
"node": "Verify OSuite Approval",
"type": "main",
"index": 0
}
]
]
},
"Set Enterprise Action Data": {
"main": [
[
{
"node": "Execute Preflight Checks",
"type": "main",
"index": 0
}
]
]
},
"Check OSuite Approval Status": {
"main": [
[
{
"node": "Draft Internal Recommendation",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Approval Wait Details",
"type": "main",
"index": 0
}
]
]
},
"Draft Internal Recommendation": {
"main": [
[
{
"node": "Record Final Outcome in OSuite",
"type": "main",
"index": 0
}
]
]
},
"Capture Runtime Exposure Snapshot": {
"main": [
[
{
"node": "Analyze Planned Work",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs on demand to preflight a high-value marketplace support action and send it to OSuite for governance review, then blocks, waits for approval, or proceeds to draft a safe internal refund-risk recommendation and records the final outcome in OSuite. Starts…
Source: https://n8n.io/workflows/17214/ — 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.
Reagendamiento. Uses executeWorkflowTrigger, redis, n8n-nodes-evolution-api, dataTable. Event-driven trigger; 73 nodes.
Blotato. Uses googleSheets, @blotato/n8n-nodes-blotato. Event-driven trigger; 65 nodes.
This template is a hands-on, practical exam designed to help you master n8n Expressions—the key to accessing and manipulating data in your workflows.
This template is a hands-on, practical exam designed to test your understanding of the fundamental JSON data types. It's the perfect way to solidify your knowledge after learning the basics.
Agendamiento. Uses n8n-nodes-evolution-api, redis, dataTable, executeWorkflowTrigger. Event-driven trigger; 60 nodes.