{"id":39487574,"url":"https://github.com/vtex-apps/wish-list","last_synced_at":"2026-01-18T05:28:41.077Z","repository":{"id":38182936,"uuid":"261485539","full_name":"vtex-apps/wish-list","owner":"vtex-apps","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-13T15:35:08.000Z","size":1711,"stargazers_count":12,"open_issues_count":23,"forks_count":25,"subscribers_count":46,"default_branch":"master","last_synced_at":"2024-12-13T17:14:38.240Z","etag":null,"topics":["app-store","us-1st-party-apps"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vtex-apps.png","metadata":{"files":{"readme":"docs/README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-05-05T13:52:06.000Z","updated_at":"2024-12-13T15:35:10.000Z","dependencies_parsed_at":"2024-01-10T16:17:10.965Z","dependency_job_id":"e7e9cc62-3f2a-4189-821b-89562a2bf737","html_url":"https://github.com/vtex-apps/wish-list","commit_stats":null,"previous_names":[],"tags_count":107,"template":false,"template_full_name":null,"purl":"pkg:github/vtex-apps/wish-list","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex-apps%2Fwish-list","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex-apps%2Fwish-list/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex-apps%2Fwish-list/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex-apps%2Fwish-list/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vtex-apps","download_url":"https://codeload.github.com/vtex-apps/wish-list/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vtex-apps%2Fwish-list/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28530817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["app-store","us-1st-party-apps"],"created_at":"2026-01-18T05:28:41.012Z","updated_at":"2026-01-18T05:28:41.065Z","avatar_url":"https://github.com/vtex-apps.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"📢 Use this project, [contribute](https://github.com/vtex-apps/wish-list) to it or open issues to help evolve it using [Store Discussion](https://github.com/vtex-apps/store-discussion).\n\n# Wishlist\n\n##  ⚠️ Maintenance ⚠️\n*Starting June 1st 2023, this application will no longer be maintained by VTEX.*\n\n---\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square)](#contributors-)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nDesigned for **B2C** stores, the Wishlist app adds a heart icon to digital shelves and product details pages, allowing users to add their desired products to a wishlist.\n\n![wishlist-list](https://cdn.jsdelivr.net/gh/vtexdocs/dev-portal-content@main/images/vtex-wish-list-0.png)\u003cbr/\u003e _Example of heart icons on a shelf._\n\n![wish-list-pdp](https://cdn.jsdelivr.net/gh/vtexdocs/dev-portal-content@main/images/vtex-wish-list-1.png) _Example of a heart icon on a product details page._\n\nIn addition, it generates a brand-new route called `/wishlist` under the My Account menu, creating a page with the items users added to the wishlist.\n\n![wishlist-my-account](https://cdn.jsdelivr.net/gh/vtexdocs/dev-portal-content@main/images/vtex-wish-list-2.png) _Example of a wishlist page._\n\n## Configurating the wishlist\n\n1. [Install](https://developers.vtex.com/docs/guides/vtex-io-documentation-installing-an-app/) the Wishlist app in the desired VTEX account by running `vtex install vtex.wish-list` in your terminal.\n2. Open your Store Theme app directory in the code editor.\n3. Add the Wishlist app to your theme's `manifest.json` file inside **peerDependencies** as shown below:\n\n```diff\n \"peerDependencies\": {\n+  \"vtex.wish-list\": \"1.x\"\n }\n```\n\n\u003e ℹ️ _The Wishlist app can export two theme blocks when added as a dependency: `add-to-list-btn` and `list-context.wishlist`. These are responsible for adding the heart icon to other theme blocks and providing product data to build the `/wishlist`, which is also shared with the My Account page._\n\n4. Add the `add-to-list-btn` block in the `store.product` template's children block list. For example:\n\n```diff\n{\n  \"store.product\": {\n    \"children\": [\n      \"product-name\",\n      \"product-reviews\",\n+      \"add-to-list-btn\"\n    ]\n  },\n```\n\n5. Declare the `add-to-list-btn` block as a child of the [`product-summary.shelf` blocks](https://developers.vtex.com/docs/guides/vtex-product-summary/) in your theme. For example:\n\n```diff\n  \"product-summary.shelf\": {\n    \"children\": [\n+     \"add-to-list-btn\",\n      \"product-summary-name\",\n      \"product-rating-inline\",\n      \"product-summary-price\",\n      \"add-to-cart-button\"\n    ]\n  }\n```\n\n\u003e ℹ️ _The new route called `/wishlist`, which creates the Wishlist custom page containing the products added to the wishlist, already has a default template and is rendered under the My Account menu. No further action is required. However, you can **customize the Wishlist page by overwriting the template**. To do so, you have to create a brand new one as you wish. See more details in the **Advanced configurations** section below._\n\n## Advanced configurations\n\nThe Wishlist app architecture allows you to customize the `/wishlist` page using other blocks. Currently, its default implementation is as follows:\n\n`store.wishlist` interface for the route `/wishlist` and `my-account-page.wishlist-page` along with `my-account-link.wishlist-link` for the Wishlist section under My Account.\n\n**wishlist.jsonc**\n\n```json\n{\n  \"my-account-link.wishlist-link\": {\n    \"props\": {\n      \"label\": \"My Wishlist\"\n    }\n  },\n  \"my-account-page.wishlist-page\": {\n    \"props\": {\n      \"title\": \"Wishlist\"\n    },\n    \"children\": [\"list-context.wishlist\"]\n  },\n  \"store.wishlist\": {\n    \"blocks\": [\"flex-layout.row#top\", \"list-context.wishlist\"]\n  },\n  \"flex-layout.row#top\": {\n    \"children\": [\"flex-layout.col#title\"]\n  },\n  \"flex-layout.col#title\": {\n    \"children\": [\"rich-text#title\"],\n    \"props\": {\n      \"blockClass\": \"titleWishlist\",\n      \"preventVerticalStretch\": true\n    }\n  },\n  \"rich-text#title\": {\n    \"props\": {\n      \"text\": \"### Wishlist\"\n    }\n  },\n  \"list-context.wishlist\": {\n    \"blocks\": [\"product-summary.shelf#wishlist\"],\n    \"children\": [\"slider-layout#wishlist\"]\n  },\n  \"product-summary.shelf#wishlist\": {\n    \"children\": [\n      \"add-to-list-btn\",\n      \"product-summary-image\",\n      \"product-summary-name\",\n      \"product-summary-space\",\n      \"product-summary-price\",\n      \"add-to-cart-button\"\n    ]\n  },\n  \"slider-layout#wishlist\": {\n    \"props\": {\n      \"itemsPerPage\": {\n        \"desktop\": 5,\n        \"tablet\": 3,\n        \"phone\": 1\n      },\n      \"showNavigationArrows\": \"desktopOnly\",\n      \"showPaginationDots\": \"always\",\n      \"infinite\": false,\n      \"fullWidth\": true,\n      \"blockClass\": \"shelf\"\n    }\n  }\n}\n```\n\nAdd the `plugins.json` file to your theme's `/store/` folder. This will add the Wishlist to My Account.\n\n**plugins.json**\n\n```json\n{\n  \"my-account-pages \u003e my-account-page\": \"my-account-page.wishlist-page\",\n  \"my-account-menu \u003e my-account-link\": \"my-account-link.wishlist-link\"\n}\n```\n\nBy \"default implementation\" we mean that, by installing the Wishlist app in your store, you're using the `json` above behind the scenes to build the new page template (`/wishlist`), as shown in the third image displayed above.\n\nTherefore, to customize the `/wishlist` page configuration, you need to:\n\n1. Create a `wishlist.jsonc` file under `store/blocks`.\n2. Create a `plugins.json` file under `store/`.\n3. Copy the code above, paste it in the new file, and change it as you wish.\n4. Deploy your changes.\n\nIf you want to configure the layout without the `slider-layout` dependency, you can use the `list-context-renderer` to wrap the `product-summary.shelf`. Learn more [here](https://github.com/vtex-apps/list-context#list-context-renderer).\n\n#### `my-account-link.wishlist-link` props\n\n| Prop name |   Type   |                      Description                      | Default value |\n|:---------:|:--------:|:-----------------------------------------------------:|:-------------:|\n|  `label`  | `string` | Changes the section menu label on the My Account page |  `Wishlist`   |\n\n## Usages\n\nThere are a couple of URLs to read, search and change data for the app:\n\nTo read the schema of the Wishlist app:\n\n```\ncurl --request GET \\\n     --url 'https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/wishlist/schemas/wishlist' \\\n     --header 'VtexIdClientAutCookie: {authToken}' \\\n```\n\nTo GET all the wishlist data:\n\n```\ncurl --request GET \\\n     --url 'https://{environment}--{accountName}.myvtex.com/_v/wishlist/export-lists' \\\n     --header 'VtexIdClientAutCookie: {authToken}' \\\n```\n\nTo search for a wishlist by user email:\n\n```\ncurl --request GET \\\n     --url 'https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/wishlist/search?' \\\n     --header 'VtexIdClientAutCookie: {authToken}' \\\n```\n\nTo PATCH a wishlist to Master Data:\n\n```\ncurl --request PATCH \\\n     --url 'https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/wishlist/documents' \\\n     --header 'VtexIdClientAutCookie: {authToken}' \\\n     --data '\n        [\n            \"Email\",\n            \"Name\",\n            .\n            .\n            .\n            \"IsPublic\",\n        ]\n     '\n```\n\nTo DELETE a wishlist from Master Data:\n\n```\ncurl --request DELETE \\\n     --url 'https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/wishlist/documents/{documentId}' \\\n     --header 'VtexIdClientAutCookie: {authToken}' \\\n```\n\n## Custom URL for toast messages\n\nTo change the link of the toast message:\n\n```json\n{\n  \"add-to-list-btn#myButton\": {\n    \"props\": {\n      \"toastURL\": \"/wishlist\"\n    }\n  }\n}\n```\n\n| Prop name  |   Type   |              Description              |     Default value     |\n|:----------:|:--------:|:-------------------------------------:|:---------------------:|\n| `toastURL` | `string` | Changes the link of the toast message | `/account/#wishlist'` |\n\n## Custom view for empty wishlists\n\nTo show a custom view if no product has been added to the wishlist:\n\n```diff\n{\n  \"list-context.wishlist\": {\n+    \"blocks\": [\"wishlist-empty-list\", \"product-summary.shelf#wishlist\"],\n    \"children\": [\"slider-layout#wishlist\"],\n    \"props\": {\n      \"showViewEmptyList\": true\n    }\n  },\n  \"wishlist-empty-list\": {\n    \"children\": [\n      \"rich-text#description\"\n    ]\n  },\n  \"rich-text#description\": {\n    \"props\": {\n      \"text\": \"### There are no products\",\n      \"textAlignment\": \"CENTER\",\n      \"textPosition\": \"CENTER\",\n      \"font\": \"t-heading-2\"\n    }\n  },\n}\n```\n\n#### `list-context.wishlist` props\n\n|      Prop name      |   Type    |                           Description                            | Default value |\n|:-------------------:|:---------:|:----------------------------------------------------------------:|:-------------:|\n| `showViewEmptyList` | `boolean` | Shows a custom view if no product has been added to the wishlist |    `false`    |\n\n## Customization\n\nTo apply CSS customizations to this and other blocks, follow the instructions in [Using CSS handles for store customization](https://developers.vtex.com/docs/guides/vtex-io-documentation-using-css-handles-for-store-customization).\n\n| CSS handles             |\n| ----------------------- |\n| `columnText`            |\n| `columnThumb`           |\n| `linkText`              |\n| `linkThumb`             |\n| `listItemsContainer`    |\n| `listName`              |\n| `listTab`               |\n| `productDescription`    |\n| `productItemRow`        |\n| `productTitle`          |\n| `thumb`                 |\n| `wishlistContainer`     |\n| `wishlistIcon`          |\n| `wishlistIconContainer` |\n| `emptyMessage`          |\n\n## PII Compliance\n\nThis app can be used in a Personal Identifiable Information (PII) compliant account. In this case, shopperId is the Profile ID.\n\n**Note**: If you are changing type of the account from regular to PII, you must replace the email values with profile ID values in the WishList data entity!\n\n\u003c!-- DOCS-IGNORE:start --\u003e\n\n## Contributors ✨\n\nThanks goes to these wonderful people:\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!\n\n\u003c!-- DOCS-IGNORE:end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvtex-apps%2Fwish-list","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvtex-apps%2Fwish-list","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvtex-apps%2Fwish-list/lists"}