Triggers

Understand the different trigger types in ThinkFleet: webhooks, schedules, and app triggers.

5 min readBuilding Flows

Triggers

A trigger is the first step of every flow. It defines the event that starts your automation. ThinkFleet supports three categories of triggers: webhooks, schedules, and app triggers.

Webhook Triggers

Webhook triggers fire when an HTTP request is sent to a unique URL generated by ThinkFleet.

Setup

  1. Add a Webhook trigger to your flow
  2. Copy the generated webhook URL
  3. Configure the external system to send events to this URL

Webhook URL Format

https://your-instance.thinkfleet.com/api/v1/webhooks/{flowId}

Supported Methods

Webhook triggers accept POST, GET, and PUT requests. The trigger captures:

Field Description
body The request body (parsed as JSON if Content-Type is application/json)
headers All request headers
queryParams URL query parameters

Example: Receiving a GitHub Webhook

Configure GitHub to send push events to your webhook URL:

{
  "ref": "refs/heads/main",
  "repository": {
    "full_name": "myorg/myrepo"
  },
  "commits": [
    {
      "message": "Fix login bug",
      "author": { "name": "Jane Doe" }
    }
  ]
}

Access this data in subsequent steps:

{{trigger.body.repository.full_name}}  → "myorg/myrepo"
{{trigger.body.commits[0].message}}    → "Fix login bug"

Webhook Security

To verify that requests are genuinely from the expected source:

  • Shared Secret: Many services (GitHub, Stripe) sign webhook payloads with a secret. Use a Code action to verify the signature.
  • IP Allowlisting: Configure your firewall to only allow requests from known IP ranges.
  • Custom Headers: Check for expected headers in a Branch action.

Webhook Response

By default, ThinkFleet responds with 200 OK immediately. If you need a custom response (e.g., for Slack challenge verification), enable Return Response in the trigger settings and configure:

  • Status Code: 200, 201, etc.
  • Headers: Custom response headers
  • Body: Static or dynamic response body

Schedule Triggers

Schedule triggers fire on a recurring time-based schedule.

Simple Intervals

Choose from preset intervals:

Interval Description
Every 5 minutes High-frequency polling
Every 15 minutes Standard polling
Every hour Hourly tasks
Every day Daily reports, syncs
Every week Weekly summaries
Every month Monthly processing

Cron Expressions

For more control, use a cron expression:

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *

Common Cron Examples

Cron Expression Schedule
0 9 * * 1-5 Every weekday at 9:00 AM
0 */2 * * * Every 2 hours
30 8 1 * * 8:30 AM on the 1st of every month
0 0 * * 0 Midnight every Sunday
*/10 * * * * Every 10 minutes

Timezone

Schedule triggers run in the timezone configured in your project settings. You can override the timezone per trigger in the advanced settings.

Schedule Trigger Output

The schedule trigger provides:

{
  "scheduledTime": "2026-03-12T09:00:00.000Z",
  "timezone": "America/New_York"
}

App Triggers

App triggers fire when a specific event occurs in a connected application. They are the most common trigger type for event-driven automations.

How App Triggers Work

There are two mechanisms:

Polling Triggers

ThinkFleet periodically checks the app for new data. The polling interval is configurable (default: 5 minutes for published flows).

  • Pro: Works with any API, even those without webhook support
  • Con: Slight delay between event and flow execution

Real-time (Webhook-based) Triggers

The app sends events directly to ThinkFleet in real time via its own webhook infrastructure.

  • Pro: Near-instant execution
  • Con: Requires the app to support webhooks

ThinkFleet handles the distinction automatically. You don't need to know which mechanism a trigger uses.

Communication

Piece Trigger Type
Gmail New Email Polling
Slack New Message Real-time
Discord New Message Real-time
Microsoft Teams New Message Polling

CRM & Sales

Piece Trigger Type
Salesforce New Record Real-time
HubSpot New Contact Polling
Pipedrive New Deal Polling

Developer Tools

Piece Trigger Type
GitHub New Pull Request Real-time
GitLab New Merge Request Real-time
Jira Issue Updated Real-time
Linear Issue Created Real-time

Payments

Piece Trigger Type
Stripe Payment Completed Real-time
PayPal New Transaction Polling

Configuring App Triggers

  1. Select the piece and trigger
  2. Connect your account (OAuth2 or API key)
  3. Configure trigger-specific settings (e.g., which channel, label, or project to watch)
  4. Click Load Data to fetch sample events for building subsequent steps

Deduplication

Polling triggers include built-in deduplication to ensure the same event isn't processed twice. ThinkFleet tracks the last processed item ID or timestamp and only processes new items on each poll.

Trigger Best Practices

  1. Use real-time triggers when available — They're faster and reduce API calls
  2. Filter at the trigger level — Many triggers support filtering (e.g., Gmail label filter) to avoid unnecessary flow runs
  3. Test with real data — Use "Load Data" to get actual events from your connected accounts
  4. Secure webhooks — Always validate webhook signatures for production flows
  5. Monitor polling frequency — High-frequency polling can consume API rate limits

Next Steps