Publish

How to publish on Signal Desk

Signal Desk is the connected GEO publish desk beside the Growth Stack (Cadence, CitePilot, Kerygma, Post-Wick, Aegis Loop) — not a sixth stack product. Write in the studio, or let Cadence / CitePilot publish via the WordPress-compatible API.

Recommended

Write in the studio

Sign up free, open the editor, fill SEO & GEO fields, and publish yourself. No invite code.

  1. Create an account with your name or brand, username, and password.
  2. Open Studio → New post.
  3. Write the draft, set meta description, answer block, cover, and topics — then Publish.

Growth Stack

Connect Cadence or CitePilot

Primary API clients from the Growth Stack. Generate an API key in Studio → Settings, then connect with site URL + API key (Bearer). Paste the webhook URL/secret from your tool back into Settings so publish status syncs.

  1. Sign up, open Settings, and generate an API key (copy once).
  2. In Cadence / CitePilot → Integrations → Signal Desk, paste site URL + API key.
  3. Copy the webhook URL and secret from the integration UI into Signal Desk Settings.

API settings

Current origin for this environment. In production, use your public HTTPS domain instead of localhost. Prefer Bearer API keys for Cadence / CitePilot; Basic auth still works for legacy clients.

Site URL:     https://www.signaldeskblog.com
API base:     https://www.signaldeskblog.com/wp-json/wp/v2
API key:      (Studio → Settings → Generate API key)
Auth:         Authorization: Bearer sd_live_…

Admin can still create accounts at /admin for partner onboarding. Most writers should use /signup.

Required fields to go live

Drafts can be incomplete. To publish (studio or API), you need title, excerpt, meta description (≥40 chars), answer block (≥40 chars), cover image URL, and canonical URL.

POST https://www.signaldeskblog.com/wp-json/wp/v2/posts
Authorization: Bearer sd_live_…
Content-Type: application/json

{
  "title": "Your GEO headline",
  "content": "<p>Citation-ready body</p>",
  "status": "publish",
  "excerpt": "Short summary for cards and RSS",
  "featured_media_url": "https://cdn.example.com/cover.jpg",
  "meta": {
    "description": "Meta description for search and AI retrieval engines",
    "canonical_url": "https://www.signaldeskblog.com/posts/your-slug",
    "byline": "Alex Rivera",
    "answer_block": "A quotable extract engines can cite — at least forty characters.",
    "topics": ["ai-overviews", "citation-gaps"]
  }
}

Status flow: draftreview (WP pending) → scheduled (WP future) → publish. Rate limit: 30 posts per account per hour.

Publish webhook

Optional. Set a webhook URL in Studio → Settings. On transition to publish, Signal Desk POSTs:

{
  "event": "post.published",
  "post": {
    "id": 12,
    "slug": "your-slug",
    "title": "…",
    "excerpt": "…",
    "status": "publish",
    "url": "https://www.signaldeskblog.com/posts/your-slug",
    "publishedAt": "2026-07-20T14:00:00.000Z"
  },
  "publisher": { "id": 1, "slug": "your-slug", "name": "Your brand" }
}

If a webhook secret is set, requests include X-Signal-Desk-Signature: sha256=<hmac> over the raw body.