Event

trigger.facebook_event
TriggerChat & messagingconnection requiredruns in-engine

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
Facebook
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.

FieldTypeRequiredDefaultConstraintsExample
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.
stringYes—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.
arrayNo["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.

FieldTypeExample
page_id
The Page the event happened on — Meta's `entry.id`.
string153590818059554
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.
stringfeed
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.
stringpost
verb
What happened to it: add, edited, remove, hide, unhide, block, mute. Empty where Meta sends none.
stringadd
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.
string153590818059554_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).
number1717070401
created_at
The same instant as an ISO-8601 UTC string, for nodes that want a date.
string2024-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.