Last updated 2026-04-29

Marketing

Per-tenant marketing surface gated by the marketing module flag. Visible to admins, anyone with department='Marketing', and finance-flag holders.

Four integrations, each independent — connect the ones you actually use. All credentials are per-tenant; nothing is shared across workspaces.

Phase A — SEO (Google Search Console)

/marketing/integrations/gsc to connect.

  • Create a Google Cloud service account; download its JSON key.
  • In Search Console, add the service-account's email as a Restricted user on the property.
  • Paste the site URL + entire JSON into the form. Save.
  • Click Sync now at /marketing/seo to pull the last 28 days of search queries (clicks, impressions, CTR, average position).

Data lands in the gsc_query table — top 100 queries shown in the SEO view, sorted by clicks descending.

Phase A — Analytics (Google Analytics 4)

/marketing/integrations/ga4 to connect.

  • Same service account works (re-use your GSC key) — just add it as Viewer on the GA4 property at Admin → Property access management.
  • Find the numeric Property ID (NOT the G-XXXXXXXXXX measurement ID — that's something else) at GA4 Admin → Property → Property details.
  • Paste the JSON + Property ID. Save.
  • Click Sync now at /marketing/analytics to pull three reports for the last 28 days:
  • Sessions / users / page views by day → trend chart
  • Top 50 pages by sessions, with engagement rate + conversions
  • Top 25 source/medium pairs

Phase B — Blog publishing (WordPress)

/marketing/integrations/wordpress to connect.

  • In your WordPress admin → Users → Profile → Application Passwords → create a new one named "OtiumWork".
  • Paste the site URL + your WP username + the application password. Save (it auto-verifies via /wp-json/wp/v2/users/me).

Then /marketing/blog: - + New post → write in Markdown (rendered to HTML on publish) - Drafts stay in OtiumWork; one click "Publish to WordPress" pushes them via REST API as a published post. - Status, tags, slug, excerpt, featured-image-document all transferred.

Phase C — Social media (LinkedIn, X, Facebook)

/marketing/integrations/<linkedin|twitter|facebook> for each.

Each platform requires you to register a developer app first (one-time setup per company). The integration page shows the exact step-by-step instructions for that platform — typically:

  1. Register an app at the platform's developer portal
  2. Configure OAuth redirect URL: <your-otiumwork-domain>/marketing/integrations/<kind>/callback
  3. Request the right scopes (varies by platform — see the page)
  4. Copy Client ID + Client Secret into OtiumWork
  5. Click Authorize to OAuth-grant OtiumWork posting rights

Notes per platform: - LinkedIn — free; needs w_member_social scope - X (Twitter) — paid Basic tier (~$100/mo) required for posting via API - Facebook — needs App Review approval before live posting; sandbox-mode allowed pre-approval

Then /marketing/social: - + New post → compose body, pick which platforms to post to, optional link, optional schedule-for-later (scheduled cron not built yet — for now use Post-now) - Per-platform results stored on each post: success URL or error message

Roles and access

/marketing/* requires the marketing module flag enabled (admin sets at /admin/settings/modules).

Once enabled, the Marketing sidebar section shows for: - Admins - Anyone with department='Marketing' - Anyone with the has_finance_access flag (so the finance/ops team can audit campaigns + spend)

Other employees don't see the Marketing surface at all.


See something wrong or outdated in this article? Report it →