A webhook is an HTTP message sent from Spron to your receiving endpoint. Standard article deliveries contain event information and an article object.
Message example
This shortened example shows the main structure. Real deliveries contain more article fields.
{
"event": "article.ready",
"event_type": "publish_article",
"schema_version": "1.1",
"delivery_id": "11111111-1111-4111-8111-111111111111",
"operation": "create",
"publication": { "external_id": null, "published_url": null },
"article": {
"id": "22222222-2222-4222-8222-222222222222",
"title": "How to plan your first content month",
"content_html": "<p>Start with your customers' questions.</p>",
"meta_description": "A practical way to plan a month of useful articles.",
"slug": "plan-your-first-content-month",
"featured_image": null,
"images": []
}
}
Match content to your schema
| Spron field | Typical destination | Handling |
|---|---|---|
| article.id | spronId or external reference | Keep this stable and unique |
| article.title | title or name | Use the delivered title |
| article.content_html | HTML body | Convert it if your CMS expects blocks |
| article.meta_description | SEO description | Bind it to your page metadata |
| article.slug | slug | May be empty; keep a stable route for updates |
| article.featured_image | Cover image | May be empty; upload before its link expires |
| article.images | Media library and body images | Store permanent URLs and rewrite the body |
| article.structured_data | Page structured data | Render appropriately without duplicating existing markup |
| article.revision | Saved source revision | Prevent an older revision replacing a newer one |
Other fields include keyword, status, action, target_url, published_url, scheduled_date, timestamps and optional video information. See the connection's example and validate against the fields your receiver needs.
article.status describes Spron's article. Choose the destination's draft or publish behaviour in your receiver.
Create and update
event_type can be publish_article or update_article. Still look up article.id before writing; an update can arrive when your destination has no matching post.
Use delivery_id to recognise retries. delivery_record_id identifies Spron's delivery record; it is not the retry-deduplication key.
publication may contain the previously stored destination ID and public URL. Do not treat an absent URL as a reason to create a duplicate.
Reply to Spron
Return a successful HTTP status and a JSON object after saving the article:
{ "external_id": "post-123", "published_url": "https://example.com/blog/my-post" }
Only return published_url for an actual public HTTPS page. For a draft, omit it and return the external ID. An empty JSON object is also accepted, but gives Spron no public page to check.
These response rules apply to custom receivers. Zapier's acknowledgement does not report later publication.