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/seoto 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-XXXXXXXXXXmeasurement ID — that's something else) at GA4 Admin → Property → Property details. - Paste the JSON + Property ID. Save.
- Click Sync now at
/marketing/analyticsto 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:
- Register an app at the platform's developer portal
- Configure OAuth redirect URL:
<your-otiumwork-domain>/marketing/integrations/<kind>/callback - Request the right scopes (varies by platform — see the page)
- Copy Client ID + Client Secret into OtiumWork
- 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 →