PowerMarketing Docs
Back to App

Publishing to a LinkedIn Company Page

This tutorial walks through publishing posts, articles, and news to a LinkedIn Company Page from PowerMarketing — end to end, with visual diagrams of every step. It covers both supervision modes:

  • A — With approval: the AI writes the draft, a human reviews it in the Decision Inbox, and only an explicit Approve sends it live.
  • B — Without approval: news is written and published automatically by the agent crew, with no human in the loop (with safety fallbacks).

Human action AI Agent Approval gate Auto-publish Live on page

Prerequisites. You need (1) an active brand in PowerMarketing, (2) a working LLM provider key for that brand (Settings → API Keys), and (3) admin rights on the LinkedIn Company Page you want to post to. Company-page posting requires LinkedIn's organization scopes, which only a Page admin can grant.

The Two Scenarios at a Glance

Both scenarios share the same setup and the same agent crew — they differ only at the moment of publishing: a human gate (Track 2) or none (Track 1).

Scenario A — Post / Article / News with approval
📅
Human
Calendar entry
🔄
Agent
Dispatcher
✍️
Agent
ContentCreator
🔔
Gate
Decision Inbox
👁
Human
Review & Approve
🚀
Agent
Publisher
Output
Live on page
Scenario B — News without approval
📅
Human
Calendar entry (news)
🔄
Agent
Dispatcher
✍️
Agent
ContentCreator
Auto
Publication rules
🚀
Agent
Publisher
Output
Live on page

One-Time Setup (required for both scenarios)

You only do this once per brand. It connects PowerMarketing to your LinkedIn Company Page so the Publisher agent can post on its behalf.

🧩
LinkedIn
Create developer app
🔑
PowerMarketing
Save Client ID & Secret
🏢
PowerMarketing
Connect Company Page
🔗
Result
Page connected

Step 1 — Create a LinkedIn developer app with company-page access

1

Create the app on LinkedIn

