webhook() configurations reconcile to hosted webhook records.
The local veryfront webhook run command applies the same payload limit,
filter, and prompt-template semantics to a fixture before it executes the
project target.
Characteristics
- The webhook owns event acceptance, filtering, and target selection.
- A filtered event is ignored and does not start its target.
- The target owns retries, durable execution, tools, and business behavior.
- The webhook definition never owns the HTTP provider’s signing or retry protocol.
Payload boundary
A webhook payload must be data-only JSON whose serialized form is no larger than 64 KiB. Nullish input becomes an empty object. Accessors, custom prototypes, sparse arrays, cycles, non-finite numbers, and unsupported values fail before local target discovery. Target input follows the hosted run model:- A task receives an object payload as its task configuration. A primitive
payload is available under
payload. - A workflow receives
{ payload }. - An agent receives the rendered prompt and an isolated
payloadvalue in its forwarded context.
Event filters
Filter paths are dot-separated object paths such aspull_request.state. A path can select an array as its final value, but paths
do not traverse through array indexes.
all requires every condition; any requires at least one. An empty
condition collection matches every payload. The supported comparisons are:
Agent prompt mapping
Agent targets requireagentMessage.promptTemplate. Use {{payload}} for the
pretty-printed complete payload or {{payload.dot.path}} for one nested value:
Agent conversation addressing
Conversation addressing belongs on the target.conversationMode may be
create_new, existing, or none, and existing requires a conversationId
UUID on the target. none is the default, and it is the wrong choice for an
agent that delegates: invoke_agent needs a hosted conversation to attach the
child run to. Local runs execute standalone and therefore reject attempts to
attach to an existing cloud conversation.
agentMessage.conversationMode and agentMessage.conversationId are the
legacy location for the same pair. They still work unchanged, and they are
removed in the next major release.
Declaring the pair in both places with the same value is accepted. That is how
one definition spans a platform upgrade: a hosted platform that predates
target-level addressing reads agentMessage, a platform that reads the target
reads the target, and both find the value you wrote.
webhook() rejects a disagreement with
webhook-config-invalid instead of choosing a winner, because honoring one
copy would detach the deployed webhook from the conversation the other copy
names.
For API details, see
veryfront/webhook.