Trigger Onchain

Triggers when a smart contract emits an on-chain event that matches your filter criteria. Advanced — requires an event ABI.

At a Glance

FieldValue
Trigger IDevm-log
CategoryOnchain
Tagsevm, blockchain, event, log, smart-contract, on-chain, ethereum, advanced

Trigger Configuration

FieldTypeRequiredDescription
chainIdintegerYesChain ID to subscribe to (e.g., 1 for Ethereum, 42161 for Arbitrum)
contractAddressstringNoSingle contract address to filter events from. Mutually exclusive with contractAddresses. If both are omitted, events from all contracts on the chain are matched.
contractAddressesarrayNoList of contract addresses to watch (up to 20). Mutually exclusive with contractAddress.
eventAbiobjectYesEvent ABI in Etherscan/Solidity JSON format. Must include 'name', 'type', and 'inputs' fields.
filterobjectNoFilter DSL to match event parameters. Top level MUST be $and or $or. Supports $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin operators.
enrichmentsarrayNoAdditional data to include with each event. Each enrichment adds an RPC call (and sometimes a price lookup) per trigger.
enrichmentFilterobjectNoFilter applied to enrichment results. Only fires when enriched data matches. Same syntax as event filter ($and/$or with $eq, $gt, $gte, $lt, $lte, $in, etc.).

Trigger Result

FieldTypeRequiredDescription
triggeredAtstringYesTimestamp when the event was detected (UTC, RFC3339 format)
paramsobjectYesDecoded event parameters based on eventAbi. Field names and structure match the ABI definition.
rawobjectYesRaw log data including address, topics, data, blockNumber, transactionHash, etc.
enrichmentsobjectNoAdditional data from opt-in enrichments. Only populated when the corresponding enrichment is enabled.

Workflow Root Example

json
{ "nodes": { "root": { "type": "evm-log", "payload": { "chainId": 8453, "eventAbi": { "_comment": "ERC20 Transfer event ABI (matches simple filter/params example)", "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" } }, "children": [ "log_event" ] }, "log_event": { "type": "log", "payload": { "message": "Triggered at {{$trigger.triggeredAt}}" }, "children": [] } }}

Downstream nodes can use {{$trigger.triggeredAt}} and any result fields listed above. Event triggers usually expose the raw source payload under a field such as event, body, trade, or raw.

Ask a question... ⌘I