Workflows

Intake Relay provides an event-driven workflow layer for processing structured intake submissions. It is not a visual workflow builder — it is a webhook form system with reliable delivery and audit logging.

Event model

Event Trigger
intake.submitted Validated intake stored
intake.updated Reserved for future use

List registered events:

export BASE="https://willowriverautomation.com/relay"

curl "$BASE/v1/events"

Submission pipeline

POST /flows/{id}/intake
        │
        ▼
  Validate against FlowVersion schema
        │
        ▼
  Evaluate conditionals + computed fields
        │
        ▼
  Store IntakeSubmission
        │
        ▼
  Log intake.validated event
        │
        ▼
  Emit intake.submitted
        │
        ▼
  Queue webhook deliveries (async)
        │
        ▼
  Retry worker processes failures

Event logging

Every submission has an audit trail:

curl "$BASE/v1/intake/$INTAKE_ID/events" \
  -H "Authorization: Bearer $API_KEY"
{
  "events": [
    { "event_type": "intake.validated", "payload": { "field_count": 3 } },
    { "event_type": "workflow.webhook_queued", "payload": { "event": "intake.submitted" } }
  ]
}

Idempotency

Clients can pass Idempotency-Key on intake submission. Safe for retries from mobile apps or unreliable networks.

Webhook handlers should also deduplicate using intake_id.

Extending workflows

Register webhooks on intake.submitted to forward submissions to your backend, CRM, or automation tools (Zapier, Make, n8n). Your handler receives a signed JSON payload with the validated intake data.

For multi-step automation, chain services in your webhook handler or use a queue worker that deduplicates on intake_id.

Comparison to Zapier

Intake Relay Zapier
Intake validation Built-in schema engine External
Versioning Immutable flow versions None
Embed Native SDK iframe/link
Target user Developers building SaaS No-code operators

Use Intake Relay as the structured intake API layer; optionally forward webhooks to Zapier for no-code ops workflows.