Plan your HelloFresh boxes without leaving Home Assistant. Choose each week's meals (customized like on the website) and Market extras and save them together, follow the next box to your door, tick off the pantry staples it doesn't include, browse ~10,000 recipes, and manage your plan. It all lives in one card that the integration adds to your sidebar, so there's no dashboard to build. Behind it are 50+ entities, a delivery calendar, pantry to-do lists and 26 services for your own automations.
⚠️ This is an unofficial integration, reverse-engineered from the HelloFresh website. It is not affiliated with or endorsed by HelloFresh, and the underlying API may change at any time.
Every account detail in these images is made up. The card works on phones and in dark mode too, and it's also an ordinary card you can put on any dashboard.
- Highlights
- Installation
- Configuration
- What It Provides
- The HelloFresh card
- Current Scope
- Troubleshooting
- Diagnostics
- Development
- References
Reference docs (split out of this README to keep it browsable):
| Document | Contents |
|---|---|
| docs/entities.md | Every sensor, binary sensor, switch, button, calendar, and to-do list |
| docs/dashboard.md | The HelloFresh card, tab by tab: the sidebar entry, options, screenshots, and moving from the deprecated classic cards |
| docs/services.md | All 26 services: parameters and responses |
Home Assistant requirement:
- Home Assistant Core with support for config flows, diagnostics, and custom integrations
- In Home Assistant, open HACS.
- Open the menu in the top-right corner (⋮) and select Custom repositories.
- Paste this repository's URL:
https://github.com/kedube/ha-hellofresh - Set the category to Integration and click Add.
- Search for HelloFresh in HACS, open it, and click Download.
- Restart Home Assistant.
After restart, add the integration from Home Assistant:
Once your account is connected, HelloFresh appears in the sidebar (see The HelloFresh card).
- Copy
custom_components/hellofreshinto your Home Assistantconfig/custom_componentsdirectory. - Restart Home Assistant.
- Add the integration from Settings > Devices & services > Add integration.
HelloFresh has no official API or OAuth app. Setup offers two ways to connect, chosen from a menu when you add the integration:
- Email and password (recommended) — the integration logs in the same way the website does, obtaining a short-lived access token plus a long-lived refresh token, then keeps the connection refreshed automatically. No developer tools or token copying required.
- Access token (advanced backup) — paste your HelloFresh
apiV2Authtoken from a logged-in browser session. Use this only if email/password sign-in is blocked for you (see Troubleshooting). It works until the token expires (~60 days), then prompts you for a fresh one.
- Add the integration (see Installation).
- Choose Email and password (recommended).
- Choose your Country (see Supported regions).
- Enter the email and password you use to sign in to HelloFresh.
- Log authentication diagnostics is enabled by default on this form; leave it on to diagnose a blocked sign-in.
- Submit. Home Assistant signs in, validates the account, and stores the resulting tokens so it can refresh access on its own.
🔒 About your credentials. Your email and password are stored in the Home Assistant config entry and used only to log in to HelloFresh's own login endpoint and to re-authenticate when the refresh token eventually expires. They are redacted from diagnostics exports. As with any third-party integration, the security of your credentials depends on the security of your Home Assistant installation.
Use this only when email/password sign-in is blocked. The setup dialog includes step-by-step directions; in short:
- Add the integration and choose Access token (advanced), then your Country.
- In a desktop browser, sign in to your regional HelloFresh website so you reach your account page.
- Open developer tools (right-click → Inspect, or F12), open the cookies view (Chrome/Edge: Application → Cookies; Firefox: Storage → Cookies), select your HelloFresh site, and copy the Value of the
apiV2Authcookie. - Paste it into the token field and submit. Log authentication diagnostics is enabled by default if token validation is blocked. A full
apiV2Authvalue includes the refresh token for the longest-lasting connection; a bare access token also works but is shorter-lived.
⚠️ A token-only entry cannot self-heal: when the refresh token expires (~60 days) or HelloFresh rotates it, there are no stored credentials to log back in, so Home Assistant raises a reauthentication prompt asking for a new token. Prefer email/password whenever it works.
HelloFresh fronts its sites with Cloudflare. To pass that layer the integration presents as a real Google Chrome on Windows browser, including a genuine Chrome TLS/HTTP-2 fingerprint via the bundled curl_cffi dependency (installed automatically), with headers that claim the same Chrome version that fingerprint is. Most regions accept this; a region with stricter bot-management rules may still block automated sign-in, which is what the access-token backup path is for.
The integration renews the short-lived access token automatically using the long-lived refresh token. For email/password entries it falls back to a full login with your stored credentials when the refresh token is rejected or expired; if that login fails (for example you changed your password), Home Assistant prompts you to re-enter your email and password. For token-only entries there are no stored credentials, so reauthentication instead asks you to paste a fresh apiV2Auth token.
These settings are adjusted in the integration's Configure dialog after setup. Authentication diagnostics can also be enabled during initial setup. To open Configure:
- Go to Settings → Devices & Services.
- On the Integrations tab, find the HelloFresh card (or click the badge below to jump straight there).
- Click Configure on the HelloFresh entry. (If you have multiple HelloFresh accounts, each entry has its own Configure with independent options.)
- Adjust the fields described below and click Submit.
💡 Configure vs. Add. Use Configure (the button on an existing entry) to change these options. The Add integration flow connects a new account and offers the authentication diagnostics switch for that first attempt. Changes in Configure take effect without re-entering your credentials.
The available options are:
- Show HelloFresh in the sidebar — a HelloFresh entry in Home Assistant's sidebar that opens the HelloFresh card full screen, so there's no dashboard to build. Default on. With more than one account, each gets its own entry, named after its integration entry. Turn it off to remove the entry; the card still works on any dashboard.
- Refresh interval (minutes) — how often account data is polled. Default is 180; allowed range is 5–1440. (This is the data-refresh cadence; the bearer token is refreshed on its own faster-running schedule regardless of this value.)
- Delivery-day watch interval (minutes) — while a box is due (its delivery day, or the day after until the carrier confirms it) or a shipment is on the road, only the delivery status and carrier tracking are re-checked this often, independently of the refresh interval, so an arrival shows within minutes. Default 15; range 0–60 (0 turns the watch off). On other days it makes no extra requests.
- Delivery tracking refresh interval (seconds) — Netherlands and Germany accounts only. While live last-mile tracking is active, the unauthenticated Tracey endpoint (
c_hf_getTraceyData) is queried this often for the phase, ETA, stops-before-you, and driver location. Default 300 seconds; range 60–3600. This option is hidden for every other country. - Use public menu fallback — when authenticated menu data is unavailable, scrape the public regional menu page so recipe data still appears.
- Use curl_cffi's built-in headers (experimental) — let curl_cffi supply Chrome headers for login, token refresh, and data calls. The integration still supplies API fields and corrects fetch metadata to describe an XHR. Default off sends the integration's complete, ordered Chrome-style XHR headers.
- Log authentication diagnostics — when enabled, log the HTTP result of the login and token-refresh steps. Failed responses also show the Cloudflare challenge flag, error code, and Ray ID when available. Default on; the added diagnostic fields never include raw response bodies or credentials.
- Past delivery history (weeks) — how many weeks of past deliveries to fetch and make browsable in the cards. Default is 26 (about 6 months); allowed range is 1–104. Lower it to reduce how much data is pulled each refresh if you don't need a long history; raise it to browse further back (use ~56 for a full year, so the box from ~12 months ago is included). Changing it reloads the integration.
- Show favorite hearts — show a ♥ on meals bookmarked in your cookbook. Default on; costs one small extra request per refresh. Turning it off only removes the hearts — the favorite services and the Recipes card keep working.
- Create pantry prep lists — keep the two prep-list to-do entities that hold the ingredients your chosen meals need but HelloFresh doesn't ship (salt, oil, butter, eggs), one per upcoming delivery. Default on. Turning it off removes both lists and skips the recipe lookups behind them; everything else is unaffected. Changing it reloads the integration.
- Full menu history (weeks) — how long a delivered week keeps its full browsable menu (with your meals highlighted) before collapsing to delivered-meals-only. Default 2, range 0–3 (0 disables it). HelloFresh stops publishing menus for older weeks, so weeks beyond that fall back automatically regardless. Changing it reloads the integration.
- Show data-quality repair warnings — raise issues on Home Assistant's Repairs screen when HelloFresh data is degraded (menu fallback active, unrecognized payloads, account data unavailable, blocked write actions). Default on; data keeps loading either way, so turn it off to suppress these warnings (and clear any already showing) if you'd rather not see them.
Choose the matching country during setup. All 16 markets HelloFresh currently operates in are supported. Prices are reported in each region's local currency, taken from your account data where HelloFresh provides it and falling back to the currency listed below.
Status reflects real-world testing: ✅ = verified end to end (including write actions); Untested = the region is wired up and should work for reading, but no one has confirmed it — reports welcome.
| Region | Code | Website | Currency | Status |
|---|---|---|---|---|
| United States | us |
https://www.hellofresh.com | USD | ✅ Verified |
| United Kingdom | uk |
https://www.hellofresh.co.uk | GBP | ✅ Verified |
| Canada | ca |
https://www.hellofresh.ca | CAD | Untested |
| Australia | au |
https://www.hellofresh.com.au | AUD | Untested |
| New Zealand | nz |
https://www.hellofresh.co.nz | NZD | Untested |
| Germany | de |
https://www.hellofresh.de | EUR | ✅ Verified |
| Austria | at |
https://www.hellofresh.at | EUR | Untested |
| Switzerland | ch |
https://www.hellofresh.ch | CHF | Untested |
| Netherlands | nl |
https://www.hellofresh.nl | EUR | ✅ Verified |
| Belgium | be |
https://www.hellofresh.be | EUR | Untested |
| Luxembourg | lu |
https://www.hellofresh.lu | EUR | Untested |
| France | fr |
https://www.hellofresh.fr | EUR | Untested |
| Ireland | ie |
https://www.hellofresh.ie | EUR | Untested |
| Denmark | dk |
https://www.hellofresh.dk | DKK | ✅ Verified |
| Norway | no |
https://www.hellofresh.no | NOK | ✅ Verified |
| Sweden | se |
https://www.hellofresh.se | SEK | Untested |
Interface language. The integration ships translations for German, Dutch, French, Danish, Norwegian (Bokmål) and Swedish alongside English, for its setup, entities and the HelloFresh card alike; Home Assistant picks one from your profile language, not from the Country you choose above. Any string not yet translated falls back to English automatically. Product wording follows each regional HelloFresh site (Kochbox, Maaltijdbox, Box Repas, måltidskasse, matkasse), so entity names should read the way your own HelloFresh website does — corrections from native speakers are welcome.
Not supported: HelloFresh has exited Spain and Italy (both wound down in early 2026) and Japan (2022), so accounts in those markets can no longer be used.
The integration creates 50+ entities per HelloFresh account:
- Sensors covering deliveries & orders (dates, weeks, delivery window, holiday shifts), meal selection (deadlines, meal/market counts, preselection flags), billing & payments (box price, account credit, payment dates, coupons), account & subscription (plan, servings, status), shipment tracking (status, carrier, tracking link, carrier ETA, actual arrival time), and history & skipped weeks — plus diagnostic sensors for token expiry and the API base URL.
- Binary sensors for automations — most notably
binary_sensor.needs_meal_selection, the primary signal for "review your meals before the cutoff" reminders — plus tracked-shipment availability and parse-health diagnostics. - A delivery calendar (
calendar.delivery_schedule), a refresh button, and a skip next week switch. - Two prep lists (
todo.prep_list,todo.prep_list_week_2) — the pantry staples HelloFresh does not ship for your next two boxes, as native to-do lists you can check off from the dashboard, your phone, or a voice assistant. See Prep lists.
The full reference — every entity with its name, ID, device class, and behavior notes — lives in docs/entities.md.
The integration registers HelloFresh intent handlers for:
- next delivery status
- meal-selection status
- manual refresh
These handlers are intended for Home Assistant conversation workflows and future sentence matching support.
26 services cover everything the integration can do, grouped roughly as:
| Group | Examples |
|---|---|
| Meals and Market | get_weeks, get_menu_courses, select_meals, select_market_items, preview_meal_price |
| Delivery schedule | skip_week, unskip_week, reschedule_week, change_delivery_weekday |
| Plan and account | get_account_summary, change_plan, get_spending |
| Food profile | get_food_profile, set_food_profile |
| Recipes and favorites | get_catalog_recipes, get_recipe_detail, add_favorite |
Many return a response (delivery weeks, spending, recipe detail) for use with
response_variable in scripts and automations. All of them appear in Developer tools → Actions
with inline field help.
Full reference — every service, its parameters, and what it returns — is in docs/services.md.
Entity IDs below use a hellofresh_us prefix as the example — substitute your own (it comes from your config-entry title; see docs/entities.md).
Remind me to pick meals before the cutoff. binary_sensor.needs_meal_selection turns on when any upcoming week still needs your attention (HelloFresh auto-picked it, or it has too few meals); pairing it with the selection-deadline sensor puts the actual cutoff in the message:
automation:
- alias: "HelloFresh: meal selection reminder"
triggers:
- trigger: state
entity_id: binary_sensor.hellofresh_us_needs_meal_selection
to: "on"
actions:
- action: notify.mobile_app_your_phone
data:
title: "Pick your HelloFresh meals"
message: >-
HelloFresh chose meals for an upcoming week. Review them before
{{ as_timestamp(states('sensor.hellofresh_us_next_selectable_delivery_selection_deadline'))
| timestamp_custom('%A %-I:%M %p') }}.
data:
# Tapping it opens the HelloFresh menu in the companion app (iOS: url, Android: clickAction).
url: /hellofresh-app/menu
clickAction: /hellofresh-app/menuTell me when the box is out for delivery. The tracked-shipment status follows the carrier feed:
automation:
- alias: "HelloFresh: box on the way"
triggers:
- trigger: state
entity_id: sensor.hellofresh_us_shipment_tracking_status
to: "Out for delivery"
actions:
- action: notify.mobile_app_your_phone
data:
title: "HelloFresh is out for delivery"
message: >-
Box {{ states('sensor.hellofresh_us_shipment_tracking_number') }} is out
for delivery ({{ states('sensor.hellofresh_us_tracked_shipment_carrier') }}).Other useful triggers: the calendar.delivery_schedule entity for day-of-delivery automations, sensor.next_selection_deadline (a timestamp) with a time-based trigger for "24 hours before cutoff" reminders, and binary_sensor.payload_shape_changed to get notified if a HelloFresh site change breaks parsing.
Sensor state attributes are kept small so the recorder stores them without hitting Home Assistant's 16 KB per-state attribute limit. The full recipe catalog for a week (which can be large once the authenticated menu loads) is intentionally not embedded in any sensor attribute — the per-week weeks list on sensor.hellofresh_us_next_selection_deadline and the single-week context objects on other sensors carry only scalar week metadata (dates, deadline, meal counts, slot). No recorder exclude configuration is required. When you do need per-week recipes (names, selection state, images), call the read-only hellofresh.get_weeks service, which returns them on demand without touching the recorder.
The complete recipe and market data is still available where it matters: the hellofresh.select_meals and hellofresh.select_market_items services read it from the live integration state, and a full serialization (with recipes) is included in the redacted diagnostics export for debugging.
Everything in the Highlights is one card, custom:hellofresh-card, organised
the way hellofresh.com is:
- Overview — the next box front and centre: its date, the selection-deadline countdown, the meals in it, delivery tracking, and the pantry staples to buy before it arrives; then the weeks coming up (as cards or a month calendar) and recent deliveries with their delivery details.
- Menu and Market — one week strip, one box. Pick meals (customized like on the website) and add-ons for a week, see a live price estimate in the sticky box bar, and save both with a single tap.
- Recipes — the ~10,000-recipe catalog and your cookbook.
- Account — plan and billing (including box size and delivery day), food preferences, and spending.
In the sidebar. You don't need a dashboard: the integration adds HelloFresh to Home Assistant's sidebar, opening the card full screen. On a phone it runs edge to edge, with the usual button to open the sidebar. With more than one HelloFresh account, each gets its own entry. To remove it, turn off Show HelloFresh in the sidebar in the options.
On a dashboard. It's also an ordinary card, registered automatically, so anywhere it takes one line (or pick HelloFresh in the card picker):
type: custom:hellofresh-cardSetting views: to one section gives a focused card, for example just Recipes on a kitchen tablet.
Every option and every tab is in docs/dashboard.md.
The seven single-purpose cards the HelloFresh card grew out of — Meal planner, Market, Recipes, Food Profile, Schedule, Subscription and Cost — still ship and still work, but they're deprecated and will be removed in a future release. Each now says so in its title and in the card picker, and while a dashboard still uses one, the Repairs screen lists them. They also load only where they're used, so nobody else downloads them with every dashboard. The HelloFresh card does everything they do: Moving from the classic cards shows where each feature went.
Reading your account — deliveries and orders, per-week meal selections (what you actually picked, including what shipped on past weeks), recipes with nutrition and images, shipment tracking with carrier detail, billing and account credit, and delivered-box history over a configurable window. Multiple subscriptions on one account are aggregated.
Changing your account — meal selection with per-meal serving quantities, Market add-ons, skip/unskip, one-off reschedules, recurring delivery day, box size, and food preferences. Choosing more or fewer meals than your plan resizes that week's box automatically (minimum 2).
Browsing the public catalog — ~10,000 recipes by category, full cooking detail, and cookbook favoriting (including the full cookbook, which HelloFresh's own site only previews).
In Home Assistant — the HelloFresh card in the sidebar (or on any dashboard), 50+ entities, a delivery calendar, two prep-list to-do lists, voice intents, response-returning services for automations, and Repairs issues when something needs your attention.
- Write actions are verified on the US and UK sites. Other regions use the same endpoints and should work, but fall back to best-effort guesses if a request can't be built.
- No push updates. HelloFresh offers no webhook channel, so the integration polls on the configurable refresh interval.
- No OAuth. HelloFresh publishes no public API or OAuth app, so the integration signs in with your credentials exactly as the website does.
- Bot protection varies by region. Some regional sites are tuned more aggressively than others; see Why bot protection can matter.
Because HelloFresh publishes no stable contract, write actions stay cautious: the integration uses the website's own endpoints first, tries a small set of fallbacks if those don't fit your account, and stops with a clear error rather than guessing.
The integration keeps asking me to reauthenticate. This means HelloFresh rejected a login with your stored credentials — most often because the account password changed, or HelloFresh required an extra verification step. Open the reauthentication prompt and enter your current HelloFresh email and password. Make sure you selected the correct region during setup, since each region is a separate HelloFresh login.
Setup fails with "Invalid authentication." HelloFresh rejected the email/password. Double-check the credentials, confirm you can sign in to the correct regional HelloFresh website with them, and that you picked the matching Country.
Setup fails with "Could not connect." Home Assistant could not reach HelloFresh, or the response wasn't understood. Check Home Assistant's network access and try again; transient site errors usually clear on a retry.
The log shows "login BLOCKED by bot protection" (HTTP 403 with an HTML page).
HelloFresh's website fronts its login with Cloudflare bot protection that sometimes blocks automated sign-ins. This is not a wrong-password problem — the request was rejected before it reached the login API, so re-entering your credentials won't help. The integration already presents a real Chrome TLS/HTTP-2 fingerprint (via the bundled curl_cffi) to get past this. After a block it pauses API requests for 5 minutes, doubling the gap after each further block up to 1 hour; the pause is shared by entries on the same Home Assistant event loop and resets after successful authentication once the pause ends. If a region blocks email/password sign-in persistently, use the access-token setup path (Setting up (access token)) as a backup — it bypasses the login step entirely by reusing a token from your own logged-in browser session. Confirm you can still log in to the HelloFresh website in a normal browser; a server-side block on your account or IP would need to clear regardless.
Log authentication diagnostics is on by default on the setup form and in the integration's options. It distinguishes a Cloudflare JavaScript challenge (cf-mitigated=challenge), error 1020 (firewall rule), or error 1010 (browser signature block). The warning also includes the Ray ID when Cloudflare provides one.
Recipe details are missing or a "menu fallback" Repairs issue appears. The integration couldn't load structured menu data from the authenticated API and fell back to scraping the public menu page. Delivery tracking still works; recipe details may be less complete until the API payload is recognized again.
A past week shows the wrong meals selected (or a paused week shows meals). For weeks that already shipped, the selection is taken from your delivery history, not the editable menu, because the menu reports the system's auto-fill picks for old weeks. Within the Full menu history window (2 weeks by default) the full published menu is still shown, with your delivered meals highlighted; older weeks show just the delivered meals. A paused week shipped nothing, so it shows no selection. How far back history goes is the Past delivery history option — 26 weeks by default; weeks older than that aren't loaded, so raise it (to ~56 for a full year) if you need to look further back. If a recent past week still looks wrong, attach a diagnostics export to a GitHub issue.
A "payload shape changed" Repairs issue appears. HelloFresh returned account data the integration couldn't fully parse — usually a sign the website changed. Attaching a diagnostics export to a GitHub issue is the most helpful thing you can do here.
A classic card shows "Custom element doesn't exist" after I added it. The deprecated classic cards load only while a dashboard uses them, and the integration notices a new one when the dashboard is saved. Save the dashboard, then refresh the browser. Better still, use the HelloFresh card, which does everything they do.
A card looks outdated or is missing features after an update.
Every card is versioned with the integration's release version: the card's resource URL carries a ?v=<version> cache-bust that is stamped from manifest.json, and the registered URL is updated automatically on the first Home Assistant restart after an upgrade. If a card still looks stale, restart Home Assistant, then hard-refresh the browser (Ctrl/Cmd+Shift+R) or clear the app cache in the mobile companion app. To confirm which card build the browser actually loaded, open the browser console (F12) — each card logs a startup banner such as HELLOFRESH-CARD v4.00, and that version should match the integration version shown under Settings → Devices & services → HelloFresh. You can also compare the frontend block in a diagnostics export, which lists the resource URLs this release expects next to the URLs actually registered.
This integration includes Home Assistant diagnostics support for config entries, with sensitive values redacted before export. Diagnostics include capability flags, subscription summaries, parsed order data, menu fallback state, delivery/tracking debug attempts, and the normalized serialized account views used by entities.
The export also contains a frontend block for verifying card versions: the integration release version, the card resource URLs this release expects (each stamped with ?v=<version>), and the resource URLs actually registered in Lovelace. If an expected URL and a registered URL differ in their ?v=, the user is loading an older cached card — a restart re-registers the current URLs.
To download a diagnostics export: Settings → Devices & services → HelloFresh → ⋮ (the three-dot menu) → Download diagnostics. Tokens and personal details are redacted automatically, so it is safe to attach to a bug report.
When troubleshooting (e.g. auth/refresh problems, parsing errors, or before filing an issue), enable debug logging for the integration so its activity is written to the Home Assistant log.
Option 1 — no restart, temporary. From Settings → Devices & services → HelloFresh → ⋮ → Enable debug logging. Reproduce the problem, then choose Disable debug logging to download the captured log. This is the quickest way and resets on the next restart.
Option 2 — configuration.yaml, persistent. Add a logger: block, then restart Home Assistant. The integration logs under the custom_components.hellofresh namespace:
# configuration.yaml
logger:
default: warning # keep everything else quiet
logs:
custom_components.hellofresh: debugTips:
- To trace only the parts you care about, target a submodule instead of the whole package — e.g.
custom_components.hellofresh.client: debugfor the HTTP/auth calls, orcustom_components.hellofresh.normalizers: debugfor payload parsing. - Debug output can include request paths and parameters (week ids, ranges, endpoints). It does not log your password, and access/refresh tokens are not written in full — but treat the log as sensitive and review it before sharing.
- After capturing what you need, remove the
logs:entry (or set it back towarning) and restart, sincedebugis verbose.
Logs appear in Settings → System → Logs (and in config/home-assistant.log).
For lower-level endpoint details and normalization notes, see docs/HELLOFRESH_API.md.
This repository is structured as a HACS-compatible custom integration repository:
- integration code under
custom_components/hellofresh - metadata in
custom_components/hellofresh/manifest.json - HACS metadata in
hacs.json - translations in
custom_components/hellofresh/translations/ - local brand assets in
custom_components/hellofresh/brand/
It also includes:
- a pytest suite for API normalization, serialization behavior, the email/password auth and token-refresh lifecycle, the token-only setup/transport paths, and richer capability helpers
- browser tests for the HelloFresh card (
tests/browser): its real flows in headless Chrome against a fake Home Assistant with made-up data (npm test), which also regenerate the screenshots in this README (npm run screenshots) - GitHub Actions workflows for HACS validation,
hassfest,python -m pytest -q, and the browser tests - issue templates for bug reports and feature requests
- a contributing guide
- a full entity reference under
docs/ - a documented quality-scale target
Version history: each push to main publishes a tagged release with generated notes — see the Releases page. The installed version appears in manifest.json, under Settings → Devices & services → HelloFresh, and stamped as ?v= on the card resource URLs (see Diagnostics).
- HACS documentation:
- Home Assistant developer documentation:









