{"id":30991658,"url":"https://github.com/jmdevita/etsy-shop-ha-integration","last_synced_at":"2026-05-24T04:02:32.605Z","repository":{"id":313242563,"uuid":"1050580700","full_name":"jmdevita/etsy-shop-ha-integration","owner":"jmdevita","description":"A Home Assistant Integration for Etsy Shops / Etsy Sellers (currently on HACS)","archived":false,"fork":false,"pushed_at":"2026-04-01T01:10:46.000Z","size":81,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T02:52:44.804Z","etag":null,"topics":["claude-assisted","etsy-seller","hacs","hacs-integration","home-assistant","home-assistant-integration"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmdevita.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-04T16:24:20.000Z","updated_at":"2026-04-01T01:05:45.000Z","dependencies_parsed_at":"2025-09-04T19:47:25.556Z","dependency_job_id":"58320a72-ba0a-4fdf-ada5-b8e06de446f5","html_url":"https://github.com/jmdevita/etsy-shop-ha-integration","commit_stats":null,"previous_names":["jmdevita/etsy-shop-ha-integration"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/jmdevita/etsy-shop-ha-integration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmdevita%2Fetsy-shop-ha-integration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmdevita%2Fetsy-shop-ha-integration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmdevita%2Fetsy-shop-ha-integration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmdevita%2Fetsy-shop-ha-integration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmdevita","download_url":"https://codeload.github.com/jmdevita/etsy-shop-ha-integration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmdevita%2Fetsy-shop-ha-integration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31842182,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T11:29:19.690Z","status":"ssl_error","status_checked_at":"2026-04-15T11:29:19.171Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-assisted","etsy-seller","hacs","hacs-integration","home-assistant","home-assistant-integration"],"created_at":"2025-09-12T20:46:17.798Z","updated_at":"2026-05-24T04:02:32.595Z","avatar_url":"https://github.com/jmdevita.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Etsy Shop Home Assistant Integration\n\n[![Home Assistant](https://img.shields.io/badge/Home%20Assistant-2025.8.3%2B-blue.svg)](https://www.home-assistant.io/)\n[![GH-downloads](https://img.shields.io/github/downloads/jmdevita/etsy-shop-ha-integration/total)](https://github.com/jmdevita/etsy-shop-ha-integration/releases)\n[![HACS Compatible](https://img.shields.io/badge/HACS-Compatible-green.svg)](https://hacs.xyz)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA Home Assistant custom integration that pulls data from your Etsy shop — listings, orders, and shop stats — and exposes them as sensors you can use in dashboards and automations.\n\nYou can connect either with your own Etsy developer credentials (Direct mode) or through a hosted proxy that handles OAuth for you (Proxy mode).\n\n[![Get started in 2 minutes](https://img.shields.io/badge/No_Etsy_developer_account%3F-Get_started_in_2_minutes_%E2%86%92-orange?style=for-the-badge\u0026logo=etsy\u0026logoColor=white)](https://bridge.ctrlprinthome.com/)\n\nDon't want to register an Etsy app or manage OAuth credentials? Sign up at [bridge.ctrlprinthome.com](https://bridge.ctrlprinthome.com/), grab an API key, and jump to *Proxy Service* setup below.\n\n## Installation\n\n### HACS\n\n1. In HACS, open the three-dots menu and choose *Custom repositories*.\n2. Add `https://github.com/jmdevita/etsy-shop-ha-integration` as an *Integration*.\n3. Install \"Etsy Shop\" and restart Home Assistant.\n\n### Manual\n\nCopy `custom_components/etsyapp` into your Home Assistant `custom_components` directory and restart.\n\n## Setup\n\n### Direct Etsy API\n\nIf you have (or are willing to register for) an Etsy developer account, this is the most straightforward option.\n\n1. Create an app at the [Etsy Developer Dashboard](https://www.etsy.com/developers/your-apps) and note the App Keystring and Shared Secret.\n2. In Home Assistant, go to *Settings → Devices \u0026 Services → Add Integration* and search for \"Etsy Shop\".\n3. Pick *Direct Etsy API* and paste in the keystring and secret.\n4. Authorize the app on Etsy and pick which shop to monitor (if you have more than one).\n\n### Proxy Service\n\nFor users who don't want to manage their own Etsy developer credentials. The proxy holds the OAuth client and refreshes tokens on your behalf; your Home Assistant instance authenticates to it with an API key and HMAC secret.\n\n1. Sign up at [bridge.ctrlprinthome.com](https://bridge.ctrlprinthome.com/). Approval is manual but usually quick.\n2. Once you receive your credentials, add the integration as above and select *Proxy Service*.\n3. Enter the API key and HMAC secret, authorize with Etsy, and pick a shop.\n\n## Naming\n\nEach integration entry is named `ShopName (ShopID) - Direct` or `ShopName (ShopID) - Proxy` (for example, `TestEtsyShop (56636211) - Direct`). The device itself uses just the shop name. This keeps things readable when you're running multiple shops or both connection modes side by side.\n\n## Sensors\n\n| Sensor | State | Attributes |\n| --- | --- | --- |\n| Etsy Shop Info | Shop name | Shop ID, currency, creation date, announcement, sale message |\n| Etsy Active Listings | Active listing count | Recent listings, total views, total favorites |\n| Etsy Recent Orders | Recent transaction count | Transaction details, recent revenue, buyer info |\n| Etsy Last Order | Last order item quantity | Buyer name, order totals (subtotal, grandtotal, shipping, tax), net payout (`amount_net`) after Etsy fees, per-item breakdown, buyer message, gift info, ship/paid status |\n| Etsy Shop Statistics | Total sales count | Active listings, views, favorites, revenue, ratings |\n\n## Sample dashboard cards\n\nThe five sensors render as plain tiles by default, but the rich attribute data can be pulled into a polished overview using only built-in Lovelace cards — no HACS, no custom-card dependencies.\n\nTwo ready-to-use examples live in [`examples/`](./examples):\n\n- **[`examples/dashboard-card.yaml`](./examples/dashboard-card.yaml)** — full overview: shop name, recent revenue, average rating, and a recent-sales feed with compact relative timestamps. Built as a `vertical-stack` of markdown cards.\n- **[`examples/glance-card.yaml`](./examples/glance-card.yaml)** — compact alternative showing just the three headline numbers as a glance row.\n\nTo use either: open the file, copy its contents, then in Home Assistant go to **Edit Dashboard → Add Card → Manual** and paste.\n\n## Services\n\n- `etsyapp.refresh_data` — force a poll of the Etsy API.\n- `etsyapp.get_shop_stats` — return detailed shop statistics, with optional filtering for listings and transactions.\n\n## Options\n\nAfter setup you can adjust:\n\n- Listings display limit (1–25)\n- Transactions display limit (1–25)\n- Stock threshold for the low-stock trigger (1–100)\n- Update interval (60–3600 seconds, Direct mode only)\n\n## Device Triggers\n\nThe integration registers three device triggers for use in automations:\n\n- `new_order` — fires when a new order is detected\n- `new_review` — fires on a new review\n- `low_stock` — fires when a listing drops below the configured stock threshold\n\nExample:\n\n```yaml\nautomation:\n  - alias: Notify on new Etsy order\n    trigger:\n      - platform: device\n        device_id: YOUR_DEVICE_ID\n        domain: etsyapp\n        type: new_order\n    action:\n      - service: notify.mobile_app\n        data:\n          message: \u003e-\n            New order from {{ trigger.event.data.receipts[0].buyer_name }} —\n            {{ trigger.event.data.receipts[0].currency_code }}{{ trigger.event.data.receipts[0].grandtotal }}\n```\n\nThe `receipts[]` entries in the `new_order` event carry the same fields as the `etsy_last_order` sensor attributes (buyer name, totals, items, message from buyer, etc.).\n\n### Proxy mode\n\nProxy mode requires proxy version **1.1.0 or newer** for the receipts/payments endpoints. Older proxies fall back to the transactions-only path automatically; buyer name and order totals will not be populated until the proxy is upgraded.\n\n## Requirements\n\n- Home Assistant 2025.8.3 or newer (needed for PKCE OAuth2 support)\n- An Etsy seller account with an active shop\n- Either an Etsy developer account (Direct mode) or proxy credentials (Proxy mode)\n\n## Acknowledgements\n\nPKCE support in Home Assistant's OAuth2 framework comes from [@svrooij's work in core#139509](https://github.com/home-assistant/core/pull/139509), which this integration relies on.\n\n## Support\n\nBug reports and feature requests go in the [issue tracker](https://github.com/jmdevita/etsy-shop-ha-integration/issues).\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n---\n\nThis integration is not affiliated with or endorsed by Etsy, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmdevita%2Fetsy-shop-ha-integration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmdevita%2Fetsy-shop-ha-integration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmdevita%2Fetsy-shop-ha-integration/lists"}