> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudify.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Lighthouse Flows

> Reliable webhook management — route, filter, transform, and deliver payloads from any trigger to one or multiple targets.

**Lighthouse Flows** is your webhook management layer inside Lighthouse. It receives incoming webhook payloads, applies filtering and transformation rules, and delivers the data reliably to one or more target endpoints.

<Frame caption="Lighthouse Flows — webhook routing from trigger to target">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-173604.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=add54c26ba9a4bc2d5c206e3995a8cd7" alt="Screenshot 2026 07 09 173604" width="1393" height="358" data-path="images/Screenshot-2026-07-09-173604.jpeg" />
</Frame>

<Note>
  Lighthouse Flows handles **webhook routing and delivery**. It is separate from your integration workflows — Flows focuses on where data goes and how it gets there, not on the business logic that transforms it.
</Note>

***

## How It Works

Every Flow is built on three layers that work in sequence.

<CardGroup cols={3}>
  <Card title="1. Trigger" icon="zap">
    Receives the incoming webhook payload. Validates the signature and accepts the event into the Flow.
  </Card>

  <Card title="2. Flow" icon="filter">
    Applies your rules — filter which payloads pass through, transform the data shape, and configure retry and rate-limiting behaviour.
  </Card>

  <Card title="3. Target" icon="send">
    Delivers the processed payload to one or more HTTP endpoints — securely and reliably.
  </Card>
</CardGroup>

***

## Triggers

The Trigger layer is where your Flow begins. It listens for incoming webhook events and validates them before they enter the pipeline.

<CardGroup cols={2}>
  <Card title="Webhook-based Triggers" icon="webhook">
    Accepts real-time data through webhook inputs. Any system that can send an HTTP POST can act as a trigger source.
  </Card>

  <Card title="Signature Validation" icon="shield-check">
    Verifies the authenticity of each incoming payload — ensuring only legitimate events enter your Flow.
  </Card>

  <Card title="Multiple Trigger Types" icon="layers">
    Supports webhook, polling, and schedule trigger types to match different source systems and use cases.
  </Card>

  <Card title="Custom Headers" icon="code">
    Add custom headers to your trigger configuration for source systems that require specific authentication or metadata fields.
  </Card>
</CardGroup>

***

## Flows

The Flow layer sits between your trigger and your targets. This is where you control what data passes through, how it's shaped, and how delivery failures are handled.

<CardGroup cols={2}>
  <Card title="Payload Filtering" icon="filter">
    Use Google's CEL (Common Expression Language) to write filter conditions — only payloads that match your rules are passed to the target. Irrelevant events are dropped before delivery.
  </Card>

  <Card title="Data Transformation" icon="shuffle">
    Modify payloads before they reach the target — add calculated fields, reformat values, or restructure the JSON shape to match what your target expects.
  </Card>

  <Card title="Retry Strategies" icon="rotate-cw">
    Configure how failed deliveries are retried. Choose between **linear** back-off (fixed intervals) or **exponential** back-off (increasing intervals) to handle temporary target unavailability.
  </Card>

  <Card title="Rate Limiting" icon="gauge">
    Cap the delivery rate to protect downstream systems from overload. Set limits per second, minute, hour, or day to match your target's capacity.
  </Card>
</CardGroup>

***

## Targets

The Target layer defines where your processed payload is delivered. You can route a single trigger to multiple targets simultaneously.

<CardGroup cols={2}>
  <Card title="HTTP Endpoints" icon="globe">
    Configure any HTTP endpoint as a delivery target. Supports standard REST endpoints that accept POST requests.
  </Card>

  <Card title="Multiple Destinations" icon="git-fork">
    Send the same payload to multiple targets from a single trigger — useful when the same event needs to reach more than one system.
  </Card>

  <Card title="Secure Delivery" icon="lock">
    All payloads are delivered over encrypted connections. Data in transit is protected from origin to destination.
  </Card>

  <Card title="Response Handling" icon="arrow-left-right">
    Lighthouse Flows captures and processes responses from your target endpoints, giving you visibility into delivery outcomes.
  </Card>
</CardGroup>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="How is Lighthouse Flows different from Workflows?">
    **Workflows** execute your integration business logic — they read data from a source app, transform it, and write it to a destination app (e.g. HubSpot deal → Xero invoice).

    **Flows** handle webhook routing and delivery. They receive a raw webhook payload, apply filtering and transformation rules, and deliver it to HTTP targets — without executing integration logic. Use Flows when you need to fan-out, filter, or reliably relay webhook events between systems.
  </Accordion>

  <Accordion title="What is CEL and how do I use it for payload filtering?">
    CEL (Common Expression Language) is an open-source expression language developed by Google. In Lighthouse Flows, you write CEL expressions to define which incoming payloads should pass through to the target. Contact Cloudify if you need help writing filter expressions for your use case.
  </Accordion>

  <Accordion title="What happens if delivery to a target fails?">
    Lighthouse Flows retries the delivery according to the retry strategy configured in your Flow — either linear or exponential back-off. If all retries are exhausted, the delivery failure is logged and visible in Events History.
  </Accordion>

  <Accordion title="Can I send the same webhook to more than one target?">
    Yes. A single Flow can have multiple targets configured. The same payload — after filtering and transformation — is delivered to all targets.
  </Accordion>

  <Accordion title="How do I set up a new Flow?">
    Navigate to **Flows** in the Lighthouse sidebar. Click **Get Started** or **New Flow** to begin configuration. You will need to define your Trigger, configure any Flow rules, and add at least one Target. Contact Cloudify if you need assistance setting up your first Flow.
  </Accordion>

  <Accordion title="What trigger types does Lighthouse Flows support?">
    Lighthouse Flows supports three trigger types: **Webhook** (real-time push from an external system), **Polling** (Lighthouse pulls data from an external API on a schedule), and **Schedule** (a time-based trigger using AWS EventBridge rate or cron expressions).
  </Accordion>
</AccordionGroup>

***

## Next Steps

<CardGroup cols={3}>
  <Card title="Flows Requests" icon="clock" href="/flows-requests">
    View every inbound request received by your Flow triggers.
  </Card>

  <Card title="Flows Events" icon="list" href="/flows-events">
    Track the delivery outcome of every event processed through your Flows.
  </Card>

  <Card title="Polling" icon="radio" href="/polling">
    Configure scheduled API polling for source systems that don't support webhooks.
  </Card>

  <Card title="Schedule" icon="clock" href="/schedule">
    Set up time-based triggers using rate or cron expressions.
  </Card>

  <Card title="Support" icon="headset" href="/support">
    Contact Cloudify to set up a new Flow or get help with filtering and transformation rules.
  </Card>
</CardGroup>
