content_published webhook to the URL you configured. Use it to push the
published article to your CMS, or to trigger downstream automations
(dashboards, tasks, notifications) — no polling, no copy-paste.
content_published fires after publication (the editor decided the content
is live). It is separate from the Send to CMS webhook
(content_staged), which pushes a draft to your CMS before publication.
Both can be configured on the same workspace.Prerequisites
- An HTTPS endpoint reachable from the public internet — either your own, or a scenario URL from a no-code platform (Make, Zapier, N8n).
- A workspace where you can reach Settings (to add the webhook).
How it works
1
Add the webhook in Semji
In the app, go to Settings > General, click Add a Webhook, and paste
your endpoint (or automation scenario) URL.
2
An editor marks a content as published
They fill in the publication URL and date (backdating works, in the app and
via the API’s
publishedAt).3
Semji POSTs the content_published event
A single
POST with the content payload lands on your endpoint. Respond with
a 2xx immediately and process asynchronously.The payload Semji sends
content_published payload
string
Always
content_published for this webhook.object
The published content and its context:
title, sanitized html, plain text,
meta_description, content_score, words_count, published_at,
published_by, content_status, page (with the live url),
page_focus_keyword (with search_volume), plus workspace and organization.
IDs are 12-char public IDs.data.htmlis already sanitized — editor annotations are stripped, it is equivalent to the API’shtmlSanitizedfield. Push it to your CMS as-is.data.idis the content ID, directly usable withGET /v1/contents/{contentId}.- Delivery is a single POST — no signature, no retry on failure. Respond
2xximmediately and process asynchronously.
No-code templates
Prefer not to write code? Import one of these ready-made scenarios and point it at WordPress (adapt the CMS step for another platform):Make template
A Make scenario that receives the webhook and creates the post in WordPress.
N8n WordPress template
An N8n workflow with a POST webhook trigger that routes the content to WordPress.
Use cases
- Publish or update the article in your CMS (WordPress, Contentful, Webflow…).
- Auto-populate a Google Sheets dashboard with the SEO metrics.
- Create a follow-up task (Asana, Jira) for the marketing team.
- Notify a Slack or Teams channel on publication.
- Cross-post to social (X, LinkedIn).
Troubleshooting
My endpoint never receives anything
My endpoint never receives anything
Check the webhook URL in Settings > General, and that an editor actually
clicked Mark as published (the event only fires on publication). The URL
must be a public HTTPS endpoint reachable from Semji.
I got the event but the content looks wrong or missing
I got the event but the content looks wrong or missing
Delivery is a single unsigned POST — treat it as a trigger and re-fetch the
content with
GET /v1/contents/{contentId}
using your API key before writing to your CMS.Related
- Send to CMS webhook — push a draft to
your CMS before publication (
content_staged). - Sync drafts to your CMS — the pull-based publishing flow, and when to prefer it over this webhook.
- Authentication — API keys for re-fetching content.