Where articles can go
| Target | What you create | How Demander publishes |
|---|---|---|
| Demander-hosted blog | Nothing | Posts under Demander’s public address with an index, sitemap.xml, rss.xml, canonical URLs, JSON-LD and the tracker |
| WordPress 5.6 or later | An application password for a user who can publish posts | REST API: categories and tags found or created, cover uploaded with alt text, native scheduling; take-down returns the post to draft |
| Webflow | A site token with CMS read and write access, and the blog collection id | Data API v2 with your field mapping; Demander schedules the publish itself |
| Ghost 5 or later | A custom integration and its Admin API key | Admin API from HTML, the call to action as an HTML card, JSON-LD through code injection, native scheduling |
| HubSpot CMS | Nothing new: your HubSpot connection with the content scope, plus the blog id | CMS v3 blog posts, tags found or created, draft then push live, native scheduling |
| GitHub (Hugo, Jekyll, Astro, Next.js) | A fine-grained token for the one repository | Markdown with front matter for your framework, committed to the branch or opened as a pull request |
| Webhook (any site) | An https endpoint and a shared secret | Signed JSON with HTML, Markdown, JSON-LD and the post’s metadata |
From draft to live post
-
Drafted from your plan
Topic ideas come per persona and funnel stage. Drafts use only facts from your product profile and approved claims, and an SEO pass adds an FAQ and JSON-LD. More in blog and landing pages.
-
Approved through the gate
Publishing is an action like any other change. It needs autonomy level 3 to run on its own, so on Scale it can, and on Starter and Growth a person approves it. A future publish time is stored and run at that time.
-
Checked again at publish
The copy passes the writing rules once more right before it goes out, and nothing is published while management is suspended.
-
Promoted
After the first publish Demander schedules organic posts that link to the article and a nurture e-mail that points to it, and awareness campaigns can land on it.
-
Reversible
Take-down returns the post to a draft on your site and cancels promotion posts that have not gone out yet.
What a webhook target receives
POST /your-endpoint HTTP/1.1
Content-Type: application/json
X-Demander-Event: blog.published
X-Demander-Delivery: <unique id>
X-Demander-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">
{ "event": "blog.published", "id": "…", "status": "…", "title": "…", "slug": "…",
"excerpt": "…", "metaDescription": "…", "html": "…", "markdown": "…", "markdownFile": "…",
"tags": […], "categories": […], "author": "…", "coverImageUrl": "…", "coverAlt": "…",
"faq": […], "cta": {…}, "jsonLd": {…}, "publishedAt": "…" }
Shortened. Events are blog.published, blog.updated and blog.unpublished. Recompute the HMAC with the shared secret, compare in constant time and reject timestamps older than five minutes. A 2xx answer may return the post’s id and URL on your side.
Tracking what articles do
-
01
One URL per publication
Each publication stores the target, the external id and the public URL, and updates go to the same item.
-
02
Reads become touches
The tracker matches page views by that path and by blog UTM links, and records them as blog touches on the account timeline with the article’s persona, stage and message.
-
03
Reads feed scoring and nurture
An identified account that reads a post gets a signal that counts toward its score and the nurture list it belongs on.
Credentials and safety
No CMS needs an app review. Each workspace connects its own site under Integrations, Blog publishing, and the credentials are stored encrypted like every integration. Every outbound call goes through Demander’s SSRF-guarded client, so a webhook target must be a public https address.
Questions people ask
Can I review the post on my own site before it goes live?
Yes. Save it as a draft on the target first, check it there, then publish from Demander.
Where does the hosted blog live?
At Demander’s public address under /v1/public/blog/, with your blog slug, its own index, sitemap.xml and rss.xml. Its canonical URLs use that address, so moving the posts to your own domain later changes their URLs.
We use a CMS that is not listed. Can we still publish?
Use the webhook target. Your endpoint receives the title, slug, HTML, Markdown with front matter, excerpt, meta description, tags, categories, cover URL, JSON-LD and publish time, signed with your shared secret.
Do we need HubSpot Content Hub for HubSpot CMS?
Your portal needs a blog, which comes with Content Hub or a Marketing Hub tier that includes one. Without it HubSpot refuses the publish.