Event
Subscribes the tenant's Meta app to the Page fields you pick on publish and starts one run per change, verified against Meta's X-Hub-Signature-256.
Start a run when a Facebook Page you administer emits an event — a new post or comment, a mention, a rating, a Messenger message, a profile edit.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Bearer token
- Providers
- Secret shape
- {"access_token", "app_id", "app_secret"}
- Resolved by
- config.connection_id, else node.connection_id
- Note
- Three values, and they are not interchangeable. The Page access token (with pages_manage_metadata and pages_show_list, plus the read permission each field needs — pages_read_engagement for feed, pages_messaging for Messenger) subscribes the Page; the app id owns the webhook subscription; the app secret is what every delivery is signed with. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to an https URL Meta can reach — Meta refuses a callback it cannot validate.
Configuration
2 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
page_id The numeric id of the Page to watch — from the Page's About panel, not its @username. Every subscribed field on this Page starts a run. | string | Yes | — | matches ^\d{5,}$ | 153590818059554 |
fields Page webhook fields to subscribe to. Any field Meta publishes on the page object is accepted, not only the ones listed; each one that fires starts a run. | array | No | ["feed"] | 1–64 characters; array of string | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"fields": [
"feed"
],
"page_id": "153590818059554"
}Output
One shape.
facebook page event
One change from one Page. `value` carries Meta's own payload, whose keys differ per field, so the shape is open below the declared fields.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
page_id The Page the event happened on — Meta's `entry.id`. | string | 153590818059554 |
field The Page webhook field that delivered this event, e.g. feed or mention. Branch on it when the trigger subscribes to more than one. | string | feed |
item What the change was about on a feed event — post, comment, reaction, share, status, photo, video. Empty on fields that do not carry one. | string | post |
verb What happened to it: add, edited, remove, hide, unhide, block, mute. Empty where Meta sends none. | string | add |
object_id The most specific id the change carries — the comment id where there is one, else the post/video/photo id, else the Messenger message id. Part of the idempotency key. | string | 153590818059554_10159876543210 |
sender_id Whoever caused the event: the poster's or commenter's Page-scoped id, or the Messenger sender. Empty when Meta withheld it. | string | — |
sender_name That person's display name where Meta sent one. | string | — |
message The post, comment or Messenger message text, when the event carries one. Empty on profile-field and status changes. | string | — |
time When Meta raised the notification, epoch seconds (a Messenger event's millisecond timestamp is converted, so this always means seconds). | number | 1717070401 |
created_at The same instant as an ISO-8601 UTC string, for nodes that want a date. | string | 2024-05-30T12:00:01Z |
value Meta's own change value (or the Messenger item), verbatim — its keys depend on the field, which is why this shape is open. | object | — |
payload The whole entry the event arrived in: its Page id, Meta's `time`, and every change or messaging item it carried. | object | — |
{
"created_at": "2024-05-30T12:00:01Z",
"field": "feed",
"item": "post",
"message": "It's Thursday and I want to eat cake.",
"object_id": "153590818059554_10159876543210",
"page_id": "153590818059554",
"payload": {
"changes": [],
"id": "153590818059554",
"time": 1717070401
},
"sender_id": "1234567890",
"sender_name": "Cinderella Hoover",
"time": 1717070401,
"value": {
"created_time": 1717070400,
"from": {
"id": "1234567890",
"name": "Cinderella Hoover"
},
"is_hidden": false,
"item": "post",
"message": "It's Thursday and I want to eat cake.",
"post_id": "153590818059554_10159876543210",
"verb": "add"
},
"verb": "add"
}Notes
- Meta keeps one webhook callback URL per app per object type, so one Meta app can serve only one published Page workflow. A second publish is refused rather than silently repointing the first one's deliveries.
- Meta validates the callback with a GET carrying hub.challenge. Mantle's provider ingress answers POST only, so registration fails with Meta's "URL couldn't be validated" until that route serves GET.
- Every delivery is verified against X-Hub-Signature-256, an HMAC-SHA256 over the raw body keyed on the app secret; an unsigned or mis-signed POST is refused with 401 before any run starts.
- Lead ads have their own trigger (trigger.facebook_lead), which emits the lead's ids and documents the leads_retrieval permission.
- Unsubscribing removes only the fields this trigger added, so a sibling trigger on the same Page keeps working after this workflow is disabled.
Related Facebook nodes
See Event run in a workflow.
In a technical demo we add the Facebook connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.