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

# Triggers

Event sources that start B3OS workflow runs.

Triggers create workflow runs from manual calls, schedules, webhooks, blockchain activity, SaaS events, messaging platforms, payment providers, market events, and social activity.



**Published workflows only**

Automatic trigger listeners use the published live version. Draft changes must be tested and published before
  schedules, webhooks, or event listeners pick them up.

**Trigger-to-run path**

**Event source**
  **Trigger config**
  **Workflow run**
  **Policy branch**
  **Action graph**
  **Streams and hooks**
  **event**
  **start run**
  **evaluate**
  **continue**
  **observe**

## Trigger Families

**Manual and time**

| Trigger | Use case | | --- | --- | | `manual` | Start from the app, API, public execution surface, or workflow
    webhook URL | | `schedule` | Declarative time-based scheduling | | `cronjob` | Cron-style recurring execution |
  **Blockchain**

| Trigger | Use case | | --- | --- | | `eth-receive` | Native ETH received by a watched address | | `eth-send` |
    Native ETH sent from a watched address | | `erc20-receive` | ERC-20 token received | | `erc20-send` | ERC-20 token
    sent | | `evm-log` | Contract log matched by address, topic, and chain filters | | `solana-transaction` | Solana
    transaction activity |
  **Messaging and SaaS**

| Trigger | Use case | | --- | --- | | `slack-new-message-in-channels` | Message posted in selected channels | |
    `slack-new-direct-message` | New direct message | | `slack-new-keyword-mention` | Keyword mention | |
    `slack-new-user-mention` | User mention | | `slack-mentions` | Broader mention capture | |
    `slack-new-reaction-added` | Reaction added | | `slack-new-channel-created` | New channel created | |
    `slack-new-user-added` | User added | | `telegram-channel` | Telegram channel event | |
    `telegram-new-interaction-event` | Telegram interaction wait/resume event | | `gmail-new-email-received` | Gmail
    message received | | `gmail-new-email-matching-search` | Gmail message matches a search query | |
    `email-new-email-received` | Email message received | | `email-new-email-matching-criteria` | Email message matches
    configured criteria | | `shopify-order-created` | Shopify order created | | `shopify-order-paid` | Shopify order
    paid | | `shopify-inventory-level-updated` | Inventory level updated |
  **Market and payments**

| Trigger | Use case | | --- | --- | | `coinbase-payment-received` | Coinbase payment received | |
    `coinbase-checkout-received` | Coinbase checkout received | | `stripe-payment-receive` | Stripe payment received | |
    `anyspend` | AnySpend payment or swap event | | `token-price-cexes` | CEX token price movement | |
    `exchange-listing` | New exchange listing signal | | `polymarket-new-market` | New Polymarket market | |
    `polymarket-market-trade` | Market trade event | | `polymarket-market-close` | Market close event | |
    `polymarket-user-bet` | User bet event | | `farcaster-new-cast` | New cast | | `farcaster-new-follower` | New
    follower | | `farcaster-new-reaction` | New reaction | | `x-new-tweet` | New X post event |

## Trigger Payloads

Every run starts with trigger context. Downstream nodes can access it through expressions:

```json
{
  "trigger": {
    "source": "webhook",
    "body": {
      "amount": "100.00",
      "asset": "USDC"
    },
    "headers": {
      "x-request-id": "req_123"
    }
  }
}
```

Use paths like:

| Expression | Meaning |
| --- | --- |
| ` {{$trigger.source}} ` | Trigger source identifier |
| ` {{$trigger.body.amount}} ` | Field from trigger body |
| ` {{$trigger.headers.x-request-id}} ` | Header from inbound request |
| ` {{$inputs.asset}} ` | Block or workflow input value |

## Webhook Triggers

Manual workflows can expose a workflow webhook URL. Use this for systems that can POST an event into B3OS but do not have a first-class trigger yet.

**Trigger a workflow webhook**

```bash
curl -X POST "https://api.b3os.org/v1/webhooks/YOUR_WORKFLOW_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"asset":"USDC","amount":"100"}'
```

**Treat webhook URLs as credentials**

Rotate webhook secrets when they are exposed, and validate incoming payloads before using them for wallet, trade, or
  privileged connector actions.

## Trigger Design Guidelines

| Need | Recommendation |
| --- | --- |
| Fast manual testing | Start with manual, then switch to the event source |
| Recurring work | Use schedule or cronjob |
| External system callback | Use a webhook trigger or first-class connector trigger |
| Onchain monitoring | Use specific address, chain, topic, token, or transaction filters |
| Wallet operations | Add policy checks before transaction actions |
| High-noise events | Filter early with branch or code-transform nodes |