A safe automation shape
- Candidate applies → notify a recruiting channel.
- Application enters interview stage → create a coordinator task.
- Interview completed → request a scorecard from the interviewer.
- Offer accepted → notify the hiring team.
Configure a workflow
1
Open Automations
Select Automations in the left sidebar and choose New workflow.
2
Choose a trigger
Select a supported trigger event:
3
Add conditions
Narrow the trigger with conditions:
- Job — only fire for a specific job or department.
- Stage — only fire when entering a specific pipeline stage.
- Status — only fire when a field has a specific value.
- AI score — after an
ai_scoreaction, branch onai.scoresuch asai.score < 50orai.score >= 80.
4
Configure an action
Choose an action:
HTTP actions support workspace secret references so credentials do not appear
in workflow payloads. Outbound requests use the same SSRF protections as
webhooks — loopback, private, and metadata addresses are blocked.
5
Preview and enable
Use the Test tab to choose a candidate, set a reproducible virtual start, and
configure synthetic results for each action or wait. You can inspect the
visited path, skipped branches, wait time, provider reference, failures, and
uncertain outcomes. Simulation never sends messages, calls webhooks, or
changes domain records. Run the workflow preview to confirm the trigger and
action match your intent.
Enable the workflow. It begins processing new events immediately.
Ordered document signing
For a multi-signer document, place at least one required signature field for each signer and assign every field to a signer before sending. Harly activates only signer 1 initially. After that signer completes, the next recipient is activated transactionally and receives a new capability through the durable email outbox. Intermediate PDF versions and evidence are retained; the document remainspending and an automation wait does not continue until the
last required signer completes.
Reliability and run history
Each run records:- The trigger event that fired it
- The conditions that matched
- The action configuration
uncertain instead of retrying blindly. An authorized operator can
open that step in run history, verify the provider, record success or failure,
add a required reconciliation note, and optionally provide a provider reference
and JSON output. The resolver updates the persisted attempt and resumes v2
without calling the provider again; this decision is also written to the audit
log.
- The result (success, failure, or skipped)
- The error message if it failed
HTTP action details
The HTTP action sends a request to the configured URL with a JSON payload matching the trigger event’s schema. It adds anIdempotency-Key derived from
the durable workflow effect unless you provide one yourself. Configure a
secret to verify the request:
2xx within 10 seconds. Failed requests are retried
by the scheduler using the durable webhook policy. The same event ID and
delivery ID are retained across retries so receivers can deduplicate safely.
Inbound webhook trigger
Use the Inbound webhook received trigger when another system should start a workflow. Create the endpoint from the workflow’s block library or its server-side action. Harly shows the URL and signing secret once; store both in the sending system’s secret manager. Disabling an endpoint immediately stops new runs without changing the published workflow graph. Send a JSON object with these headers:eventId
or id inside the signed body is used when present, otherwise Harly hashes the
body. The timestamp must be within five minutes of Harly’s clock. The request
must use application/json or an application/*+json content type and stay
within 256 KiB. Harly authenticates the HMAC before parsing JSON, then validates
the object against the endpoint’s JSON Schema Draft 7 payload rules. Configure
and edit those rules in the trigger inspector; {} accepts any JSON object.
A schema mismatch returns 422 and creates no receipt or workflow event.
X-Event-Id (or X-External-Event-Id) is both signed and used as the
idempotency key. Reusing an ID with a different payload is rejected as a
conflict. A new request returns 202, while an already accepted duplicate
returns 200 and does not create a second workflow event. The trigger payload
contains endpointId, externalEventId, and the original JSON under
payload.
Next steps
Webhooks
Subscribe to domain events from external systems.
API overview
Build richer integrations against the Harly API.
Notifications
Connect Slack, Discord, and Telegram.
Tasks and scorecards
The task model automations create work for.