You can use HAL to:
send emails to your users/clients from your smart contract
get notified about any event, transaction or contract' state change you care about
If you need to send emails to your DAO members (e.g. "you need to vote on something"), clients (e.g. "the trade is completed") or users (e.g. you won the jackpot!") you could code something like this in your smart contract:
event SendEmail(string indexed to, string var1, int128 var2);
where "to" will be filled with the email address of the user you'd like to contact and var1 and var2 are 2 examples of specific values that you need to insert in the email template (depending on your business logic).
Insert your smart contract's main net address
Select the SendEmail function
Don't add any filter
Active the Email action. In the To field, insert
In the subject insert "
!var1 vote is coming!"
In the message insert "Just to notify that our
!var2 vote is coming. We're voting for
!var1. Please vote before the deadline, which occurs at block
!var2. Best. The DAO Governance Team"
Now it's time to play! When your smart contract will emit this:
to = "[email protected]" // you need to keep your users' emails somewhere;var1 = "Board election" // vote namevar2 = 34; // DAO vote numbervar2 = 9356917; // Block number when vote closesemit SendEmail(to, var1, var2);
Matthew will receive the email and will meet the vote's deadline.
Want to be notified when DEXs' trades occur, when you receive Ether or tokens, when new auctions open, when a gambling jackpot is higher than X, when Ether price is higher or lower than Y and much more?
You can create a
EventsTrigger depending on what you need and use the Email action. Any field (To, Subject or Message) supports templating variables. Not only basic variables (transactionHash, blockTime, etc) but also any parameter passed to the smart contract function (
TransactionsTrigger), any part of the Events' payload (
EventsTrigger) or any value returned by contracts' call/"state mutability: view" functions (
Want to get notified when more than 300 units of ZRX (0x) token are sold on IDEX?
TransactionsTrigger (IDEX doesn't emit Events from the Trade function so we need to check the transactions)
In the To field, write 0x2a0c0DBEcC7E4D658f48E01e3fA353F44050c208 (IDEX address). Click "It's a contract" to enable advanced filtering. To know more about the Trade function parameters', just check out the contract's source code.
In the position 1 of the tradeAddressses array (called tokenSell in the source code), insert the address of the ZRX token (0xe41d2489571d322189246dafa5ebde1f4699f498)
In the position 1 of the tradeValues array (amountSell) insert the desidered amount (BiggerThan 300)
Create your custom email action
Want to get notified about Ether price drops (Ether < 130$)? How about using using Uniswap DAI<->ETH market (1 DAI should be worth about 1$...)?
ContractsTrigger and insert the 0x09cabec1ead1c0ba254b09efb3ee13841712be14 address (which is Uniswap exchange for single collateral DAI)
Select the getTokenToEthOutputPrice function
Insert 1 as input
getTokenToEthOutputPrice has only one returned value. Apply "SmallerThan 130" on that
Create your custom email action