Automating Dropshipping with n8n
▲ 12 r/AutomationIncome+6 crossposts

Automating Dropshipping with n8n

I used n8n, Telegram, and Google Sheets to automate publishing products to WooCommerce. No more manual work! It reads the product queue from Sheets and publishes it to WooCommerce via POST request.

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 5 hours ago

I built a multi-agent AI system in n8n where agents delegate tasks to each other — here’s how it works

Most people build one AI agent that tries to do everything.
I went a different route — 7 specialized agents, each with
a single job, all talking to each other inside n8n + Telegram.

The routing works like this: the main agent reads the message
and outputs DELEGATE:AGENT|task. n8n parses that with regex
and triggers the right sub-flow. Each agent has its own system
prompt and memory via Google Sheets.

Agents I have running:
- MAX — general assistant
- LENA — content writing
- SEM — image analysis (vision)
- ALICE — scheduling
- VICTOR — sales scripts
- NOVA — web search via Tavily
- MILO — data extraction

No custom code. Pure n8n nodes.

Happy to share the workflow structure if anyone's interested.

reddit.com
u/Boring-Shop-9424 — 16 hours ago
▲ 9 r/AutomationIncome+5 crossposts

Automated CJ price updates to WooCommerce

I was manually updating prices in WooCommerce and it was a real pain. So I connected CJ Dropshipping API to WooCommerce using n8n and now it's all automated. I used a Schedule Trigger, HTTP Request, and IF node to compare prices and update WooCommerce via API. Now I can focus on other things

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 1 day ago
▲ 8 r/AutomationIncome+6 crossposts

Synced CJ stock to WooCommerce automatically

I used n8n to connect CJ Dropshipping API to WooCommerce and automate stock updates. Now out-of-stock items are deactivated and available ones are updated. Used Schedule Trigger, HTTP Request, IF, and Merge nodes.

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 2 days ago
▲ 4 r/n8n

$json vs $items() in n8n — the difference that actually matters

If you're new to n8n and mixing these up, here's the short version:

$json is the current item's data in the current context. Use it inside a Code node set to "Run Once for Each Item", or inline in expressions like {{ $json.email }}.

$items() is the old-school way to grab an array of items from a specific node. It still works in a lot of workflows you'll find online, but it's legacy syntax. The modern equivalent is $input.all() inside a Code node, or $('Node Name').all() in expressions — both are more explicit about which node's data you're pulling.

Rule of thumb I use: if I'm working with ONE item, $json. If I need ALL items to loop, aggregate, or compare, $input.all(). I basically never reach for $items() anymore, but it's worth recognizing when you see it in older templates.

Curious if anyone still has a real use case for $items() over $input.all() — haven't run into one myself.

reddit.com
u/Boring-Shop-9424 — 2 days ago
▲ 8 r/u_Boring-Shop-9424+7 crossposts

$json vs $items() in n8n — the difference that actually matters

If you're new to n8n and mixing these up, here's the short version:

$json is the current item's data in the current context. Use it inside a Code node set to "Run Once for Each Item", or inline in expressions like {{ $json.email }}.

$items() is the old-school way to grab an array of items from a specific node. It still works in a lot of workflows you'll find online, but it's legacy syntax. The modern equivalent is $input.all() inside a Code node, or $('Node Name').all() in expressions — both are more explicit about which node's data you're pulling.

Rule of thumb I use: if I'm working with ONE item, $json. If I need ALL items to loop, aggregate, or compare, $input.all(). I basically never reach for $items() anymore, but it's worth recognizing when you see it in older templates.

Curious if anyone still has a real use case for $items() over $input.all() — haven't run into one myself.

reddit.com
u/Boring-Shop-9424 — 3 days ago
▲ 9 r/AutomationIncome+5 crossposts

Handling Order Errors with Ease

I created a workflow to catch and classify order errors using n8n, Google Sheets, and Telegram. Now I can focus on other things while it handles auth, timeout, and rate limit errors. CJ Dropshipping and WooCommerce are also integrated.

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 4 days ago
▲ 9 r/u_Boring-Shop-9424+6 crossposts

Small habit that saved me from so many undefined errors in n8n Code nodes

Quick tip for anyone writing Code nodes in n8n: stop accessing nested fields directly.

$json.field.subfield will throw the second `field` doesn't exist on some items in your batch — and with n8n that happens more often than you'd think (APIs returning partial data, webhooks with optional fields, etc).

Just use optional chaining everywhere:

$json.field?.subfield

