Social Media Release (Outstand)
Read first Social Media — Introduction (Checklist for Editorial). This page is the complete reference.
Fanpage Karma is replaced by cockpitOS Release + Outstand Publish.
| What | Social Cockpit (own module): Channels, Post Editor, Releases (/dashboard/social/approvals), Engage, Reporting; Publish via Outstand. |
| Why | Social separated from website workflow — clear release, metrics, and channels in one place. |
| Who | Editorial, Center Manager, Org-Marketing, Center-Admin (Release); Operations/IT (Outstand Keys, Webhook, Cron). |
| Where | Sidebar Social Cockpit; Channels also in Center Detail Social Media (?tab=social). |
| How to Test | 1) Center → Social Media: Link Outstand profile. 2) Create post → For approval. 3) Approve under Releases or test Release Link. 4) Reporting → Refresh after publish. |
| Operations | OUTSTAND_API_KEY, optional OUTSTAND_WEBHOOK_SECRET, CRON_SECRET — see Env section below and Changelog Social/Outstand. |
Roles
Release: Center Manager, Org-Marketing, Center-Admin, Super-Admin (verified via API).
Center Manager
- Landing:
/dashboard/center-manager— KPIs, Release short list, Quick Release (Feed with ≤1 media) - Social Hub: Sidebar Social Cockpit — everything bundled (see below)
Social Cockpit (Module social-cockpit)
Everything in one place under Social Cockpit in the sidebar (own module, like Mall Cockpit):
| Menu | Path | Function |
|---|---|---|
| Overview | /dashboard/social | Hub with tiles to all areas |
| Link Channels | /dashboard/settings/social-accounts | Outstand profiles per center |
| Create Post | /dashboard/social/new | Create a post |
| Releases | /dashboard/social/approvals | Social releases (4 status columns) |
| Engage | /dashboard/social/engage | Likes & comments per cockpit post (Outstand Analytics + Replies), write responses |
| Reporting & Analytics | /dashboard/social/reporting | Metrics & Followers |
Engage: For each published post, Likes, Comment, and Share counters are loaded via Outstand Analytics; Comment texts via Replies API. Outstand uses the published channels from the post details (important for Facebook pages without @username — page name/nickname). Only posts published via Cockpit/Outstand are included. Metrics for fresh posts may be slightly delayed — click Refresh.
Outstand Data Flow: Publish → Outstand (/v1/posts/ + Media-Confirm) → Outstand sync writes account & post metrics into the DB → Reporting, Engage and Dashboard Home read from it (follower increase, monthly reach, interactions, top post).
Reporting & Platform Notes
- Reporting:
/dashboard/social/reporting— Core KPIs at the top:- Followers & Growth (Total of all linked channels, delta between the first and last snapshot in the sync period)
- Reach (Total reach of all posts in the current calendar month; fallback impressions if reach is missing)
- Top Post of the Month (strongest post in the calendar month by reach → impressions → interactions)
- Interactions (own card): Likes, Comments and Shares as monthly sum across all synchronized posts; in post list per entry, the same values in detail
- Dashboard Home: Shows alongside reach also the monthly interactions (Likes · Comments · Shares) with a link to reporting
- Outstand sync loads fresh metrics from Outstand into the DB — without sync, KPIs remain empty or outdated (manually in reporting or daily via cron
/api/cron/outstand-sync) - Bluesky: Outstand currently delivers limited metrics and comments
- Detail Release: Always check story/carousel/reel in the workflow
Workflow
Social posts have a dedicated release view under /dashboard/social/approvals (no longer mixed in with the website workflow list).
Four areas:
- For Approval —
in_review, waiting on Center/Marketing - Revision — rejected, with reason; button Resubmit for Approval
- Drafts — not submitted yet
- Live & Scheduled — published or scheduled
Per card: Preview image, Editor, Release Link, Release / Reject (for authorized roles).
Website releases remain under /dashboard/workflow.
In the Content Planner (/dashboard/content/planner), social posts appear on the scheduled date (scheduledAt) or publication date — filter chip Social.
- Create New: Sidebar Social Cockpit → Create Post or
/dashboard/social/new - Edit: In Social Releases button Editor or
/dashboard/social/[draftId] - Editor (
/dashboard/social/new): two-column layout (full page width) — Center for this post chosen independently from the header switcher- Filter Organization → Select All or select individual centers via checkbox
- Channels relate only to the centers chosen in the editor; missing Outstand profiles are mentioned per center with a link to the Social Media tab
- Publish (for release roles directly to Outstand), For Approval, Draft
- AI Caption: Enter keywords → Button Caption — Text oriented to the centers selected in the editor (name, city, description); without center selection, the text remains intentionally general (system prompt
socialCaptionGenerator) - AI Image: FAL AI (
FAL_API_KEY) — Button Image (FAL); optionally your own image idea - Media: Media library + upload; mini-preview inline
- Timing & Format (expandable): Post type, planned publication
- From Dispatch: Email → Draft → Tab Social Media
After approval: Outstand POST /v1/posts/ — media as containers[].media with { url, filename }. Optionally First Comment in the editor (posted after going live). Channel Status (Facebook/Instagram …) appears as badges after publish.
Outstand Webhook (optional, in Outstand under Settings → Webhooks): POST /api/webhooks/outstand — Events post.published, post.error, account.token_expired. Env OUTSTAND_WEBHOOK_SECRET for signature verification. Metric Sync: manually in reporting or Cron POST /api/cron/outstand-sync (CRON_SECRET, recommended daily).
Note: Caption changes in workflow save the existing media in the draft (no accidental removal when PATCH without containers).
Release Link (without login)
For Center Managers / Marketing, who do not have a Cockpit account:
- Social Cockpit → Releases (
/dashboard/social/approvals) → Post in review → Button Release Link (beside editor) - Link is generated and copied to the clipboard — Format:
/release/social/[token] - Recipient opens the branded preview page (center logo, colors) and can approve or reject
- Link is valid for 30 days; upon expiration, generate a new link in Releases
- Feedback to the editorial team: The creator (
createdBy) receives an email (resend) and a notification in the bell (header) — with rejection reason or approval note and link to the post. Also visible in the Social Editor and under Releases → Live & Scheduled.
Note: Customer contact is not a release link — there, the AI only generates an email text suggestion for tenants/customers.
Technically:
POST /api/social/drafts/[draftId]/review-link— Generate link (session)GET/POST /api/social/review/[token]— Preview / Approval / Rejection (public, token-based)GET/PUT /api/notifications— Cockpit bell (persistent notifications per user)
Notifications (Bell)
The bell in the top bar shows unread workflow notifications (e.g., social release via external link). Full list: Notifications (/dashboard/notifications). Technically: Table dashboard_notifications — Migration 20260521180000_add_dashboard_notifications_SAFE.sql.
Timeline
Under Social Releases (expand card) and in the Social Editor (sidebar) the timeline for each post appears: creation, release link, submission, approval/rejection, publication. Technically: Table social_post_draft_events — Migration 20260521190000_add_social_draft_events_SAFE.sql, API GET /api/social/drafts/[draftId]/events.
In the Dashboard (for editorial team):
- Recommended: Shopping Center open → Choose Center → Tab Social Media
(/dashboard/content/centers/[centerId]?tab=social) - Alternatively: Sidebar Social Cockpit → Link Channels
(/dashboard/settings/social-accounts) — there select Center and link Outstand profiles
Assign Outstand profiles (Facebook, Instagram, …) per center. When creating social drafts, linked profiles are pre-selected.
Technically: Table center_social_accounts, APIs:
GET/PUT/DELETE /api/social/center-accountsGET /api/social/outstand-accounts— connected Outstand accounts
Without mapping, no accounts will be pre-selected when creating.
Env
OUTSTAND_API_KEY— organization-wide (Render Dashboard Service)OUTSTAND_WEBHOOK_SECRET— optional, HMAC for/api/webhooks/outstandCRON_SECRET— for/api/cron/outstand-sync(daily metric sync; GitHub Action Outstand Metrics Sync, 5:00 UTC)FAL_API_KEY— Image generation in the Social Editor (FAL / flux-quick)- OpenAI (or configured provider) — Caption AI via existing AI settings
Migration
Additive tables: 20260521160000_add_social_outstand_SAFE.sql
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /en/dashboard/social-media-freigabe