At linkedin.com/developers, create an app and associate it with your Company Page (LinkedIn requires the app to be linked to the Page you'll post to). You will need these products / scopes:

  • Sign In with LinkedIn using OpenID Connect — grants openid profile email.
  • Share on LinkedIn — grants w_member_social.
  • Community Management API — grants r_organization_admin and w_organization_social (these are what let the app post as the organization).

Request Community Management API FIRST, on an app with nothing else on it. LinkedIn greys out its Request access button on any app that already has other products — their own FAQ states that Development Tier access is only granted to “new developer applications that don't have access to other API products”. If you add Share on LinkedIn or Sign In with OIDC first, you are locked out and must start a new app. Correct order: (1) create the app on your Company Page, (2) add no products, (3) request Community Management API — Development Tier, (4) after approval, add Sign In with OIDC and Share on LinkedIn. Set a Privacy policy URL in Settings before submitting the request.

Personal posting works without any of this. Sign In with OIDC + Share on LinkedIn alone are enough for Connect Personal Account. Only Connect Company Page needs the Community Management API — if you don't have it yet, connecting a Company Page fails with Scope "w_organization_social" is not authorized for your application.

In the app's Auth tab, add the exact Redirect URL that PowerMarketing shows you in Step 2 (copy it verbatim — a mismatch is the #1 cause of connection failures).

2

Find your Organization (Company Page) ID

Open your Company Page as an admin. The numeric ID appears in the admin URL, e.g. linkedin.com/company/12345678/admin/. You'll paste this number into PowerMarketing when connecting the page.

Step 2 — Save your LinkedIn app credentials in PowerMarketing

Go to Settings → Credentials. In the LinkedIn App card, paste your Client ID and Client Secret, confirm the pre-filled Redirect URI, and click Save. Saving unlocks the two Connect buttons.

Settings → Credentials → LinkedIn App
86xa1b2c3d4e5f
••••••••••••••••••••••••
https://marketing-api.planningpowertools.com/api/oauth/linkedin/callback
Save After saving: Connect Personal   Connect Company Page become enabled.

Step 3 — Connect the Company Page

1

Click “Connect Company Page”

A dialog asks for your Organization ID — paste the number from Step 1.

Connect Company Page
12345678
Authorize on LinkedIn
2

Authorize on LinkedIn

You're redirected to LinkedIn's consent screen. Because this is an organization connection, PowerMarketing requests the organization scopes (r_organization_admin, w_organization_social) on top of the sign-in scopes. Approve, and LinkedIn sends you back to PowerMarketing.

3

Confirm the connection

You'll land back on Settings with a success banner, and the credential appears in your connected-accounts list tagged Company Page. PowerMarketing stores the access token and will post as urn:li:organization:<your-id>.

Connected Accounts
Acme Corporation Company Page Active
Personal vs Company. The “Connect Personal” button does the same flow without an Organization ID and posts to a member profile (urn:li:person:…). Everything else in this tutorial is identical — just connect the Company Page instead.

Scenario A — Posting a Post, Article, or News with approval

This is Track 2: the AI drafts, you review, you approve. It's the default for strategic content (post, article) and for anything where you keep a human in the loop. Use it whenever brand voice and accuracy matter and you want the final say before it's public.

Track 2 — Approval flow
📅
You
Add calendar entry
🔄
Agent
Dispatch & draft
🔔
Inbox
Pending decision
👁
You
Review · edit · pre-flight
✔️
You
Approve
Output
Published
1

Add a calendar entry on the Content Calendar

Open Calendar, click a date, and create an entry. Choose a content type of post or article (or news if you want it reviewed), set the platform to LinkedIn, and write the topic. To force review even for an auto-eligible type, tick Require approval.

Calendar → New Entry
How rolling-horizon planning cut our client's stockouts by 30%
article
linkedin
2026-06-05
Require approval (forces Track 2 even if the type is auto-eligible)
Add entry

Prefer the AI to plan for you? Use ✦ Plan this week to have the Planner propose a set of entries you approve as one decision.

2

Dispatch — the agents write the draft

At the brand's dispatch time the scheduler runs automatically, or you can trigger it now from the Command Center's Dispatch panel (or Run dispatch). The ContentDispatcher creates the post row and the ContentCreator writes it. Because the type requires review, the post is queued as a pending decision rather than published.

3

Review it in the Decision Inbox

Open Decisions. Each pending item shows the AI draft and the target platform. You can ask the built-in assistant to Explain, Recommend (approve/reject), or list Risks — and edit the copy on the Posts/Publish page before approving.

Decisions → Pending
linkedin review_post article · “How rolling-horizon planning…”
When a distributor switched from quarterly forecasts to a rolling-horizon model, stockouts dropped 30% in one quarter… [full draft]
Ask AI Approve Reject
4

(Optional) Run a Pre-flight check

On the Publish page you can run a pre-flight review before approving. It checks the LinkedIn character limit (3,000) deterministically and runs an AI quality pass (hook strength, CTA, hashtags, compliance risks).

Publish → Pre-flight result
OK Character count OK: 1,420 of 3,000.
OK Strong, specific hook with a quantified result.
WARN Consider adding a clear call-to-action at the end.
5

Approve → it publishes

Click Approve. The post's status flips to approved, the Publisher agent sends it to LinkedIn as your organization, and the status becomes published with a link back to the live post. You'll see it in Posts and on your Company Page.

Posts
published linkedin How rolling-horizon planning… View on LinkedIn
🛡️
A human is always in the loop
Nothing reaches LinkedIn until you click Approve. Rejecting instead lets you record a reason code that feeds the AI's feedback loop, so future drafts improve. video, reel, email, newsletter, and broadcast are always Track 2 — they can never be auto-published, regardless of settings.

Scenario B — Publishing News without approval

This is Track 1: the agent crew writes and publishes with zero human action. It's designed for time-sensitive, lightweight content — news, trend_scan, short_post, repurposed — where speed beats a review cycle. Here we enable it for news.

You can test this by hand. Pick News as the content type in Create (or on a Calendar entry) and it follows exactly the same Track 1 path as planner output. Choosing News also selects the trend-scan writing angle automatically — there is no separate mode to set.

Track 1 — Auto-publish flow
⚙️
You (once)
Enable news auto-publish
📅
You
Calendar entry (news)
Auto
Dispatch → draft → rules
🚀
Agent
Publisher
Output
Published — no review
1

Enable News for auto-publish (one-time)

Go to Settings → Automation → Publication Rules and switch on News in the auto-publish matrix, then Save. This adds news to the brand's auto-publish content types — the single switch that turns Track 1 on for news.

Settings → Automation → Publication Rules
Content types allowed to publish automatically (no review):
News
Trend scan
Short post
Repurposed
Greyed-out / unavailable: Video, Reel, Email, Newsletter, Broadcast — these always require approval.
Save publication rules
2

Add a news calendar entry — leave “Require approval” OFF

Create a calendar entry with content type news, platform LinkedIn, and make sure Require approval is unchecked. (Ticking it would override the rule and force Track 2.)

Calendar → New Entry
Weekly supply-chain headlines for planners
news
linkedin
Require approval (leave OFF for auto-publish)
Add entry
3

Let it run — fully automatic

At the brand's dispatch time the scheduler fires (no clicks needed). The Dispatcher writes the post, the publication rules say “auto”, the post is marked approved internally, and the Publisher posts it to your Company Page immediately. You'll find it in Posts as published and summarised in the Command Center's overnight bar.

No human action needed — with a safety net
If an auto-publish attempt fails (e.g. an expired LinkedIn token), the post does not vanish: it's reverted to ai_draft and dropped into the Decision Inbox so you can review and publish it manually. Nothing is ever lost silently.

Decision Logic — “Will this post auto-publish?”

For social posts, the auto-vs-approval decision is made at dispatch time from three inputs — the autopilot dial governs nurture email, not social posts, so the switches that matter here are the content type, your Publication Rules, and the per-entry toggle:

Type
Is it video / reel / email / newsletter / broadcast?
Entry
Is “Require approval” ticked?
Rules
Is the type enabled in Publication Rules?
⚡/👁
Result
Auto vs Review
  • If is yes → always Review (cannot be auto-published, ever).
  • Else if is ticked → Review (per-entry override).
  • Else if the content type is enabled in Publication Rules → Auto-publish.
  • Otherwise → Review (the default for anything not explicitly enabled).

Reference Tables

Content type → default track

Content typeDefaultNotes
news, trend_scan, short_post, repurposedAuto-eligible ⚡Auto-publishes only if you enable it in Publication Rules and the entry isn't marked Require approval.
post, article, story, carouselReview 👁Not auto-eligible by default — goes to the Decision Inbox.
video, reel, email, newsletter, broadcastAlways Review 🔒Hard rule — can never be auto-published, regardless of settings.

LinkedIn specifics

ItemValue
Character limit (pre-flight check)3,000
Company Page authorurn:li:organization:<org-id>
Personal profile authorurn:li:person:<member-id>
VisibilityPUBLIC, main feed
Required org scopesr_organization_admin, w_organization_social

Troubleshooting

SymptomLikely cause & fix
“Connect” buttons are greyed outYou haven't saved the Client ID/Secret yet. Save the LinkedIn App card first (Step 2).
OAuth fails with a redirect errorThe Redirect URL in your LinkedIn app's Auth tab must match the Redirect URI shown in PowerMarketing exactly (scheme, host, path, no trailing slash differences).
Authorized, but posting fails as the organizationThe app is missing the Community Management API products, or the connecting user isn't an admin of the Page. Re-request the org scopes and reconnect.
A news post didn't auto-publishCheck: News is enabled in Publication Rules, the entry's “Require approval” is unchecked, and the LinkedIn token is still valid. If publishing failed, the post is waiting in the Decision Inbox.
Pre-flight shows “over the limit”Trim the copy below 3,000 characters before approving, or have the AI shorten it.
Token expiredReconnect the Company Page (Settings → Credentials → Connect Company Page) to refresh the access token.