And if you need a fallback value, stack the nullish coalescing on top:

$json.field?.subfield ?? 'default'

Saved me from a bunch of random workflow failures that only showed up on specific items, not the whole batch — which made them annoying to debug in the first place.

Anyone else have small JS habits like this that cleaned up their Code node errors?

reddit.com
u/Boring-Shop-9424 — 5 days ago
▲ 13 r/agenticAI+5 crossposts

Automated order status updates with n8n

I used n8n to automate order status updates by connecting a webhook to Google Sheets and routing emails with Gmail - saves me a ton of time

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 5 days ago
▲ 4 r/AutomationIncome+2 crossposts

Automated my dropshipping orders

I used n8n to automate my dropshipping orders, connecting WooCommerce to Google Sheets and Telegram. Now I can focus on other things, it's a huge time saver. Used IF and Set nodes to prioritize orders

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 6 days ago
▲ 7 r/AutomationIncome+3 crossposts

My Multi-Agent AI Portfolio

I had to analyze requests manually, so I made a workflow with n8n, Telegram, and Groq agents. Now it's all automated and logged to Google Sheets.

More automations: Join our community: https://go.phonezait.de/

u/Boring-Shop-9424 — 7 days ago

10 n8n tips I wish I knew earlier

After building 25+ workflows, here are the shortcuts that actually save time:

  1. Ctrl+D duplicates a node instantly
  2. Rename every node — you won't remember what "HTTP Request 7" does next week
  3. Add a Set node after your trigger — keep only the fields you need
  4. Use sticky notes to explain complex blocks
  5. Group repeated logic into sub-workflows
  6. Always test with real data, not mock
  7. Save frequently used workflows as templates
  8. Use Environment Variables instead of hardcoding tokens
  9. Pin data on nodes during development — no need to trigger every time
  10. Ctrl+Z works — but not always, save more often

What tips would you add?

reddit.com
u/Boring-Shop-9424 — 7 days ago

Burned by an n8n update once. Now I always do this first.

Lost 3 workflows after a careless update. Nodes broke, configs got wiped, had to rebuild from scratch.

Now my rule before any n8n update:

**1.**	SSH into the server  
**2.**	docker exec -it n8n\_container n8n export:workflow --all --output=/backups/backup\_$(date +%Y%m%d).json  
**3.**	Copy the backup file off the server  
**4.**	Then update

Takes 2 minutes. Saved me multiple times since.

If you’re running n8n on a VPS — don’t skip this. The update looks smooth until it isn’t.

Anyone else got burned before adding this to their routine?

reddit.com
u/Boring-Shop-9424 — 8 days ago
▲ 9 r/AutomationIncome+6 crossposts

Always validate your API response schema — it changes silently and breaks workflows with zero errors

Add this after every HTTP Request node:
console.log(JSON.stringify($json, null, 2));
return $input.all();
Save a sample response in node notes. When the field disappears — you catch it immediately, not after 200 null rows in your spreadsheet.

What’s your approach to API schema drift?

reddit.com
u/Boring-Shop-9424 — 8 days ago
▲ 8 r/AutomationIncome+7 crossposts

Stop letting optional nodes crash your entire n8n workflow

Enable "Continue on Fail" on non-critical nodes.

Notification nodes, logging, data enrichment — these shouldn't kill your workflow when they fail.

Keep it OFF on payments, DB writes, core logic.
Keep it ON for everything optional.

Add an IF node after to check $json.error if you want to handle failures gracefully.

Small setting, big reliability upgrade. What other resilience patterns do you use in n8n?

reddit.com
u/Boring-Shop-9424 — 10 days ago
▲ 3 r/AutomationIncome+1 crossposts

Always check $json for undefined before using it — learned this the hard way

Had a workflow silently die on me last week. Webhook was coming in fine, test mode showed all the data — but in production one field was occasionally missing and the whole thing crashed with "Cannot read property 'toLowerCase' of undefined".

Took me way too long to figure out because n8n doesn't always surface these errors cleanly.

Now I wrap anything critical before using it:

In expressions:
{{$json?.customer?.email || 'fallback@domain.com'}}

In Code nodes:
const email = $json.email ?? null;
if (!email) {
return [{ json: { skipped: true, reason: 'missing_email' } }];
}

Especially important if you're pulling from webhooks where the sender controls the payload — you can't trust every field will be there every time.

Anyone else validating $json fields upfront, or do you handle it with IF nodes downstream? Curious what approach people are using in 2026.

reddit.com
u/Boring-Shop-9424 — 11 days ago