Skip to content

About

Home Assistant custom integration (HACS) to easily manage loyalty cards, vouchers and shop promotions

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

85 Commits

Folders and files

Repository files navigation

hacs_badge GitHub release GitHub repo size

GitHub issues GitHub last commit GitHub commit activity

Wallet Assistant

Wallet Assistant - Loyalty cards, vouchers and shop promotions - Home Assistant Custom Integration

A combined Home Assistant custom integration and Lovelace dashboard card that makes it easy to manage loyalty cards, vouchers, and store promotions directly within Home Assistant.

Several similar solutions already exist, and I tried a number of them before starting this project. While they all offer useful functionality, none of them fully matched my requirements.
  • VoucherVault is an excellent open-source application with extensive features for managing loyalty cards, vouchers, and coupons. It integrates well with Home Assistant through a dedicated custom integration. If you're looking for a comprehensive and secure solution to manage a large collection of cards and vouchers, it's definitely worth considering. For my use case, however, it felt somewhat over-engineered and resource-intensive. Running VoucherVault typically requires multiple components, including the web application itself, Redis, a database (or SQLite), and the Home Assistant integration, which adds complexity if you only need to manage a small personal collection.

  • Shopping List Manager is a Home Assistant custom integration with a companion Lovelace card that focuses primarily on shopping lists. It also includes support for storing loyalty cards associated with stores. While the concept is useful, the loyalty card functionality was too limited for my needs.

  • Card Wallet (forum) is a lightweight and elegant Home Assistant integration for storing loyalty cards. It uses a separate Lovelace card for the user interface and stores data in a simple JSON file. I initially started extending this project because I appreciated its straightforward design and simplicity. However, as I continued adding features, I realized it would be more practical to build a solution tailored to my own vision. I wanted to add voucher support, combine the frontend and backend into a single repository, and introduce additional features for managing promotions and special offers.

So I started with the Card Wallet code and extended it.

⭐ Features

  • Single custom HACS integration installation
  • UI config flow setup of the integration
  • Bundled Lovelace dashboard card served by the integration
  • Support loyalty cards, linked to Home Assistant users
    • User-friendly default grid view, can be switched to list view
    • Easy direct filtering while typing to quickly retrieve the needed card
    • Search the current filter text in configurable price-watch services once more than 3 characters are typed
    • Easily add a logo by typing the base URL of the company and retrieve image using logo.dev
    • Easily add barcode code by scanning with camera
    • Simple storage in a JSON file within the Home Assistant folder
    • Support QR and barcode representation, last used representation is used as default
    • By default see all cards of all users, if desired filter and switch between your own cards and other Home Assistant user cards
    • Add new cards directly from the UI
    • Edit or delete your cards
    • Preserve the active search and open card when returning from another mobile app
    • Responsive design
  • Support for voucher cards, linked to Home Assistant users
    • Show vouchers inline with loyalty cards, or filter the view by type
    • Easy direct filtering while typing to quickly retrieve the needed item
    • See expiry dates
    • Sensor with number of vouchers that will expire soon
  • Support for price-watch links
    • After entering a search query, price-watch links below the loyalty/voucher cards will be shown
    • The links will re-drirect to browser with search query pre-filled to allow easy price lookups
  • Support for promotion platform vouchers
    • Edenred platform: enter edenred platform credentials
    • Benefits at work platform: enter platform credentials
    • CrelanCo Deals: import authenticated deal listings and details
    • Argenco: import public shareholder benefits without credentials; optionally authenticate to request account-specific voucher data
    • ENGIE Benefits: import the complete public benefits catalogue without credentials
    • All promotions are refreshed once a week and persisted in internal per-platform caches
    • When searching on the wallet assistant dashboard, all possible matches of the promotion platforms will be shown immediately

Installation

Open your Home Assistant instance and add this repository to HACS.

  1. Open the HACS repository link above, or add myTselectionPublic/Wallet-Assistant manually as a custom HACS integration repository.
  2. Install Wallet Assistant from HACS and restart Home Assistant.
  3. Add Wallet Assistant from Settings > Devices & services > Add integration.
  4. Configur price-watch links and the promotion platform credentials using the integration configuration option
  5. Add a new Lovelace/Dashboard card by selecting the card in UI ('Community cards') or manually:
