Skip to content

Templates

A template decides what a live activity looks like on the device.

ID: progress

The progress template is a flexible way to visualize any progress-based activity. It supports simple single-color bars, multi-segment bars with individual colors, and two display modes for segmented bars.

Use the Home Assistant blueprint to get started quickly with the Progress template.

Two more blueprints are available for segmented bars and timer-driven progress. See the blueprints page for the full list.

FieldTypeDescriptionRequired?
template"progress"Identifies this template.Yes
progressProgressBarProgress bar configuration.Yes
iconstring | IconAn SF Symbols icon name or an Icon with rendering options.No
header_leftValueLeft header slot.No
header_rightValueRight header slot.No
footer_leftValueLeft footer slot.No
footer_rightValueRight footer slot.No
compact_valueValueValue shown in Dynamic Island compact trailing.No
tap_urlstringTap action URL to open when tapped.No

To get a better understanding of how this schema correlates to a displayed live activity, see the picture below:

Shows how the progress template schema maps to a displayed live activity.

The progress field accepts two styles, distinguished by the style key.

A single-color bar.

FieldTypeDescriptionRequired?
style"simple"Identifies this style.Yes
valuefloatProgress in range [0.0–1.0].Yes
colorColorBar fill color.No

A bar split into labeled sections with individual colors.

FieldTypeDescriptionRequired?
style"segmented"Identifies this style.Yes
valuefloatOverall progress in range [0.0–1.0].Yes
segmentsSegment[]1–4 segments. Values must sum to 1.0.Yes
display"split" | "layered"How segments are rendered. Default: "split".No
FieldTypeDescriptionRequired?
valuefloatFraction of the bar this segment occupies.Yes
fill_colorColorColor when filled.Yes
track_colorColorUnfilled track color.No
track_fill"solid" | "hatched"Track pattern. Default: "solid".No
labelstringLabel shown below the segment.No

Simple bar:

Shows a simple progress bar with header and footer slots.
{
"template": "progress",
"icon": "washer",
"header_left": { "value": "In progress", "text_color": "green" },
"header_right": { "value": "1h 32m" },
"progress": {
"style": "simple",
"value": 0.65,
"color": "blue"
},
"footer_left": { "value": "Progress" },
"footer_right": { "value": "65%" }
}

Segmented bar (layered, with hatched overflow zone):

Shows a segmented progress bar with hatched overflow zone.
{
"template": "progress",
"icon": "bolt.car",
"header_left": { "value": "90%", "text_color": "green" },
"header_right": { "value": "3 min left" },
"progress": {
"style": "segmented",
"value": 0.90,
"display": "layered",
"segments": [
{
"value": 0.8,
"fill_color": "green",
"track_color": "gray",
"label": "Standard"
},
{
"value": 0.2,
"fill_color": "green",
"track_color": "gray",
"track_fill": "hatched",
"label": "Extended"
}
]
},
"footer_left": { "value": "Supercharger", "text_color": "gray" },
"footer_right": { "value": "Est. $4.85" },
"compact_value": { "value": "90%" }
}

ID: monitor

The monitor template is designed for tracking a live status with one or two columns of labeled values.

Use the Home Assistant quick-start blueprint to post Live Activity updates using the Monitor template.

FieldTypeDescriptionRequired?
template"monitor"Identifies this template.Yes
iconstring | IconAn SF Symbols icon name or an Icon with rendering options.No
left_columnColumnLeft column payload.No
right_columnColumnRight column payload.No
primary_column"left" | "right"Column emphasized in compact layouts.No
tap_urlstringTap action URL to open when tapped.No

To get a better understanding of how this schema correlates to a displayed live activity, see the picture below:

Shows how the schema correlates to a displayed live activity.
FieldTypeDescriptionRequired?
headerstringShort label above the value.No
valueValueValue payload.Yes
footerstringOptional label below the value.No
FieldTypeDescriptionRequired?
valuestringValue to display.Yes
text_colorColorText color for the value.No
formatterFormatterControls how the raw value is displayed.No

Color identifiers map to SwiftUI system colors. Swatches below show approximate previews.

IdentifierPreview
red
orange
yellow
green
mint
teal
cyan
blue
indigo
purple
pink
brown
gray
gray2
gray3
gray4
gray5
gray6

When you need more than just a symbol name, pass an object to customize how the icon is rendered. All fields except name are optional — omit them to keep the default appearance.

FieldTypeDescriptionRequired?
namestringSF Symbol name.Yes
rendering_mode"monochrome" | "hierarchical" | "palette" | "multicolor"How the symbol’s layers are colored.No
primary_colorColorPrimary layer color.No
secondary_colorColorSecondary layer color (palette mode).No
tertiary_colorColorTertiary layer color (palette mode).No
color_rendering"flat" | "gradient"Flat fill or vertical gradient. Default: "flat".No

Example — palette icon with gradient:

{
"icon": {
"name": "thermometer.sun",
"rendering_mode": "palette",
"primary_color": "red",
"secondary_color": "orange",
"color_rendering": "gradient"
}
}

Passing a plain string ("icon": "thermometer.sun") continues to work and renders the symbol in monochrome with the default color.

A formatter decides how to display the raw value field. If formatter is omitted or provided with null, it will display the value as-is without any transformation.

IdentifierDescription
time_sinceFormats an ISO8601 timestamp as an auto-updating elapsed timer.
time_untilFormats an ISO8601 timestamp as an auto-updating countdown timer.
{
"template": "monitor",
"icon": "robotic.vacuum.and.ellipsis",
"left_column": {
"value": {
"value": "Mopping",
"text_color": "indigo"
},
"footer": "In living room"
},
"right_column": {
"value": {
"value": "20.1 m²"
},
"footer": "Battery: 87%"
}
}
Left: Expanded dynamic island. Right: Lock screen. Left: Expanded dynamic island. Right: Lock screen.

ID: generic

The generic template works best for simple activities that map cleanly to a progress bar.

Use the Home Assistant quick-start blueprint to post Live Activity updates using the Generic template.

FieldTypeDescriptionRequired?
template"generic"Identifies this template.Yes
progressfloatProgress of the activity in range [0.0-1.0].Yes
statestringDescribes the state of the activity.No
iconstring | IconAn SF Symbols icon name or an Icon with rendering options.No
remaining_timeintRemaining time in seconds.No
tap_urlstringTap action URL to open when tapped.No

To get a better understanding of how this schema correlates to a displayed live activity, see the picture below:

Shows how the schema correlates to a displayed live activity.
{
"template": "generic",
"progress": 0.35,
"state": "In progress",
"icon": "washer",
"remaining_time": 2120
}
Left: Expanded dynamic island. Right: Lock screen. Left: Expanded dynamic island. Right: Lock screen. Left: Compact dynamic island. Right: Apple Watch. Left: Compact dynamic island. Right: Apple Watch. Live activity in the CarPlay dashboard. Live activity in the CarPlay dashboard.

All templates support an optional tap_url field. When set, tapping the Live Activity on the lock screen or Dynamic Island opens the specified URL instead of the Aivi app.

This works with any URL scheme the device can handle: regular web links, app deep links, or custom schemes.

Use casetap_url value
Open a webpagehttps://example.com/status
Navigate in Home Assistanthomeassistant://navigate/lovelace/climate
Call a HA servicehomeassistant://call_service/switch.toggle?entity_id=switch.garage
Open another appmyapp://dashboard

Home Assistant’s Companion app supports a number of URL schemes for navigating to dashboards, calling services, and more. See the HA Companion docs on URL Handler for the full list.

To browse the full catalog of available symbols, you can use one of the following apps:

  • SF Symbols — Apple’s official app for macOS.
  • Interactful — A free third-party SF Symbols browser for iPhone and iPad. Look under Foundations → Iconography.