Comment on page
Legacy Automate Migration Guide
Deprecation Notice: Gelato Functions is set to replace Automate, providing enhanced automation capabilities, access to off-chain data, unified payments across networks, and a performance boost. Migrate your tasks to Gelato Functions before Legacy Automate's end of life on June 30th, 2024 for uninterrupted service.
With the launch of Gelato Functions we are deprecating our Automate service.
The key benefits of Gelato Functions include:
- Access off-chain data & computation via Typescript Functions
- Unified payments across all networks via 1Balance
- Listen to on-chain Events to trigger your Functions
- Support for many more networks
- Much higher performance and lower latencies
- Enhanced UX, DevX and analytics
To get these benefits users need to migrate their tasks from Automate (now Legacy Automate) to Gelato Functions.
Legacy Automate will be deprecated 30th June 2024 so users should plan to migrate to Functions before this date.
- From 1st December 2023, some Legacy Automate tasks will be expired and won’t be checked anymore. Check conditions for expired tasks.
- From 1st January 2024, Automate Legacy transactions will cost 50% higher than on new Gelato Functions. Check details on cost changes.
Gelato Functions unifies your transaction costs across all networks using our 1Balance system. For each execution of your target contract you will be billed the USDC equivalent of your gas costs plus a fee - the fee varies depending on the network and your subscription plan.
Fees will be applied to all Automate Legacy transactions from 1st January 2024. These fees will be 50% higher than those on Gelato Functions.
As part of the migration we are going to introduce task expiries from 1st December 2023 - any Legacy Automate tasks that meet the following conditions will be automatically cancelled.
Testnets
| Tasks expire after 30 days without any execution
|
Mainnets
| Tasks expire after 120 days without any execution
|
If you have any concerns about these limits please do not hesitate to reach out to us.
We have updated what some things are called in Functions, but they are directly equivalent. The most notable one is that Resolvers are now called Solidity Functions - the smart contract code that determines if your target contract can be executed and with what payload.
The flow for creating a new task has been changed to follow more of an “if this then that” pattern and allows you to also use Typescript functions that tap into off-chain APIs to also determine when target contracts should be executed and with what payloads.
The exact steps you need to go through will depend on the precise characteristics of your existing tasks. Here is some general guidance - if you have any questions or require further support please contact us for assistance.
- If you are inheriting
AutomateReady
orOpsReady
in your target contracts, upgrade them to use the new version ofAutomateReady
- If you are whitelisting Gelato as an restricted
msg.sender
, update your whitelisting to use your new dedicatedmsg.sender
:
- If you were using “Resolver”, they are now called “Solidity functions”
- if you were using "Predefined Inputs", they are now called "Automated Transactions"
.png?alt=media&token=f1a489a5-b9b2-494c-a6ca-1c34eb874b1f)
- Deposit $USDC into your 1Balance to pay for your transactions across all networks

- Set up low balance e-mail alert

- Your tasks are now up and running on the new Gelato Functions✅
- Manually "Pause" all your old tasks
- Withdraw your assets on each network where you still hold any balance on Gelato TaskTreasury
- If you were relying on Time Module, it has been replaced by Trigger Module, which allows similar configurations
function _timeTriggerModuleArg(uint128 _start, uint128 _interval)
- Note that it’s now required to use the Proxy Module on all your task creations, to enforce stricter security
- Make sure to upgrade to use the latest version of the
automate-sdk
:yarn add @gelatonetwork/automate-sdk
- You can create task using the same
createTask
method - if you were using
startTime
&interval
, these options are now available inside the trigger configuration:
trigger: {
type: TriggerType.TIME; // time interval trigger
interval: number; // task interval in ms
start: number; // task start timestamp, task will start immediately if undefined or 0
}
Last modified 2d ago