Shopware Wishlist Customization: Displaying 'Added On' Dates

Unlocking Wishlist History: Displaying 'Added On' Dates in Shopware Frontend

The wishlist feature is a cornerstone of any modern e-commerce platform, allowing customers to save items they're interested in for future purchase. While Shopware provides robust wishlist functionality, users often seek to enhance its utility with additional information. One such common request, highlighted in a recent Shopware forum discussion, is the ability to display the exact date an item was added to the wishlist directly in the frontend.

The Challenge: Accessing the Correct 'Added On' Date

The forum user, 'candem', articulated a precise need: to show the date when an article was added to the wishlist in the Shopware frontend. This seemingly straightforward request quickly runs into a common technical hurdle related to how dates are stored and exposed in Shopware's data models.

Candem experimented with two intuitive Twig variables, expecting them to yield the desired 'added to wishlist' date:

  • {{ product.createdAt|date("d.m.Y") }}

    This attempt, as candem noted, displays the date when the product itself was created in the Shopware backend. While useful for product management, it doesn't reflect when a specific customer decided to add it to their personal wishlist.

  • {{ wishlist.createdAt|date("d.m.Y") }}

    This second attempt resulted in displaying the current date for all items on the wishlist. This is because the wishlist.createdAt likely refers to the creation date of the wishlist entity itself, or perhaps a timestamp related to the current page load, rather than the individual item's addition date within that wishlist.

Both attempts, while logical, failed to provide the specific 'added to wishlist' timestamp, indicating a deeper need to understand Shopware's data structure for wishlist items.

Why This Feature Matters for User Experience

Displaying the 'added on' date for wishlist items offers significant value:

  • Enhanced User Tracking: Customers can easily see how long an item has been on their list, helping them prioritize purchases or recall why they added it.
  • Improved Engagement: Merchants can leverage this data for targeted marketing, such as sending reminders for items added a long time ago, or highlighting price changes for older wishlist entries.
  • Better Context: For highly seasonal or trend-driven products, knowing when an item was added provides valuable context.

Expert Insight: Technical Approach to Implementation

The core of the problem lies in accessing the correct createdAt timestamp. In Shopware, the relationship between a customer's wishlist and a specific product is typically managed through an intermediary entity, often named CustomerWishlistProduct. This entity holds the unique createdAt timestamp for when a particular product was linked to a particular customer's wishlist.

To implement this feature, Shopware developers and merchants would typically need to:

  1. Identify the Correct Entity: The desired date is stored within the customer_wishlist_product table, specifically in its created_at column, which records the exact moment a product was added to a customer's wishlist.

  2. Extend the Storefront Data: The default Twig context for a wishlist item in the frontend often provides the product entity but might not directly expose the associated CustomerWishlistProduct entity's createdAt property within the loop. Therefore, a custom solution is required to enrich the data available to the Twig template.

  3. Choose an Implementation Method:

    • Plugin Development (Recommended): A robust solution involves creating a Shopware plugin. This plugin could decorate a service (e.g., a wishlist loader or data resolver) to fetch the CustomerWishlistProduct entity for each item on the wishlist. It would then add its createdAt timestamp to the product data array or a custom property, making it directly accessible within the Twig template. This ensures the data is correctly loaded and prepared before rendering.
    • Custom Twig Extension (More Complex for this Case): While possible, creating a Twig extension solely to fetch this specific data might be less efficient than enriching the data at a higher level in the application's lifecycle. It would involve making a database query or using a service within the Twig extension for each item, which could impact performance.
  4. Modify the Twig Template: Once the data is made available, the final step is to modify the relevant Shopware Storefront Twig template (e.g., wishlist/index.html.twig or a partial that renders individual wishlist items) to display the newly exposed createdAt property. For example, if the plugin adds a wishlistAddedAt property to each product in the loop, the template could use {{ product.wishlistAddedAt|date("d.m.Y") }}.

This forum topic, though brief, highlights a common desire for deeper customization in Shopware's frontend. Implementing such a feature requires a good understanding of Shopware's data models and an appropriate development approach to ensure data integrity and optimal performance.

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools