IGNITRAOpen the app

Conditions

Conditions filter the trigger's data. A run is created only when they pass; otherwise the match is recorded under “Why it did not run” with every condition's actual value. No conditions means every trigger occurrence runs.

{
  "all": [
    { "field": "percent_of_supply", "op": ">=", "value": 0.5 },
    { "field": "is_mint", "op": "==", "value": false },
    { "any": [
      { "field": "time.hour_wib", "op": ">=", "value": 8 },
      { "field": "amount_decimal", "op": ">=", "value": "100000" }
    ] }
  ]
}

The root is a group: all (AND) or any (OR). Groups nest up to 4 levels, with at most 50 nodes. Fields are the trigger's data paths (see Triggers); a typo is rejected when you save, with a suggestion.

Operators

OperatorMeaningExample
==equals{ "field": "token.symbol", "op": "==", "value": "USDG" }
!=is not{ "field": "from", "op": "!=", "value": "0x0000000000000000000000000000000000000000" }
> >= < <=numeric comparisons (exact decimals){ "field": "amount_decimal", "op": ">=", "value": "1000" }
IN / NOT_INone of / none of a list (up to 500 values){ "field": "to", "op": "IN", "value": ["0xaa…", "0xbb…"] }
CONTAINSa text contains a substring, or a list contains a value{ "field": "event.name", "op": "CONTAINS", "value": "Swap" }
EXISTSthe field is present and not null{ "field": "token.symbol", "op": "EXISTS" }

Semantics

  • Numbers are exact. Numbers and numeric strings compare as decimals: "1000000000000000000000" equals 1e21, and token amounts never lose precision. Write big values as strings.
  • Hex is case-insensitive. Addresses and hashes match in any case; other text is compared exactly.
  • Missing data fails. A missing or null field fails every operator except EXISTS: a flow never runs on data it does not have.
  • No guessing. Comparing incompatible types (text with >) fails with type_mismatch, shown in the trace.
  • Everything is evaluated. All conditions are checked (no short-circuit), so the trace always shows each result.

Useful fields

  • time.hour_wib, time.minutes_wib (08:00 = 480), time.weekday_wib (1 = Monday): business hours in WIB, from the block time.
  • percent_of_supply, is_mint, is_burn on token transfers.
  • body.* for inbound webhooks: any path into the JSON you posted, e.g. body.order.total.

Limits that also filter

After the conditions pass, a match can still be held back by settings.max_runs_per_hour (default 60) or by the plan's monthly runs. Both are recorded as evaluations (rate_limited, plan_limited). A flow whose events exceed three times its hourly cap pauses itself and you get a notice.