
Deel Contracts ContractTrigger
CertifiedContract Trigger
Deel Contracts ContractTrigger
Contract Trigger
Poll the Contracts endpoint and trigger on created, signed and terminated contracts. State (watermark and last-seen statuses) is persisted in the KV store so polls do not repeat events. Deel exposes no single canonical signed or terminated status, so the matching status sets are configurable.
type: io.kestra.plugin.deel.contracts.ContractTriggerExamples
Trigger on contract lifecycle events
id: contract_events
namespace: company.team
tasks:
- id: log
type: io.kestra.plugin.core.log.Log
message: "{{ trigger.event }}: {{ trigger.contract.title }} ({{ trigger.contract.status }})"
triggers:
- id: watch_contracts
type: io.kestra.plugin.deel.contracts.ContractTrigger
apiToken: "{{ secret('DEEL_API_TOKEN') }}"
interval: PT5M
events:
- created
- signed
- terminated
Installation
Our standard Docker images already include this plugin. If you use a -slim image or another setup, install it with the following command:
kestractl plugins get io.kestra.plugin:plugin-deel --compatible-for $KESTRA_VERSION For kestractl, use your Kestra version with --compatible-for, or specify an exact plugin version.
For Kestra CLI, replace LATEST with a specific version or version range to pin the plugin version.
Properties
apiToken *string
Deel API token
API token for authentication. Can be an organization token, personal token, or worker token.
allowConcurrent boolean
falseSpecifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.
apiVersion string
2026-01-01API version
API version header value. Defaults to 2026-01-01.
baseUrl string
https://api.letsdeel.com/restDeel API base URL
Base URL for the Deel API. Use https://api-sandbox.demo.deel.com/rest for sandbox environment.
events array
["created","signed","terminated"]createdsignedterminatedEvents to trigger on
Which contract events create executions.
interval string
PT5MdurationPolling interval
How often the Deel API is polled for new events.
signedStatuses array
["in_progress"]Signed statuses
Contract statuses treated as signed. Deel exposes no single signed status; defaults to in_progress.
stopAfter array
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTEDList of execution states after which a trigger should be stopped (a.k.a. disabled).
terminatedStatuses array
["terminated","cancelled","user_cancelled"]Terminated statuses
Contract statuses treated as terminated. Deel exposes no single terminated status.
when string
trueA condition that determines whether the trigger should run.
A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.
Outputs
contract object
Contract
The contract that caused the first event.
event string
Event type
The detected event: created, signed or terminated.
events array
Events
All detected events in this poll.
previousStatus string
Previous status
Contract status observed on the previous poll. Only set for signed and terminated events; the Deel API does not provide it, it is tracked from earlier polls.