Block: Text Template
Type: text_template
Create dynamic, personalized messages by combining static text with live data from your IoT system. Perfect for intelligent notifications like "Hello {{ user.name }}, your temperature sensor read {{ feeds['sensors.temperature'].value }}°F" or automated reports that include current sensor values, user information, and real-time data. Uses the powerful Liquid templating language for advanced formatting and logic.
What is a Text Template?
Think of a text template like a form letter where you leave blanks to fill in with specific information. Instead of writing "Dear _____", you write "Dear {{ user.name }}" and the system automatically fills in the actual name when the message is sent.
How It Works
This block renders (processes) a text template, replacing special placeholders with actual values. Anything surrounded by {{ double curly braces }} gets replaced with real data when your action runs.
For example:
- Template: "Hello {{ user.name }}!"
- Becomes: "Hello John!"
These templates use the Liquid templating language from Shopify, which includes many helpful built-in functions. Learn more: Liquid Documentation
Template Variables Reference
User Information
{{ user.name }}
- Your full name (e.g., "John Smith"){{ user.username }}
- Your username (e.g., "jsmith123")
Custom Variables
{{ variables.var_name }}
- Get value of variable named 'var_name'{{ vars.var_name }}
- Shorthand version (same as above){{ variables['var name'] }}
- Use brackets for names with spaces{{ vars['my special var'] }}
- Shorthand with spaces
Feed Data (Sensors & Devices)
{{ feeds['group_key.feed_key'].value }}
- Current value from a feed{{ feeds['group_key.feed_key'].name }}
- Feed's display name{{ feeds['group_key.feed_key'].key }}
- Feed's unique key{{ feeds['group_key.feed_key'].updated_at }}
- Last update timestamp
Real-World IoT Examples
🌡️ Temperature Alerts
Basic Alert:"Temperature Alert: {{ feeds['sensors.temp'].value }}°F detected!"
Output: "Temperature Alert: 85°F detected!"
Detailed Alert with Location:"⚠️ HIGH TEMP WARNING Location: {{ feeds['sensors.temp'].name }} Current: {{ feeds['sensors.temp'].value }}°F Time: {{ feeds['sensors.temp'].updated_at }} Please check your {{ vars.device_location }} immediately!"
📊 Daily Status Reports
Simple Report:"Daily Report for {{ user.name }}: • Temperature: {{ feeds['home.temp'].value }}°F • Humidity: {{ feeds['home.humidity'].value }}% • Battery: {{ vars.battery_level }}%"
Comprehensive Home Report: `"Good morning {{ user.name }}! Here's your home status:
🌡️ Climate Control:
- Living Room: {{ feeds['climate.living_temp'].value }}°F
- Bedroom: {{ feeds['climate.bedroom_temp'].value }}°F
- Humidity: {{ feeds['climate.humidity'].value }}%
🔋 Device Status:
- Door Sensor Battery: {{ feeds['security.door_battery'].value }}%
- Motion Detector: {{ vars.motion_status }}
- Last Activity: {{ feeds['security.last_motion'].updated_at }}
Have a great day!"`
🚪 Security Notifications
Door Alert:"🚪 {{ feeds['security.front_door'].name }} is {{ feeds['security.front_door'].value }} Time: {{ feeds['security.front_door'].updated_at }} User: {{ user.name }}"
🌱 Garden Monitoring
Watering Reminder:"Hey {{ user.name }}, your {{ vars.plant_name }} needs attention! Soil Moisture: {{ feeds['garden.moisture'].value }}% Last Watered: {{ vars.last_water_date }} Recommendation: Water {{ vars.water_amount }}ml"
🔔 Smart Doorbell Messages
Visitor Notification:"{{ user.name }}, someone is at your door! Camera: {{ feeds['doorbell.camera'].name }} Motion Level: {{ feeds['doorbell.motion'].value }} Time: {{ feeds['doorbell.motion'].updated_at }}"
Advanced Liquid Features
Conditional Logic
Use if/else statements for smart messages: "{% if feeds['sensors.temp'].value > 80 %} 🔥 It's hot! {{ feeds['sensors.temp'].value }}°F {% else %} ❄️ Nice and cool: {{ feeds['sensors.temp'].value }}°F {% endif %}"
Formatting Numbers
Round numbers or add decimal places: "Temperature: {{ feeds['sensors.temp'].value | round: 1 }}°F" "Battery: {{ vars.battery | round }}%"
Date Formatting
Format timestamps for readability: "Last updated: {{ feeds['sensor.temp'].updated_at | date: '%B %d at %I:%M %p' }}"
Output: "Last updated: January 15 at 03:45 PM"
Math Operations
Perform calculations in templates: "Temperature in Celsius: {{ feeds['sensors.temp'].value | minus: 32 | times: 5 | divided_by: 9 | round: 1 }}°C"
Common Patterns & Tips
1. Fallback Values
Provide defaults when data might be missing: "Temperature: {{ feeds['sensors.temp'].value | default: 'No reading' }}"
2. Multiple Feed Access
Combine data from multiple sources: "Indoor: {{ feeds['home.inside_temp'].value }}°F Outdoor: {{ feeds['home.outside_temp'].value }}°F Difference: {{ feeds['home.inside_temp'].value | minus: feeds['home.outside_temp'].value }}°F"
3. Status Indicators
Use emoji based on values (keep in mind emoji will not work with displays): "Battery: {{ vars.battery_level }}% {% if vars.battery_level < 20 %}🔴{% elsif vars.battery_level < 50 %}🟡{% else %}🟢{% endif %}"
4. Time-Based Greetings
"{% assign hour = 'now' | date: '%H' | plus: 0 %} {% if hour < 12 %}Good morning{% elsif hour < 17 %}Good afternoon{% else %}Good evening{% endif %}, {{ user.name }}!"
Troubleshooting Common Issues
Problem: Variable shows as blank
Solution: Check that:
- Variable name is spelled correctly (case-sensitive!)
- Feed key matches exactly (including group.feed format)
- Variable has been set before this template runs
Problem: Template shows raw {{ }} text
Solution: Make sure:
- You're using double curly braces {{ }}
- No extra spaces inside braces
- Feed keys use square brackets and quotes: feeds['key']
Problem: Timestamp looks weird
Solution: Format dates using Liquid filters: {{ feeds['sensor'].updated_at | date: '%Y-%m-%d %H:%M' }}
Best Practices
- Keep it readable: Use line breaks and spacing for multi-line messages
- Test with sample data: Try your template with different values
- Use meaningful variable names: 'kitchen_temp' is better than 'temp1'
- Add context: Include units (°F, %, etc.) and location names
Inputs
Template
Create your template text with static content and dynamic {{ variable }} placeholders.
Examples:
- 'Alert: {{ feeds['temp.kitchen'].value }}°F detected'
- 'Daily Report for {{ user.name }}: Battery at {{ vars.battery_level }}%'
Use {{ }} to insert live data into your message.