Last week, I finally got my first automated LinkedIn post working through n8n. The workflow was basic but exciting: once a Notion card was marked Done, GPT would draft a post, refine it, and publish to LinkedIn via the API.
But that was just the beginning. This week I wanted to push further and solve the next set of challenges: email notifications, handling errors, and keeping Notion updated after posting. As always, the journey was full of questions — and fixes.
Question 1: How do I send an email after completion?
Once the workflow finished, I wanted to know about it without opening n8n. The obvious solution: email.
Fix:
I set up a Gmail OAuth2 credential and added a Gmail node.
Built a Function Item node (BuildEmail) that crafted the subject and HTML body.
The email included task title, LinkedIn URL, and the post preview.
Now, whenever a LinkedIn post succeeds, I get a neat “Published ✅” email in my inbox.
Question 2: How do I handle failures gracefully?
The LinkedIn node still sometimes failed. I didn’t want silent errors.
Fix:
Enabled Continue On Fail so the workflow wouldn’t break.
Extended the same BuildEmail node to generate a failure version.
Subject line: LinkedIn post FAILED ❌ — [Task Title].
Body: error reason + JSON snippet for debugging.
Now failures are just as visible as successes.
Question 3: What if there’s nothing to post?
Sometimes the workflow would run when the card wasn’t really ready. Sending no notification felt confusing.
Fix:
Added an IF node right after the Notion trigger.
If Status != Done, it routes to a Gmail node that says:
“Workflow executed — nothing to post.”
That small check made the workflow much more predictable.
Question 4: How do I update Notion after posting?
If LinkedIn was the output, Notion had to remain the source of truth. I wanted cards to show when they had been posted.
Fix:
Added a Notion Update node on the success branch.
Updated fields:
Posted = true (Checkbox)
Posted At = now
Post URL = LinkedIn link
Post URN = API response
This kept my Notion board fully in sync with what was live on LinkedIn.
Question 5: Why does LinkedIn show “Post cannot be displayed”?
Clicking the link right after posting gave an error. A few seconds later, the post worked fine.
Fix:
Learned LinkedIn takes 30 seconds to propagate new posts.
Added a Wait (30s) node between Notion update and Gmail email.
Now the success emails arrive only after LinkedIn is ready, so the link works immediately.
Lessons Learned This Week
- Always notify. Emails for success, failure, and no-post keep me in the loop.
-
- Error handling is part of automation. Continue On Fail + error emails made the workflow resilient.
-
- Update your source of truth. Notion cards now tell me which tasks went live.
-
- Patience is underrated. A 30-second wait solved the biggest user-facing problem.
Final Workflow (as of this week)
Notion → IF (Done?) → GPT Draft → GPT QA → LinkedIn Post → BuildEmail → IF (Success?) → Notion Update → Wait 30s → Gmail Email
False branch: “Nothing to post” email
Failures: Error email, Notion not updated
Wrapping Up the n8n Chapter
After a few weeks of experimenting, fixing errors, and shipping working LinkedIn automations, I’ve reached a natural checkpoint. My main goals with n8n were to:
- Understand how to connect APIs in a low-code environment
-
- Learn how to build workflows with branching logic
-
- Practice error handling, retries, and notifications
-
- See how automation can save time in real, personal use cases
-
✅ I’ve done all of that.
At this point, I know how to:
- Trigger workflows from Notion
-
- Pass data through GPT for drafting and QA
-
- Post content to LinkedIn via API
-
- Handle both successes and failures gracefully
-
- Update my source of truth in Notion
-
- Send dynamic Gmail notifications
-
- Wait for external systems to catch up
That covers the core basics of n8n — and more importantly, I now have the confidence to design and implement automations whenever I need them.
What’s Next: Learning Python
As part of my broader Learning AI Journey, I’m pressing pause on n8n workflows. The next goal on my list: learning Python.
It’s the backbone of data science and AI.
It gives me full flexibility beyond low-code tools.
It’ll let me create custom scripts, APIs, and ML pipelines that integrate with (or even replace) my automation workflows.
I’ll keep my n8n ideas parked in Notion for later exploration, but the focus now shifts to building Python fundamentals.
✍️ Conclusion: This week was about turning a working prototype into a resilient automation with proper error handling, notifications, and feedback loops. With the basics of n8n under my belt, I’m excited to dive into Python — the next major tool in my AI learning journey.