Triggers
A trigger decides when a flow runs. Chain triggers read Robinhood Chain directly, confirmed by default. Every trigger provides data for conditions and templates as {{trigger.<path>}}.
- Token transfer TOKEN_TRANSFER
- Contract event CONTRACT_EVENT
- New holder NEW_HOLDER
- Balance threshold BALANCE_THRESHOLD
- Contract deployed CONTRACT_DEPLOYED
- Contract state change STATE_CHANGE
- Schedule SCHEDULE
- Inbound webhook INBOUND_WEBHOOK
- New token launch NEW_LAUNCH
- VIGIL alert VIGIL_ALERT
Token transfer
TOKEN_TRANSFER · chain · supports fast mode
An ERC-20 transfer of a token, optionally into or out of a specific wallet.
Fires per Transfer log of the token (ERC-721 transfers with the same topic are ignored). With a wallet, direction says in, out or any. percent_of_supply uses the supply at the time of the event.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| token | string | yes | |
| wallet | string | ||
| direction | "any" | "in" | "out" | "any" |
Example
{
"type": "TOKEN_TRANSFER",
"params": {
"token": "0x5fc5360d0400a0fd4f2af552add042d716f1d168"
}
}From the big-buy-telegram template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.tx_hash | hash | Transaction hash |
| trigger.tx_index | uint | Transaction position in the block |
| trigger.log_index | uint | Log position in the block |
| trigger.contract | address | Contract that emitted the event |
| trigger.event_status | string | `confirmed`, or `pending` for fast-mode runs |
| trigger.from | address | Sender (0x000… for mints) |
| trigger.to | address | Recipient (0x000… for burns) |
| trigger.amount | uint | Amount transferred, base units (exact) |
| trigger.amount_decimal | decimal? | Amount transferred, token units (exact) |
| trigger.amount_formatted | string? | Amount transferred for display, e.g. 1,234.5 |
| trigger.token.address | address | Token contract |
| trigger.token.symbol | string? | Token symbol |
| trigger.token.name | string? | Token name |
| trigger.token.decimals | number? | Token decimals |
| trigger.token.total_supply | uint? | Total supply, base units (recent) |
| trigger.token.total_supply_decimal | decimal? | Total supply, token units (recent) |
| trigger.percent_of_supply | number? | Amount as % of total supply (0.82 = 0.82%) |
| trigger.is_mint | boolean | Sent from the zero address |
| trigger.is_burn | boolean | Sent to the zero address |
| trigger.wallet | address? | The watched wallet, if any |
| trigger.direction | string? | `in` / `out` relative to the watched wallet |
| trigger.counterparty | address? | The other side of the watched wallet (null without a wallet) |
| trigger.counterparty_trust_score | number? | TRUST LAYER score of the counterparty, 0–1000 (higher = more trustworthy) |
| trigger.counterparty_trust_band | string? | TRUST LAYER band of the counterparty, e.g. strong or high_risk |
| trigger.counterparty_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |
| trigger.from_trust_score | number? | TRUST LAYER score of the sender, 0–1000 (higher = more trustworthy) |
| trigger.from_trust_band | string? | TRUST LAYER band of the sender, e.g. strong or high_risk |
| trigger.from_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |
| trigger.to_trust_score | number? | TRUST LAYER score of the recipient, 0–1000 (higher = more trustworthy) |
| trigger.to_trust_band | string? | TRUST LAYER band of the recipient, e.g. strong or high_risk |
| trigger.to_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |
Contract event
CONTRACT_EVENT · chain · supports fast mode
A specific event emitted by a contract, decoded with its ABI.
Pass a full event signature, or just the name: IGNITRA resolves it from the contract's verified ABI (or the built-in ERC-20 / Ownable / AccessControl / Pausable ABIs) when you save, and stores the full signature, so matching never depends on an explorer. Arguments appear as args.<name>.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| address | string | yes | |
| event | string | yes |
Example
{
"type": "CONTRACT_EVENT",
"params": {
"address": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"event": "event Upgraded(address indexed implementation)"
}
}From the proxy-upgraded-webhook template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.tx_hash | hash | Transaction hash |
| trigger.tx_index | uint | Transaction position in the block |
| trigger.log_index | uint | Log position in the block |
| trigger.contract | address | Contract that emitted the event |
| trigger.event_status | string | `confirmed`, or `pending` for fast-mode runs |
| trigger.event.name | string | Event name |
| trigger.event.signature | string | Canonical signature, e.g. Transfer(address,address,uint256) |
New holder
NEW_HOLDER · chain
An address starts holding a token (balance goes from zero to non-zero).
An address whose balance goes from zero to non-zero. Decided per transaction, so routers and pools that receive and pass tokens on in the same transaction are not counted. Confirmed mode only.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| token | string | yes |
Example
{
"type": "NEW_HOLDER",
"params": {
"token": "0x5fc5360d0400a0fd4f2af552add042d716f1d168"
}
}From the new-holder-sheets template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.tx_hash | hash | Transaction hash |
| trigger.tx_index | uint | Transaction position in the block |
| trigger.log_index | uint | Log position in the block |
| trigger.contract | address | Contract that emitted the event |
| trigger.event_status | string | `confirmed`, or `pending` for fast-mode runs |
| trigger.holder | address | The new holder |
| trigger.from | address | Who sent the tokens (0x000… for mints) |
| trigger.amount | uint | Amount received in the transaction, base units (exact) |
| trigger.amount_decimal | decimal? | Amount received in the transaction, token units (exact) |
| trigger.amount_formatted | string? | Amount received in the transaction for display, e.g. 1,234.5 |
| trigger.balance_after | uint | Holder balance after the transaction, base units (exact) |
| trigger.balance_after_decimal | decimal? | Holder balance after the transaction, token units (exact) |
| trigger.balance_after_formatted | string? | Holder balance after the transaction for display, e.g. 1,234.5 |
| trigger.percent_of_supply | number? | Amount as % of total supply |
| trigger.token.address | address | Token contract |
| trigger.token.symbol | string? | Token symbol |
| trigger.token.name | string? | Token name |
| trigger.token.decimals | number? | Token decimals |
| trigger.token.total_supply | uint? | Total supply, base units (recent) |
| trigger.token.total_supply_decimal | decimal? | Total supply, token units (recent) |
| trigger.counterparty | address | The new holder (for TRUST LAYER scores) |
| trigger.counterparty_trust_score | number? | TRUST LAYER score of the counterparty, 0–1000 (higher = more trustworthy) |
| trigger.counterparty_trust_band | string? | TRUST LAYER band of the counterparty, e.g. strong or high_risk |
| trigger.counterparty_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |
Balance threshold
BALANCE_THRESHOLD · chain
A wallet's ETH or token balance crosses a threshold.
Samples the balance at the confirmed head on an interval and fires once per crossing, not on every sample while the balance stays on one side. The first sample after activation only records the side.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| wallet | string | yes | |
| asset | "native" | string | ||
| threshold | string | number | yes | |
| direction | "below" | "above" | "cross" | "below" |
Example
{
"type": "BALANCE_THRESHOLD",
"params": {
"wallet": "0x8366a39cc670b4001a1121b8f6a443a643e40951",
"asset": "native",
"threshold": "2",
"direction": "below"
}
}From the treasury-low-email template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.wallet | address | Watched wallet |
| trigger.asset | string | `native` or the token address |
| trigger.token.address | address? | Token contract (null for native ETH) |
| trigger.token.symbol | string? | ETH or the token symbol |
| trigger.token.decimals | number? | Decimals used for the threshold |
| trigger.threshold | decimal | Threshold in token units |
| trigger.direction | string | Crossing that happened: `below` or `above` |
| trigger.balance_before | uint | Balance at the previous sample, base units |
| trigger.balance_before_decimal | decimal? | Previous balance, token units |
| trigger.balance_after | uint | Balance now, base units |
| trigger.balance_after_decimal | decimal? | Balance now, token units |
| trigger.balance_after_formatted | string? | Balance now, for display |
| trigger.previous_block | uint | Block of the previous sample |
Contract deployed
CONTRACT_DEPLOYED · chain
A watched deployer (wallet or CREATE factory) deploys a new contract.
Follows the deployer's nonce and checks each CREATE address for code: works for wallets and CREATE factories. For CREATE2 factories, use Contract event on the factory's creation event.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| deployer | string | yes |
Example
{
"type": "CONTRACT_DEPLOYED",
"params": {
"deployer": "0x8366a39cc670b4001a1121b8f6a443a643e40951"
}
}From the new-contract-telegram template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.deployer | address | Watched deployer |
| trigger.contract | address | The new contract |
| trigger.nonce | uint | Deployer nonce used for the creation |
| trigger.creation_block | uint? | Block the contract was created in |
| trigger.creation_tx | hash? | Creating transaction (EOA deployers) |
| trigger.creation_tx_url | string? | Explorer link to the creating transaction |
Contract state change
STATE_CHANGE · chain
A contract read (e.g. totalSupply(), owner(), paused()) returns a different value.
Calls a view function at the confirmed head on an interval and fires when the result changes, with previous, current and (for integers) delta. A reverting call is recorded as undetermined, never as a change.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| address | string | yes | |
| function | string | yes | |
| args | string | number | boolean[] | [] |
Example
{
"type": "STATE_CHANGE",
"params": {
"address": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"function": "function paused() view returns (bool)"
}
}From the paused-telegram template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.contract | address | Contract that was read |
| trigger.function.name | string | Function name |
| trigger.function.signature | string | Canonical signature, e.g. balanceOf(address) |
| trigger.args | array | Call arguments (normalized) |
| trigger.current | object | Return value now |
| trigger.previous | object | Return value at the previous sample |
| trigger.previous_block | uint | Block where the previous value was first observed |
Schedule
SCHEDULE · schedule · builder plan
Runs on a cron schedule in your timezone (default WIB), e.g. every weekday at 09:00.
Standard 5-field cron in any timezone (WIB by default), plus @hourly / @daily / @weekly / @monthly and L / W / #. Each time fires at most once. After downtime only the latest time fires (within an hour) and earlier ones are recorded as missed.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| cron | string | yes | |
| timezone | string | "Asia/Jakarta" |
Example
{
"type": "SCHEDULE",
"params": {
"cron": "0 8 * * *",
"timezone": "Asia/Jakarta"
}
}From the daily-supply-sheets template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.scheduled_at | timestamp | Scheduled time of this occurrence, ISO-8601 UTC |
| trigger.scheduled_at_local | string | Scheduled time in the schedule's timezone, e.g. 2026-11-07 09:00:00 WIB |
| trigger.fired_at | timestamp | When the scheduler fired it, ISO-8601 UTC |
| trigger.delay_ms | number | fired_at minus scheduled_at, in milliseconds |
| trigger.next_at | timestamp? | Next scheduled time, ISO-8601 UTC |
| trigger.cron | string | The cron expression |
| trigger.timezone | string | The schedule's timezone |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
Inbound webhook
INBOUND_WEBHOOK · inbound
Your own URL: any service that can send an HTTP POST can start this flow.
Your flow gets its own signed URL. Anything that can send an HTTP POST starts the flow; see Webhooks for the details.
Params
No parameters.
Example
{
"type": "INBOUND_WEBHOOK",
"params": {}
}From the inbound-telegram-relay template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.request_id | string | Id of the accepted request (req_…) |
| trigger.received_at | timestamp | When the API accepted it, ISO-8601 UTC |
| trigger.idempotency_key | string? | The sender's Idempotency-Key header |
| trigger.content_type | string? | Request content type |
| trigger.bytes | number | Body size in bytes |
| trigger.body | object | Parsed body: JSON, form fields, or { text } (any path below it, e.g. body.amount) |
| trigger.query | object | Query-string parameters |
| trigger.headers | object | Non-sensitive request headers (content-type, user-agent, x-*) |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
New token launch
NEW_LAUNCH · chain · supports fast mode
A token launched on a Robinhood Chain launchpad (Pons), optionally by one deployer.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| launchpad | "pons" | "pons" | |
| deployer | string |
Example
{
"type": "NEW_LAUNCH",
"params": {
"launchpad": "pons"
}
}From the pons-launch-telegram template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.chain_id | number | Chain id (4663 = Robinhood Chain) |
| trigger.block_number | uint | Block of the event |
| trigger.block_hash | hash | Hash of that block |
| trigger.block_timestamp | timestamp? | Block time, ISO-8601 UTC |
| trigger.explorer_url | string | Explorer link for the event |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.tx_hash | hash | Transaction hash |
| trigger.tx_index | uint | Transaction position in the block |
| trigger.log_index | uint | Log position in the block |
| trigger.contract | address | Contract that emitted the event |
| trigger.event_status | string | `confirmed`, or `pending` for fast-mode runs |
| trigger.launchpad | string | The launchpad, e.g. pons |
| trigger.token.address | address | Token contract |
| trigger.token.symbol | string? | Token symbol |
| trigger.token.name | string? | Token name |
| trigger.token.decimals | number? | Token decimals |
| trigger.token.total_supply | uint? | Total supply, base units (recent) |
| trigger.token.total_supply_decimal | decimal? | Total supply, token units (recent) |
| trigger.deployer | address | The wallet that launched the token |
| trigger.curve | address | The token's bonding curve |
| trigger.pair_token | address | What the curve trades against (0x000… = native ETH) |
| trigger.pair_symbol | string? | ETH, or the pair token symbol |
| trigger.launch_config_id | uint | The launchpad's launch configuration id |
| trigger.graduation_threshold | uint | Raise at which the token graduates to a pool, base units (exact) |
| trigger.graduation_threshold_decimal | decimal? | Raise at which the token graduates to a pool, token units (exact) |
| trigger.graduation_threshold_formatted | string? | Raise at which the token graduates to a pool for display, e.g. 1,234.5 |
| trigger.socials.twitter | string? | twitter link set by the launcher (unverified) |
| trigger.socials.telegram | string? | telegram link set by the launcher (unverified) |
| trigger.socials.discord | string? | discord link set by the launcher (unverified) |
| trigger.socials.website | string? | website link set by the launcher (unverified) |
| trigger.socials.farcaster | string? | farcaster link set by the launcher (unverified) |
| trigger.counterparty | address | The deployer (for TRUST LAYER scores) |
| trigger.counterparty_trust_score | number? | TRUST LAYER score of the counterparty, 0–1000 (higher = more trustworthy) |
| trigger.counterparty_trust_band | string? | TRUST LAYER band of the counterparty, e.g. strong or high_risk |
| trigger.counterparty_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |
VIGIL alert
VIGIL_ALERT · inbound
An alert from VIGIL contract monitoring: ownership, upgrades, roles, pauses, supply, large transfers.
Params
| Param | Type | Required | Default |
|---|---|---|---|
| connection_id | string | yes | |
| stage | "confirmed" | "pending" | "confirmed" | |
| min_severity | "low" | "medium" | "high" | "critical" | "low" | |
| rules | string[] | ||
| contracts | string[] | ||
| include_retracted | boolean | false |
Example
{
"type": "VIGIL_ALERT",
"params": {
"connection_id": "conn_…",
"rules": [
"PROXY_UPGRADE_V1"
]
}
}From the vigil-upgrade-webhook template.
Data
| Variable | Type | Description |
|---|---|---|
| trigger.event | string | alert.created · alert.confirmed · alert.retracted |
| trigger.alert_id | string | VIGIL alert id |
| trigger.finding_id | string | VIGIL finding id (the public chain fact) |
| trigger.rule_id | string | The VIGIL rule, e.g. PROXY_UPGRADE_V1 |
| trigger.severity | string | low · medium · high · critical |
| trigger.status | string | pending · confirmed · retracted |
| trigger.title | string | Alert title |
| trigger.summary | string | What changed, stated as a fact |
| trigger.contract | address | The contract the alert is about |
| trigger.label | string? | Your VIGIL watch label |
| trigger.tx_hash | hash | Transaction that made the change |
| trigger.block_number | uint | Block of the change |
| trigger.actor | address | Who sent the transaction |
| trigger.counterparty | address | The actor (for TRUST LAYER scores) |
| trigger.before | string? | Value before the change (rule-specific) |
| trigger.after | string? | Value after the change (rule-specific) |
| trigger.evidence | object | VIGIL's full evidence object |
| trigger.explorer_url | string? | Explorer link for the transaction |
| trigger.delivery_id | string | VIGIL delivery id |
| trigger.time.iso | string | Event time, ISO-8601 UTC |
| trigger.time.date_wib | string | Event date in WIB, YYYY-MM-DD |
| trigger.time.hour_wib | number | Hour of day in WIB, 0-23 |
| trigger.time.minute_wib | number | Minute of the hour in WIB, 0-59 |
| trigger.time.minutes_wib | number | Minutes since midnight WIB, 0-1439 (08:00 = 480) |
| trigger.time.weekday_wib | number | ISO weekday in WIB, 1 = Monday … 7 = Sunday |
| trigger.counterparty_trust_score | number? | TRUST LAYER score of the counterparty, 0–1000 (higher = more trustworthy) |
| trigger.counterparty_trust_band | string? | TRUST LAYER band of the counterparty, e.g. strong or high_risk |
| trigger.counterparty_trust_status | string | scored · provisional · insufficient_data · pending (still indexing) · not_a_subject · unavailable · skipped · not_applicable |