Skip to content

Read smart contracts in n8n

n8n has no native blockchain node. Add one that takes a single expression instead of an ABI or encoded calldata.

Ethereum
{
  "pair":  feed.description(),
  "price": string(formatUnits(feed.latestAnswer() / priceScale, 2))
}

Community node for n8n. Zapier and Make over HTTP.

n8n can post to Slack. It cannot read a contract.

It comes up the day someone asks for an alert when a price, a balance or a health factor crosses a line.

  • No native blockchain node

    n8n ships nodes for hundreds of services and none for EVM contracts. The community nodes that exist are scattered, tied to one chain or come with their own license terms.

  • Nodes want an ABI or calldata

    The ones that do read contracts ask for ABI JSON or hex-encoded calldata in an HTTP Request node, and break when the contract sits behind a proxy.

  • Balance APIs stop at balances

    Explorer endpoints tell you what a wallet holds, not what a contract says. A health factor, a share price or a proposal state is out of reach.

  • Change alerts built by hand

    "Notify me when this changes" means a Schedule Trigger, a read, a stored last value, an IF node and an alert, all wired and maintained by you.

One node, one expression, typed output.

Install the evmquery community node, or call the REST API from an HTTP Request node. Either way you write the read, not the encoding, and n8n becomes an onchain workflow engine.

  1. No native blockchain node

    A node built for contract reads

    The package adds an evmquery action node and an evmquery Trigger node. It works in n8n Cloud and self-hosted.

    n8n-nodes-evmquery
  2. Nodes want an ABI or calldata

    No ABI, no calldata

    Name the contract address and write the call. The ABI comes from the verified source and proxies are followed.

    formatUnits(Token.balanceOf(ops), Token.decimals())
  3. Balance APIs stop at balances

    Any view method, typed

    Health factors, oracle prices, proposal states. Values arrive as typed JSON you can compare in an IF or Switch node.

    pool.getUserAccountData(user).healthFactor
  4. Change alerts built by hand

    A trigger that fires on change

    The evmquery Trigger node polls a read on your schedule and only starts the workflow when the value differs from the last poll. No state store, no IF node.

    emitOn: change

What it does not do. It polls, it does not push. There are no webhooks from the chain and no alerts on contract events or logs, so the fastest reaction is your polling interval.

Set it up in n8n.

Install the node once, add your API key as a credential, then drop it into any workflow.

  1. Install

    n8n Cloud or Desktop: Settings → Community Nodes → Install, then paste n8n-nodes-evmquery. Self-hosted: install the package in your custom nodes folder and restart n8n.

    npm install n8n-nodes-evmquery
  2. Credentials

    Credentials → New → evmquery API, then paste the key from your dashboard. The action and trigger nodes share it.

  3. Execute Query

    Pick the chain, name the contract, declare typed inputs and write the expression. Wire the result into an IF node and a Slack message for a working balance alarm.

    Operation:  Execute Query
    Chain:      Base
    Contracts:
      Token = 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
    Context:
      ops : sol_address = 0xYourOpsWallet
    Expression:
      formatUnits(Token.balanceOf(ops), Token.decimals())
  4. Zapier, Make or HTTP Request

    POST to https://api.evmquery.com/api/v1/query with your key in the x-api-key header and a JSON body with chain, schema and expression. The same call works in n8n's HTTP Request node.

Frequently asked questions

Yes. Install the n8n-nodes-evmquery community node. It adds an action node that runs any expression and a Trigger node that polls a read, both authenticated with an API key.

Yes, by polling. The evmquery Trigger node runs a read on the schedule you set and fires only when the value changed since the last poll. It does not receive pushes from the chain, so your reaction time is your polling interval.

No. evmquery reads contract state; it does not watch event logs or send webhooks. Poll the state the event changes instead, for example a balance or a proposal state.

No. For verified contracts the ABI is resolved from the address and proxies are followed. You write the call as an expression, for example Token.balanceOf(ops).

Not as native apps yet. The REST API works in any tool that can make an HTTPS request, which covers Make's HTTP module and Zapier's Webhooks by Zapier action.

Health factor alerts when an Aave position nears liquidation. A Slack message when a treasury balance drops below a threshold. A daily Google Sheets row with token supplies or oracle prices. A Discord post when a governor proposal changes state.

Each poll is one query. Your plan's unit rate limit sets how often you can run it, and the free tier covers hourly polling of a handful of reads.

Ethereum, Base, BNB Smart Chain and Polygon today. If a contract is verified on a supported chain, the node can read it.

The node uses an API key you generate in the dashboard. Keys can be rotated at any time, and all traffic is over HTTPS.

Ship your first onchain workflow today.

Free tier, no credit card. The n8n node installs in under a minute.

Free tier included · No credit card