Universal webhook for SEO blog autopublishing
If your site is not on a supported platform, the universal webhook covers it. Blogent sends a POST with JSON to your HTTPS endpoint; you accept the data, store the cover locally and answer {"posted": true}. Everything on this page — fields, HTML tags, shortcodes, the PHP example and the live tester — describes that one contract.
Universal integration: Blogent sends a POST with JSON to your endpoint. You accept the data and publish articles.
HTML tags that require styling
h1, h2, h3, h4
p, ul, ol, li, a, strong, img
table, thead, tbody, tr, th, td
details, summary
For <a>, make sure the rel and target attributes are supported.
.tldr - for the first p (can be styled with larger font size)
.faq-section - wrapper for <details> in FAQ
What you need
- HTTPS endpoint that accepts
POSTwithContent-Type: application/json. - Optional custom authorization header is supported: for example
Authorization: c0ef7fe65b75676c6d8a5807b. - Store images locally (the
imagefield is a temporary URL). - Return
{"posted": true}after successful publishing. - If publishing fails, return
{"posted": false, "message": "..."}, wheremessagebriefly explains the error reason. This makes troubleshooting much faster.
JSON payload
{
"image": "https://.../article.webp",
"image_category": "desert-tours",
"alias": "string-for-url",
"date": "0000-00-00 00:00:00",
"rubric": "category-slug",
"params": "key:value|value;key2:value;",
"author": {
"id": 7,
"identifiers": {"lovable": "cms-author-42"},
"name": "Olena Kovalenko",
"gender": "female",
"age": 37,
"position": "Head of Customer Success",
"description": "Works with customer onboarding and retention strategy."
},
"article": {
"en": {
"title": "text",
"alias": "string-for-url-en",
"preview": "html",
"meta_title": "text",
"meta_description": "text",
"reading_time_minutes": 7,
"toc": [
{
"title": "Main section",
"id": "main-section",
"children": [
{
"title": "Nested point",
"id": "nested-point",
"children": []
}
]
}
],
"text": "html"
}
}
}
Fields
rubric— category slug in your CMS.params— product attributes inkey=value1|value2;format (optional).alias— primary alias (slug) for backward compatibility.image— temporary cover URL; store the file locally/CDN before publishing.image_category— key for custom images; map it to your IDs (if enabled).author— optional selected company author with internal Blogentid, a platform-scopedidentifiersobject,name,gender,age,position, anddescription. Only the ID for the configured publishing platform is sent; the field is omitted when no author is configured.article— object with languages (e.g.en,uk). Each language includestitle,alias,preview(HTML),text(HTML),meta_title,meta_description,reading_time_minutes,toc(nested H2/H3/H4 anchors).
If you need product matching, pass attributes in params (format key=value1|value2;). Store the values in your CMS to filter the catalog or show recommendations.
In the dashboard webhook settings, you can optionally add any custom header pair. Example: Authorization + c0ef7fe65b75676c6d8a5807b. Blogent will include it in the webhook request headers.
Shortcodes
Blogent can automatically insert a shortcode into the article body so marketing or interactive blocks appear directly inside the content.
- In the SEO Blog dashboard, you specify one shortcode for the blog, for example
[contact-form]or[products_slider category="chairs"]. - During article generation, Blogent places this shortcode in a natural position in the middle of the content without breaking the article structure.
- Your website or CMS must process that shortcode and replace it with the final block: a form, CTA, promo code, product slider, banner, and so on.
- If the shortcode requires parameters, pass them in the format expected by your website or plugin.
- Marketing call to action:
[cta] - Discount promo code:
[promo_code] - Contact form:
[contact-form] - Product slider:
[products_slider] - Featured product selection:
[featured_products] - Banner or info widget:
[info_banner]
Shortcode names and parameters depend on your website. If shortcode support is not implemented yet, your developer needs to add the handler or install the relevant plugin.
PHP example
$data = json_decode(file_get_contents('php://input'), true);
if (json_last_error() === JSON_ERROR_NONE) {
$primaryAlias = $data['alias'] ?? '';
$date = $data['date'] ?? '';
$rubric = $data['rubric'] ?? '';
$params = $data['params'] ?? '';
$imageCategory = $data['image_category'] ?? '';
foreach ($data['article'] as $lang => $article) {
$title = $article['title'] ?? '';
$languageAlias = $article['alias'] ?? '';
$preview = $article['preview'] ?? '';
$text = $article['text'] ?? '';
$metaTitle = $article['meta_title'] ?? '';
$metaDescription = $article['meta_description'] ?? '';
$readingTimeMinutes = (int) ($article['reading_time_minutes'] ?? 0);
$toc = is_array($article['toc'] ?? null) ? $article['toc'] : [];
}
$imageUrl = $data['image'] ?? '';
if ($imageUrl) {
$imagePath = 'images/' . basename($imageUrl);
if ($image = @file_get_contents($imageUrl)) {
file_put_contents($imagePath, $image);
}
}
header('Content-Type: application/json');
echo json_encode(['posted' => true]);
}
Webhook tester
Send a test article to your endpoint and check how the CMS processes the data. Edit the JSON if needed.
What you get after connecting Webhook
- One contract works for any stack: the payload is plain JSON over HTTPS POST.
- A failure response carries a
message, so a broken publish explains itself instead of failing anonymously. - The payload includes everything an article needs: per-language title, alias, preview, HTML body, meta title, meta description, reading time and a nested table of contents.
- An optional custom authorization header protects the endpoint.
- A shortcode can be injected into the article body, so your own CTA, form or product slider appears inside the content.
- The live tester on this page checks your endpoint before you connect it to a real blog.
Requirements and compatibility
- Endpoint
- HTTPS endpoint that accepts
POSTwithContent-Type: application/json. - Authorization
- Optional custom header pair, configured in the dashboard webhook settings.
- Images
- The
imagefield is a temporary URL — store the file locally or on your CDN before publishing. - Success response
{"posted": true}after publishing has finished.- Failure response
{"posted": false, "message": "..."}, wheremessagebriefly explains the reason.
Frequently asked questions about the Webhook integration
What is the minimum my endpoint has to do?
Accept an HTTPS POST with JSON, publish every language inside article, save the cover from the temporary image URL, and return {"posted": true}.
Why return a message on failure?
Because {"posted": false, "message": "..."} tells you which article failed and why, which is far faster to troubleshoot than a bare error.
Can I secure the endpoint?
Yes. Add any custom header pair in the dashboard webhook settings, for example Authorization and a secret value, and Blogent will send it with every request.
What HTML do I need to style?
h1–h4, p, ul, ol, li, a, strong, img, tables, and details/summary. Also style .tldr for the first paragraph and .faq-section for the FAQ block.
Can I inject my own blocks into articles?
Yes. Configure one shortcode for the blog and Blogent places it at a natural position inside the article body; your site replaces it with the final form, CTA, promo code, slider or banner.