> ## 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.

# Polling

> Configure automated API polling — pull data from external systems on a schedule without waiting for a webhook push.

The **Polling** page lets you set up scheduled API polling inside Lighthouse Flows. Instead of waiting for an external system to push data, a polling configuration calls an external API at regular intervals and pulls data automatically.

<Frame caption="Polling Configurations — summary counters and configuration list">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-174147.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=3fd1250d9a4b36791a0eedc3f7958941" alt="Screenshot 2026 07 09 174147" width="1558" height="660" data-path="images/Screenshot-2026-07-09-174147.jpeg" />
</Frame>

<Note>
  Use polling when your source system does not support outbound webhooks. If it can push data to Lighthouse in real time, use a webhook trigger instead — it's more efficient.
</Note>

***

## Summary Counters

Three counters at the top show the current state of your polling configurations at a glance.

<CardGroup cols={3}>
  <Card title="Total Configurations" icon="cassette-vhs">
    All polling configurations on your account — active and disabled combined.
  </Card>

  <Card title="Active" icon="circle-check">
    Configurations currently running on their schedule. Shown in **green**.
  </Card>

  <Card title="Disabled" icon="circle-x">
    Configurations that exist but are not currently running. Shown in **orange**. These will not poll until re-enabled.
  </Card>
</CardGroup>

***

## All Polling Configurations

The table lists every configuration on your account. Click any row to view or edit it.

| Column       | What It Shows                            |
| ------------ | ---------------------------------------- |
| **Name**     | The label for this polling configuration |
| **Status**   | Active (running) or Disabled (paused)    |
| **Schedule** | How often the API is polled              |
| **Created**  | When the configuration was first created |
| **Updated**  | When it was last modified                |

Use the **Filter name...** field to search by name. Click **View** to toggle visible columns.

***

## Creating a New Polling Configuration

Click **+ New Polling Config** in the top-right corner. The creation form has four sections — work through them top to bottom.

***

### 1. Polling Details

<Frame caption="Create Polling Configuration — Polling Details section">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-174249.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=cdd429f3868ada02ef481c6fd0d1023b" alt="Screenshot 2026 07 09 174249" width="1531" height="790" data-path="images/Screenshot-2026-07-09-174249.jpeg" />
</Frame>

| Field           | Required | Description                                                          |
| --------------- | :------: | -------------------------------------------------------------------- |
| **Name**        |     ✅    | A descriptive label — e.g. `Daily Customer Sync`                     |
| **Connection**  | Optional | Select an existing connection to use for authentication              |
| **Template ID** | Optional | Start from a pre-configured template if one exists for your use case |

The **Enabled** toggle in the top-right activates the configuration immediately after creation.

***

### 2. Schedule Configuration

Set how often Lighthouse should call the external API.

<Frame caption="Schedule Configuration — Quick Setup with preset intervals">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-174327.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=f5036756faaa0e409b0edac0e2446108" alt="Screenshot 2026 07 09 174327" width="1348" height="328" data-path="images/Screenshot-2026-07-09-174327.jpeg" />
</Frame>

Two modes are available:

<CardGroup cols={2}>
  <Card title="Quick Setup" icon="zap">
    Choose from preset intervals — **Every 5 min**, **Every 15 min**, **Every 30 min**, **Every hour**, **Every 6 hours**, or **Daily**. The current schedule expression is shown at the bottom of the panel.
  </Card>

  <Card title="Advanced" icon="code">
    Enter a custom expression directly — supports `rate()` and `cron()` syntax for precise scheduling.
  </Card>
</CardGroup>

<Frame caption="Schedule Configuration — Advanced mode with custom expression input">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-181323.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=f14be9f739da857b52b559a3e93678bf" alt="Screenshot 2026 07 09 181323" width="1362" height="346" data-path="images/Screenshot-2026-07-09-181323.jpeg" />
</Frame>

**Advanced expression examples:**

| Expression           | What It Does              |
| -------------------- | ------------------------- |
| `rate(5 minutes)`    | Run every 5 minutes       |
| `cron(0 12 * * ? *)` | Run daily at 12:00 PM UTC |
| `0 */6 * * *`        | Run every 6 hours         |

***

### 3. HTTP Request Configuration

Define the API endpoint Lighthouse should call on each poll.

<Frame caption="HTTP Request Configuration — Structured mode with endpoint URL and method">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-181354.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=1f5f2f77ca5b5a69160d67480c9355e7" alt="Screenshot 2026 07 09 181354" width="1341" height="657" data-path="images/Screenshot-2026-07-09-181354.jpeg" />
</Frame>

