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 →
{
"id": "sanmar-soap-pull-limit-50",
"name": "SanMar PromoStandards Sync (Limit 50)",
"nodes": [
{
"parameters": {},
"id": "trigger",
"name": "When clicking 'Execute workflow'",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
240,
200
]
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 3 * * *"
}
]
}
},
"id": "schedule-trigger",
"name": "Schedule Trigger (3am Daily)",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
240,
400
]
},
{
"parameters": {
"url": "={{ $env.API_BASE_URL }}/api/suppliers",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Ingest-Secret",
"value": "={{ $env.INGEST_SHARED_SECRET }}"
}
]
}
},
"id": "get-suppliers",
"name": "Get Suppliers",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
300
]
},
{
"parameters": {
"jsCode": "const list = $input.all().flatMap((i) => {\n const j = i.json;\n return Array.isArray(j) ? j : (j.data ? j.data : [j]);\n});\nconst sanmar = list.find(s => s && s.slug === 'sanmar');\nif (!sanmar) throw new Error('SanMar supplier not found');\nreturn [{ json: { sid: sanmar.id, name: sanmar.name } }];"
},
"id": "resolve-sid",
"name": "Resolve SanMar SID",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
680,
300
]
},
{
"parameters": {
"method": "POST",
"url": "={{ $env.API_BASE_URL }}/api/sync/{{ $json.sid }}/products",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "limit",
"value": "50"
}
]
},
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Ingest-Secret",
"value": "={{ $env.INGEST_SHARED_SECRET }}"
}
]
}
},
"id": "trigger-sync",
"name": "Trigger Sync",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
900,
300
]
},
{
"parameters": {
"amount": 10,
"unit": "seconds"
},
"id": "wait",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"typeVersion": 1,
"position": [
1120,
300
]
},
{
"parameters": {
"url": "={{ $env.API_BASE_URL }}/api/sync/{{ $('Resolve SanMar SID').item.json.sid }}/status",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Ingest-Secret",
"value": "={{ $env.INGEST_SHARED_SECRET }}"
}
]
}
},
"id": "poll-status",
"name": "Poll Status",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1340,
300
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.status }}",
"value2": "completed"
}
]
}
},
"id": "check-done",
"name": "Is Done?",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
1560,
300
]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.status }}",
"value2": "failed"
}
]
}
},
"id": "check-failed",
"name": "Is Failed?",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
1560,
500
]
}
],
"connections": {
"When clicking 'Execute workflow'": {
"main": [
[
{
"node": "Get Suppliers",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger (3am Daily)": {
"main": [
[
{
"node": "Get Suppliers",
"type": "main",
"index": 0
}
]
]
},
"Get Suppliers": {
"main": [
[
{
"node": "Resolve SanMar SID",
"type": "main",
"index": 0
}
]
]
},
"Resolve SanMar SID": {
"main": [
[
{
"node": "Trigger Sync",
"type": "main",
"index": 0
}
]
]
},
"Trigger Sync": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Poll Status",
"type": "main",
"index": 0
}
]
]
},
"Poll Status": {
"main": [
[
{
"node": "Is Done?",
"type": "main",
"index": 0
}
]
]
},
"Is Done?": {
"main": [
[],
[
{
"node": "Is Failed?",
"type": "main",
"index": 0
}
]
]
},
"Is Failed?": {
"main": [
[],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
SanMar PromoStandards Sync (Limit 50). Uses httpRequest. Event-driven trigger; 9 nodes.
Source: https://github.com/VisualGraphxLLC/API-HUB/blob/1f57dde5ed69310f7fe40957ef8349c25dbcca87/n8n-workflows/sanmar-soap-pull.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.
This workflow listens for an “Approved” label on a Trello card, reads the AI draft bookkeeping JSON from card comments, and posts the corresponding transaction to Xero. It then adds a Xero deep link b
02_LLM_Pipeline v1.0. Uses executeWorkflowTrigger, httpRequest, seaTable. Event-driven trigger; 65 nodes.
This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. A multi-form setup guides you through the entire process At the beginning you have t
[n8n] Advanced URL Parsing and Shortening Workflow - Switchy.io Integration. Uses splitInBatches, stickyNote, httpRequest, html. Event-driven trigger; 56 nodes.
[](https://youtu.be/c7yCZhmMjtI)