Related to my previous post on Ghost webhooks (Documentation for Webhooks might be a bit outdated), I wanted to better understand how webhooks are triggered and what content is sent. So, I ran some simple scenarios and I noticed that the site.changed event was not working as I expected; the event keeps showing up in scenarios unrelated to the settings.
Also, for some changes in Settings, the same event was sent twice for changes made in:
- Design → Brand (Design → Site-wide seems OK)
- Membership
Here the logs after changing the site description:
ghost | [2023-02-03 20:28:18] INFO "PUT /ghost/api/admin/custom_theme_settings/" 200 61ms
ghost | [2023-02-03 20:28:18] INFO Triggering webhook for "site.changed" with url "http://host.docker.internal:
3000/site.changed"
ghost | [2023-02-03 20:28:18] INFO "POST /" 200 128ms
ghost | [2023-02-03 20:28:18] INFO "PUT /ghost/api/admin/settings/" 200 151ms
ghost | [2023-02-03 20:28:18] INFO "GET /members/api/member/" 204 1ms
ghost | [2023-02-03 20:28:18] INFO Triggering webhook for "site.changed" with url "http://host.docker.internal:
3000/site.changed"
ghost | [2023-02-03 20:28:18] INFO "GET /ghost/api/content/settings/?key=e078f293cc06dd83c8cc97f709&limit=all"
200 21ms
ghost | [2023-02-03 20:28:18] INFO "GET /ghost/api/content/newsletters/?key=e078f293cc06dd83c8cc97f709&limit=al
l" 304 25ms
ghost | [2023-02-03 20:28:18] INFO "GET /ghost/api/content/tiers/?key=e078f293cc06dd83c8cc97f709&limit=all&incl
ude=monthly_price,yearly_price,benefits" 304 32ms
Below are my other scenarios and the events that were sent to my custom integration, in case anyone is interested in those.
- Posts
- Drafts
- Create a new draft post:
site.changed
and post.added - Delete a draft post:
post.deletedandsite.changed
- Edit a draft post:
post.edited - Publish a draft post:
site.changed
, post.publishedandpost.edited - Add a tag to a draft post:
post.tag.attachedandpost.edited - Remove a tag from a draft post:
post.tag.detachedandpost.edited
- Create a new draft post:
- Published
- Edit a published post:
site.changed
, post.published.editedand post.published.edited` - Unpublish a published post:
site.changed
, post.unpublished,post.edited - Add a tag to a published post:
site.changed
, post.tag.attached,post.published.editedandpost.edited - Remove a tag from a published post:
site.changed
, post.tag.detached,post.published.editedandpost.edited
- Edit a published post:
- Drafts
- Pages
- Drafts
- Create a new draft page:
site.changed
and page.added - Delete a draft page:
page.deletedandsite.changed
- Edit a draft page:
page.edited - Publish a draft page:
site.changed
, page.publishedandpage.edited - Add a tag to a draft page:
page.tag.attachedetpage.edited - Remove a tag from a draft page:
page.tag.detachedetpage.edited
- Create a new draft page:
- Published
- Unpublish a published page:
site.changed
, page.unpublishedandpage.edited - Edit a published page:
site.changed
, page.published.editedandpage.edited - Add a tag to a published page:
page.tag.attachedandpage.edited - Remove a tag from a published page:
page.tag.detachedandpage.edited
- Unpublish a published page:
- Drafts
- Tags
- Public
- Create a new public tag:
tag.addedandsite.changed
- Edit a public tag:
tag.editedandsite.changed
- Delete a public tag:
tag.deleted,site.changed
- Create a new public tag:
- Internal
- Create a new internal tag:
tag.addedandsite.changed
- Edit a internal tag:
tag.editedandsite.changed
- Delete a internal tag:
tag.deletedandsite.changed
- Create a new internal tag:
- Public
- Members
- Create a new member: not tested
- Edit a member:
member.edited - Delete a new member:
member.edited
Setup information
Ghost Version
5.33.5
Node.js Version
v16.19.0
How did you install Ghost?
Docker
Provide details of your host & operating system
Windows 10
Database type
SQLite 3 (development)