Two modes are available:

<CardGroup cols={2}>
  <Card title="Structured" icon="list">
    Fill in the endpoint URL, HTTP method, headers, query parameters, authentication, and request body using form fields.
  </Card>

  <Card title="Custom Code" icon="code">
    Write a JavaScript handler function directly — full control over how the request is made and how the response is processed.
  </Card>
</CardGroup>

<Frame caption="HTTP Request Configuration — Custom Code mode">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-181435.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=cc651f5dc901c8ba4dc1e3f1df83d21f" alt="Screenshot 2026 07 09 181435" width="552" height="220" data-path="images/Screenshot-2026-07-09-181435.jpeg" />
</Frame>

**Structured mode fields:**

| Field                | Required | Description                                                                       |
| -------------------- | :------: | --------------------------------------------------------------------------------- |
| **API Endpoint URL** |     ✅    | The full URL of the API endpoint to poll — e.g. `https://api.example.com/v1/data` |
| **HTTP Method**      |     ✅    | `GET`, `POST`, `PUT`, `DELETE`, or `PATCH`                                        |
| **HTTP Headers**     | Optional | Custom headers — e.g. `Content-Type`, `Accept`                                    |
| **Query Parameters** | Optional | URL query parameters appended to the endpoint                                     |
| **Authentication**   | Optional | Configure how to authenticate — defaults to No Authentication                     |
| **Request Body**     | Optional | JSON payload for `POST`, `PUT`, or `PATCH` requests                               |

<Frame caption="Request Configuration — headers, query parameters, authentication, and request body">
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-181520.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=d2fd2ec852ea50b61b0aca019598e458" alt="Screenshot 2026 07 09 181520" width="1338" height="733" data-path="images/Screenshot-2026-07-09-181520.jpeg" />
</Frame>

***

### 4. Response Parser, Retry Logic, Pagination & Filter

<Frame>
  <img src="https://mintcdn.com/cloudify-c7720744/k7T2QkKhrFTfYSro/images/Screenshot-2026-07-09-181555-1.jpeg?fit=max&auto=format&n=k7T2QkKhrFTfYSro&q=85&s=b9f2ba287427b4922c28a7a45dd1b370" alt="Screenshot 2026 07 09 181555 1" width="1342" height="550" data-path="images/Screenshot-2026-07-09-181555-1.jpeg" />
</Frame>

| Section                        | Type     | What It Does                                                                                                                                                             |
| ------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Response Parser**            | Always   | Extract specific data from the API response using a JSON Path — e.g. `data.items`. Add Custom Logic (JavaScript) to transform the response before it's passed downstream |
| **Retry Logic**                | Optional | Automatically retry failed poll attempts. Toggle on to configure retry behaviour                                                                                         |
| **Pagination**                 | Optional | Handle multi-page API responses — toggle on when the API returns paginated results                                                                                       |
| **Incremental Polling Filter** | Optional | Only process records that are new or updated since the last poll — prevents reprocessing the same data                                                                   |

Click **Create Configuration** to save, or **Cancel** to discard.

<Info>
  Contact Cloudify before creating a polling configuration. Getting the endpoint URL, authentication, schedule, and response parser correct requires knowledge of your source API. Cloudify will typically configure these as part of your integration delivery.
</Info>

***

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="When should I use polling instead of a webhook?">
    Use polling when your source system cannot push data to Lighthouse when something changes. If it supports webhooks, use a webhook trigger instead — it's real-time and more efficient.
  </Accordion>

  <Accordion title="A polling configuration shows Disabled — will it still run?">
    No. A disabled configuration will not execute until it is re-enabled. Contact Cloudify if a configuration is unexpectedly disabled.
  </Accordion>

  <Accordion title="What is the difference between Quick Setup and Advanced scheduling?">
    Quick Setup gives you six preset intervals in one click. Advanced lets you write a custom `rate()` or `cron()` expression for precise timing — for example, running only on weekdays at a specific time.
  </Accordion>

  <Accordion title="What is the Incremental Polling Filter for?">
    It ensures only new or updated records are processed on each poll — so if your API returns 1,000 records but only 5 are new, only those 5 are passed downstream. This prevents duplicate processing.
  </Accordion>

  <Accordion title="How do I check what events a polling configuration has generated?">
    Go to **Flows Events** and filter by **Type → polling**. This shows all events generated by polling triggers with their delivery status and attempt history.
  </Accordion>
</AccordionGroup>

***
