Skip to main content

Social Media Release (Outstand)

New to Social Media?

Read first Social Media — Introduction (Checklist for Editorial). This page is the complete reference.

Fanpage Karma is replaced by cockpitOS Release + Outstand Publish.

WhatSocial Cockpit (own module): Channels, Post Editor, Releases (/dashboard/social/approvals), Engage, Reporting; Publish via Outstand.
WhySocial separated from website workflow — clear release, metrics, and channels in one place.
WhoEditorial, Center Manager, Org-Marketing, Center-Admin (Release); Operations/IT (Outstand Keys, Webhook, Cron).
WhereSidebar Social Cockpit; Channels also in Center Detail Social Media (?tab=social).
How to Test1) Center → Social Media: Link Outstand profile. 2) Create post → For approval. 3) Approve under Releases or test Release Link. 4) Reporting → Refresh after publish.
OperationsOUTSTAND_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):

MenuPathFunction
Overview/dashboard/socialHub with tiles to all areas
Link Channels/dashboard/settings/social-accountsOutstand profiles per center
Create Post/dashboard/social/newCreate a post
Releases/dashboard/social/approvalsSocial releases (4 status columns)
Engage/dashboard/social/engageLikes & comments per cockpit post (Outstand Analytics + Replies), write responses
Reporting & Analytics/dashboard/social/reportingMetrics & 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 Approvalin_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 OrganizationSelect 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).

For Center Managers / Marketing, who do not have a Cockpit account:

  1. Social Cockpit → Releases (/dashboard/social/approvals) → Post in review → Button Release Link (beside editor)
  2. Link is generated and copied to the clipboard — Format: /release/social/[token]
  3. Recipient opens the branded preview page (center logo, colors) and can approve or reject
  4. Link is valid for 30 days; upon expiration, generate a new link in Releases
  5. 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):

  1. Recommended: Shopping Center open → Choose Center → Tab Social Media
    (/dashboard/content/centers/[centerId]?tab=social)
  2. 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-accounts
  • GET /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/outstand
  • CRON_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