Block: Root
Type: action_root

The Root block is the foundation of every Adafruit IO Action. Connect Triggers (like 'when temperature > 80°F' or 'every morning at 8 AM') to define when your Action runs, then attach Action blocks (like 'send email', 'publish to feed', or 'if/then logic') to define what happens when triggered.
Configuration
The Root block has special configuration settings that control how your action's triggers behave. You can access these by clicking the gear icon on the block.
Delay Setting
The Delay Setting allows adding a delay period after a trigger fires, before the Actions are executed, preventing the action from running too frequently. This is useful for rate-limiting notifications or avoiding noisy data that might cause rapid re-triggers.

As well as setting the duration, there are two delay modes:
Reset (Extend Delay): "deletes the existing delay and start a new one"
Each time a trigger condition is met during the cooldown period, the delay timer is reset. The action will only run after the trigger condition has remained true for the entire duration of the delay.
- Example: If you have a 5-minute delay for a "temperature > 80°F" trigger, and the temperature keeps fluctuating above 80°F every minute, the action will not run until the temperature stays below 80°F for a full 5 minutes.
Keep (Ignore): "keeps the existing delay and ignore new triggers"
The action runs the very first time the trigger condition is met, after the delay period. It ignores all subsequent trigger events until the delay period has passed and actions executed.
- Example: After a 5-minute delay the action runs, from when the temperature first goes above 80°F. It will ignore any change in trigger conditions, regardless of what the temperature does during that time.
Inputs
Triggers
Connect trigger blocks here to define WHEN your Action should run. Choose from Reactive triggers (respond to feed updates), Scheduled triggers (run at specific times), or Timer triggers (delayed responses). Multiple triggers can be added, and any of the trigger conditions being true will cause the action to run (after an optional delay).
Compatible Blocks (click to expand)

Data Match Changing
Advanced trigger that watches for changes in how your feed data matches a condition over time.

Data Matching
The most common trigger type - runs your Action immediately whenever new data arrives at a feed that meets your specified condition.

Any Data
The simplest trigger - runs your Action every single time ANY new data arrives at a feed, regardless of what the value is.

Schedule
Create powerful time-based automation that runs your Actions on a schedule - from simple daily reminders to complex patterns like 'every 15 minutes during weekdays' or 'first Monday of each quarter'.
Actions
Connect action blocks here to define WHAT happens when your triggers activate. This can include sending emails, publishing values to feeds, conditional if/then logic, mathematical operations, or webhook calls. Actions execute in sequence from top to bottom.
Compatible Blocks (click to expand)

Set Variable
Store a value in a named variable for later use in your Action.

Set Feed Value
Publish the specified data point to the specified Feed.

Conditional
Create smart decision-making logic for your IoT Actions using if/then/else statements.

Webhook
Sends an HTTP POST request to a given URL, with a BODY template using FEED data.

SMS
Sends a text message with a given body template.
Log
Executes the block you plug in and reveals its final value or error message.

Sends an email with given subject and body templates.