Last updated: October 2026
n8n LinkedIn Post Automation: How to Post to LinkedIn from n8n
n8n LinkedIn post automation works two ways. Use n8n's built-in LinkedIn node with your own LinkedIn app (Share on LinkedIn plus Sign In with LinkedIn using OpenID Connect, posting as Person), or call a posting API like OpenTweet from an HTTP Request node, so no LinkedIn app is needed.
This guide covers both, with the setup steps, an importable workflow, a side-by-side comparison, and the fixes for the n8n LinkedIn node errors people hit most.
7-day free trial. Cancel anytime.
Path A: the built-in n8n LinkedIn node
The node has one operation, Post > Create, and posts as a Person or an Organization. It is free, but you bring your own LinkedIn developer app. These steps follow n8n's LinkedIn credential and node documentation.
- 1
Create a LinkedIn developer app
Go to the LinkedIn Developer portal and create an app. LinkedIn asks for an app name, a logo, and a LinkedIn Company Page to associate with the app, even if you only want to post as yourself. If you have no Page, the form has a link to create one.
- 2
Add both products
On the app's Products tab, add Share on LinkedIn and Sign In with LinkedIn using OpenID Connect. Share on LinkedIn grants the posting permission. OpenID Connect is what lets n8n look up your member ID for the Person dropdown.
- 3
Create the n8n credential
In n8n, create a LinkedIn OAuth2 credential. Copy the Client ID and the Primary Client Secret from the app's Auth tab, add n8n's OAuth Redirect URL to the app's Authorized redirect URLs, and leave Organization Support and Legacy off. Then click Connect and sign in.
- 4
Configure the LinkedIn node
Add a LinkedIn node, choose Post > Create, set Post As to Person, and pick yourself in Person Name or ID. Write the post in Text.
- 5
Add an image or an article (optional)
Media Category lets you attach an image from an earlier node's binary data, or an article URL with a title and description. The node has no video or multi-image option.
- 6
Add a trigger and activate
Put a Schedule Trigger, an RSS Feed Trigger, or a Google Sheets trigger in front of the node, run it once to test, then activate the workflow.
Posting as a Company Page
Posting as an Organization needs thew_organization_social permission, which LinkedIn only grants after your app passes Community Management App Review. n8n has a separate Community Management OAuth2 credential for that, which also asks for the Advertising API product. In the Organization URN field, enter the number only, for example 03262013, not urn:li:company:03262013.n8n LinkedIn node errors and how to fix them
Most n8n LinkedIn node failures come from the app setup, the token, or the API version header, not from the post. Find your symptom below.
Error fetching options from LinkedIn (Person Name or ID)
Cause. The node fills this dropdown by calling LinkedIn's /v2/userinfo endpoint, which needs the OpenID Connect product. With Legacy turned on it calls /v2/me with the older r_liteprofile scope instead.
Fix. Confirm Sign In with LinkedIn using OpenID Connect is on the app's Products tab, turn Legacy off, then delete the credential and create it again so the new token carries the new scopes. If the dropdown still fails, switch it to Expression and paste your member ID. This error has been reported many times, for example in n8n issue #16802.
Authorization fails or LinkedIn shows an unauthorized scope error when you click Connect
Cause. Organization Support adds the w_organization_social scope. A self-serve app does not have it until LinkedIn approves the app through Community Management App Review.
Fix. For posting to your own profile, turn Organization Support off and reconnect. Only turn it on after LinkedIn has approved the app for organization posting.
It worked before you added a product, and now it does not (or the reverse)
Cause. A LinkedIn token keeps the scopes it was issued with. Adding a product to the app does not upgrade tokens you already hold.
Fix. After any change on the Products tab, delete the n8n credential and create it from scratch. Reconnecting the old one is not always enough.
426 NONEXISTENT_VERSION, or LinkedIn node not working after it worked for months
Cause. Every request carries a LinkedIn-Version header, and the n8n node hardcodes it. LinkedIn retires each monthly version after about a year. When 202504 was retired in April 2026, the n8n LinkedIn node stopped posting until n8n shipped 202604 (issues #28559 and #28564).
Fix. Update n8n. As of October 2026 the node sends 202604 (issue #39063 asks n8n to move it forward). If you call LinkedIn from an HTTP Request node yourself, send a current version.
403 Forbidden on /rest/posts
Cause. Usually the token, not the payload: the post was sent as an organization without that permission, or the token predates the Share on LinkedIn product. The LinkedIn-Version header can also be the cause.
Fix. Post As Person, recreate the credential, and check the version header. A self-serve app posted successfully at LinkedIn-Version 202608 in our September 2026 test.
Works for about two months, then every run fails with 401
Cause. LinkedIn access tokens for self-serve apps last 60 days and come without a refresh token, so n8n cannot renew them on its own.
Fix. Reconnect the credential in n8n every 60 days, and add an Error Trigger workflow that emails you when a LinkedIn run fails so you notice.
Deeper dives: 403 on /rest/posts, 426 NONEXISTENT_VERSION, and why the token expires after 60 days.
Path B: post to LinkedIn with one HTTP Request node
Connect LinkedIn once in OpenTweet with a normal LinkedIn sign-in. Your n8n workflow then holds only an OpenTweet API key and calls POST /api/v1/posts with "platforms": ["linkedin"]. No developer app, no Company Page, no OAuth credential in n8n, and no version header to track.
- 1
Connect LinkedIn and create a key
In OpenTweet, go to Settings > Accounts and connect LinkedIn. Posts go to your personal profile. Then create an API key under Settings > API keys. It starts with ot_.
- 2
Import the workflow
Copy the JSON below and paste it onto the n8n canvas. You get an RSS Feed Trigger wired to an HTTP Request node.
- 3
Set the feed and the key
Put your feed URL in the trigger and replace ot_your_api_key in the Authorization header, or move the key into a Header Auth credential so it is not stored in the workflow.
- 4
Test, then activate
Run it once and read the results array in the HTTP Request output. When it looks right, activate the workflow.
Importable workflow: RSS to LinkedIn
n8n-nodes-base.rssFeedReadTrigger polls the feed every hour and sends each new item to n8n-nodes-base.httpRequest, which publishes it to LinkedIn right away. Swap the trigger for a Schedule Trigger to post on a fixed timetable instead.
{
"name": "RSS to LinkedIn",
"nodes": [
{
"parameters": {
"pollTimes": {
"item": [
{ "mode": "everyHour" }
]
},
"feedUrl": "https://example.com/feed.xml"
},
"id": "3d6a1f0e-8b42-4c7e-9a15-6e2b7c9d0a11",
"name": "RSS Feed Trigger",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"typeVersion": 1,
"position": [0, 0]
},
{
"parameters": {
"method": "POST",
"url": "https://opentweet.io/api/v1/posts",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{ "name": "Authorization", "value": "Bearer ot_your_api_key" }
]
},
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ text: 'New on the blog: ' + $json.title + ' ' + $json.link, platforms: ['linkedin'], publish_now: true }) }}",
"options": {}
},
"id": "7f2c9b4a-1e63-4d8f-b0a7-5c3e2d1f9b22",
"name": "Post to LinkedIn",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [280, 0]
}
],
"connections": {
"RSS Feed Trigger": {
"main": [
[
{ "node": "Post to LinkedIn", "type": "main", "index": 0 }
]
]
}
},
"settings": { "executionOrder": "v1" }
}Queue it for later instead
Replace publish_now with scheduled_date in ISO 8601. The post waits in your OpenTweet queue and publishes at that time, so the workflow does not have to run then.
{{ JSON.stringify({
text: $json.title + ' ' + $json.link,
platforms: ['linkedin'],
scheduled_date: '2026-10-14T08:30:00Z'
}) }}An n8n LinkedIn image post
Pass public image URLs in media_urls. OpenTweet downloads them, uploads them to LinkedIn, and publishes them as one post. A video URL is skipped on LinkedIn with a reason.
{{ JSON.stringify({
text: 'Three charts from this week.',
platforms: ['linkedin'],
media_urls: [
'https://example.com/chart-1.png',
'https://example.com/chart-2.png',
'https://example.com/chart-3.png'
],
publish_now: true
}) }}Cross-post to X and Bluesky in the same call
Add the other networks to platforms. Each one gets its own entry in results, and a post that is too long for one network is skipped there while the others still go out. The full three-network workflow is on n8n to X, Bluesky and LinkedIn.
{{ JSON.stringify({
text: $json.title + ' ' + $json.link,
platforms: ['x', 'bluesky', 'linkedin'],
publish_now: true
}) }}What comes back
{
"success": true,
"count": 1,
"posts": [
{
"id": "65f1a2b3c4d5e6f7a8b9c0d1",
"status": "posted",
"platforms": ["linkedin"],
"posted": true,
"results": [
{
"platform": "linkedin",
"status": "published",
"url": "https://www.linkedin.com/feed/update/urn:li:share:7300000000000000000/"
}
]
}
]
}RSS posts contain links
Every RSS item carries a link, and link posts are plan-limited. Advanced ($29/mo) includes 10 link posts a day and Agency ($49/mo) includes 20. Pro ($11.99/mo) needs URL credits for link posts. Past the limit, the link is removed from the post before it publishes. Text and image posts are not affected.LinkedIn node vs HTTP Request to OpenTweet
If you only post text to your own profile and do not mind maintaining a LinkedIn app, the native node is free and fine. If you want images, queued scheduling, or the same post on X and Bluesky, the HTTP Request route is less to maintain.
| n8n LinkedIn node | HTTP Request to OpenTweet | |
|---|---|---|
| LinkedIn developer app | Required, with a Company Page associated | None. You sign in with LinkedIn in OpenTweet |
| Credential in n8n | LinkedIn OAuth2 client ID and secret | One ot_ API key in a header |
| Post to | Your profile, or a Page after App Review | Your personal profile only |
| Images | One image or one article link per post | Several images via media_urls |
| Video | No | No (a video post is skipped on LinkedIn with a reason) |
| Scheduling | Your trigger runs the post at that moment | scheduled_date queues it in OpenTweet, or publish_now |
| Cross-posting | One node per network, each with its own auth | platforms: x, bluesky, linkedin in one call |
| LinkedIn-Version header | Whatever your n8n version hardcodes | Set by OpenTweet (202608 as of October 2026) |
| Token renewal | Reconnect by hand every 60 days | Reconnect every 60 days too, but OpenTweet emails you and holds scheduled posts |
| Cost | Free (LinkedIn and self-hosted n8n) | From $11.99/mo |
OpenTweet connects 1, 3 or 10 LinkedIn profiles on Pro, Advanced and Agency. Pick one per post with linkedin_account_id.
Using Make or Zapier instead
Make
Make's LinkedIn app has separate modules per post type: Create a User Text Post, Create a User Image Post and Create a User Video Post for your profile, and Create a Company Text Post, Create a Company Image Post and Create a Company Video Post for Pages. The same OpenTweet call works from Make's HTTP > Make a request module.
Zapier
Zapier's LinkedIn integration has two actions: Create Share Update for your profile and Create Company Update for a Page. Webhooks by Zapier can send the same POST to OpenTweet if you want one step for several networks.
Frequently asked questions
How do I post on LinkedIn using n8n?
Two ways. Use n8n's built-in LinkedIn node with your own LinkedIn developer app (Share on LinkedIn plus Sign In with LinkedIn using OpenID Connect) and the Post > Create operation as Person. Or add an HTTP Request node that calls a posting API such as OpenTweet's POST /api/v1/posts with platforms set to ["linkedin"], which needs no LinkedIn app.
Do I need a LinkedIn Company Page to use the n8n LinkedIn node?
To create the LinkedIn developer app, yes. LinkedIn requires every app to be associated with a Company Page, and n8n's credential docs list one as a prerequisite, even when you only post to your personal profile. The HTTP Request route through OpenTweet needs no app and no Page.
Can n8n post to a LinkedIn Company Page?
With the built-in node, yes, once LinkedIn approves your app through Community Management App Review and you turn on Organization Support (or use the Community Management credential). Enter the organization number, not the full urn:li:company string. OpenTweet posts to personal profiles only, so it is not the route for Company Pages.
Can I post an image to LinkedIn from n8n?
Yes. In the LinkedIn node, set Media Category to Image and point it at the binary property from an earlier node, such as an HTTP Request that downloads the file. The node takes one image. Through OpenTweet, pass image URLs in media_urls and several images go out as one LinkedIn post.
Why does my n8n LinkedIn workflow stop working after 60 days?
LinkedIn access tokens for self-serve apps last 60 days and LinkedIn issues no refresh token for them. When it expires, reconnect the credential in n8n. Any tool that posts to LinkedIn for you has the same limit, because it comes from LinkedIn.
Can one n8n node post to LinkedIn, X and Bluesky?
Not with the native nodes, which each need their own credentials. One HTTP Request node to OpenTweet with platforms set to ["x", "bluesky", "linkedin"] posts the same text to all three and returns a result per network. If the text is too long for one network, that network is skipped and the others still publish.
Is there a LinkedIn community node for n8n?
Some are published on npm by independent authors. Community nodes run code on your n8n instance, so check the author and source before installing. The built-in LinkedIn node and the built-in HTTP Request node cover posting without one.
Keep exploring
More n8n workflows, the LinkedIn API answers, and the scheduler.
n8n workflow: X, Bluesky and LinkedIn
The importable RSS workflow that posts to all three networks at once.
OpenTweet for n8n
The HTTP Request setup for posting from any n8n workflow.
Fix the n8n Twitter 403
Every cause of the n8n X node 403, and the exact fix for each.
Automate LinkedIn posts
Every way to automate LinkedIn publishing, and what is safe to automate.
LinkedIn scheduler
Schedule posts to your LinkedIn profile next to your X and Bluesky queue.
Why LinkedIn tokens expire after 60 days
No refresh token on self-serve apps, and what that means for automations.
Post to LinkedIn with Python
The same post from a Python script, with and without a LinkedIn app.
Post to LinkedIn from n8n without a LinkedIn app
Connect LinkedIn once, get one key, and post or schedule from a single HTTP Request node. X and Bluesky in the same call.
From $11.99/mo. Cancel anytime.