type: custom:wallet-assistant-card

Storage

Wallet Assistant stores items in wallet_assistant_items.json in the Home Assistant config folder. Promotion-platform caches are stored separately per platform in Home Assistant's versioned .storage directory. They are loaded into memory for searching and written only after a successful refresh.

Price-Watch Searches

When the dashboard filter contains more than 3 characters, Wallet Assistant shows quick links below the filtered items for external product and price-watch searches.

The default services are Google Shopping, Hagglezon, Tweakers Pricewatch, MaxSpar, Idealo France, Geizhals, and Kieskeurig. To customize them, open Settings > Devices & services > Wallet Assistant > Configure > Price-watch sites. From there you can add, edit, disable, or remove a site. Each site has a name, an enabled toggle, and a search URL template.

{query} is replaced with the current filter text.

Promotion Platforms

Wallet Assistant includes a generic promotion-platform search pipeline. When the dashboard filter contains more than 3 characters, the frontend calls the integration backend and can show normalized external promotions below the matching cards.

Promotion platforms are configured from Settings > Devices & services > Wallet Assistant > Configure > Promotion platforms. Each platform has a platform ID, name, enabled toggle, login or base address, username, password, and an optional two-factor authentication seed.

The benefits_at_work platform logs in to the configured Benefits at Work tenant, accepts the required disclaimer, discovers the main Alle voordelen in ... category overview links, and refreshes available offers from those category pages once per week. Promotions from every platform are normalized into the same JSON structure and persisted in a separate internal cache per platform. The wallet card searches the in-memory cache through the integration API, so UI searches do not log in to external platforms on every keystroke.

Use the tenant login URL as the base address, for example https://company.benefitsatwork.be/login.

For edenred_engagement, use the tenant address such as https://company.engagement.edenred.be. If Edenred requires authenticator-app verification, enter its base32 TOTP seed (or an otpauth:// URI) in the two-factor authentication seed field. Wallet Assistant generates and submits a token only when Edenred redirects the login to its multi-factor validation page.

For argenco, use https://www.argenco.be/benefits. Credentials are optional because Argenco exposes its promotion catalogue and ordinary benefit details publicly. When credentials are configured, Wallet Assistant also follows the website's validation and login sequence to request account-specific voucher codes when available. If the account uses authenticator verification, also enter its base32 TOTP seed or otpauth:// URI. A failed optional login does not prevent public promotions from refreshing.

For engie_benefits, use https://www.engie.be/nl/voordelen/. No credentials are required. ENGIE embeds every category and promotion in the public page; Wallet Assistant reads the complete catalogue in one request, filters hidden, future, and expired entries, and preserves each offer's public detail link, discount, description, image, category, and validity dates.

For crelan_coop_deals, use https://crelancodeals.be/nl/. CrelanCo's login currently requires an interactive Google reCAPTCHA, which Home Assistant cannot solve unattended. Log in with a browser and copy only the value of the shop_sid cookie (eg visible on HTTP post https://crelancodeals.be/nl/accounts/login). Store the value itself of the shop_sid into the optional authenticated "session cookie" field of Wallet Assistant. Saving the options immediately refreshes the catalogue. The cookie is treated as a secret and is never written to logs. Username/password login remains available if CrelanCo removes the interactive challenge. If a later refresh finds that the session has expired, Wallet Assistant keeps the last successful catalogue and reports it as stale until you provide a fresh cookie.

Adapters normalize external data into a shared promotion structure with a title, promotion text, image URL, platform link, optional voucher code, validity dates, and categories.

The Promotion platform promotions sensor exposes only the total promotion count and compact per-platform refresh status. Full promotion records are deliberately not included in entity attributes, preventing large state and Recorder payloads when platforms contain hundreds of deals. When a refresh fails, the last successfully stored records remain available and the platform status is marked stale.

Dashboard Resource

The dashboard card is built into custom_components/wallet_assistant/frontend/wallet-assistant-card.js, served by the integration at /wallet_assistant_static/wallet-assistant-card.js, and automatically registered as a Lovelace module resource.

πŸ“· Screenshots

image
image
image
image
image
image
image
image

πŸ™ Credits

About

Home Assistant custom integration (HACS) to easily manage loyalty cards, vouchers and shop promotions

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages