Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Website
  3. Ecommerce Wishlist v 19.0
  4. Sales Conditions FAQ

Ecommerce Wishlist

by Hexalian LLC https://www.hexalian.com
Odoo

$ 79.00

v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Website (website)
• eCommerce (website_sale)
• Discuss (mail)
• Invoicing (account)
Lines of code 7936
Technical Name ecommerce_wishlist
LicenseOPL-1
Websitehttps://www.hexalian.com
Versions 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Website (website)
• eCommerce (website_sale)
• Discuss (mail)
• Invoicing (account)
Lines of code 7936
Technical Name ecommerce_wishlist
LicenseOPL-1
Websitehttps://www.hexalian.com
Versions 17.0 18.0 19.0
  • Description
  • Documentation
  • License

Ecommerce Wishlist - Advanced Customer Engagement

Complete wishlist with smart notifications, analytics, and customer-controlled preferences

Odoo 19.0+ AJAX Powered Mobile Responsive EN/ES Translations Privacy-Friendly Business Intelligence

Overview

Transform wishlists into a powerful engagement and analytics tool

The Ecommerce Wishlist module goes beyond basic functionality - it's a complete customer engagement platform with smart notifications, price tracking, sharing capabilities, and advanced business intelligence analytics.

Built with modern web technologies offering instant AJAX operations, beautiful responsive design, and enterprise-grade security. Features automated email notifications for stock alerts, price drops, and reminders.

Customer-Controlled Preferences: GDPR-compliant notification settings allow each customer to choose which emails they receive. Opt-out approach with granular controls for stock alerts, price drops, and reminders.

Business Intelligence: Track customer demand with 11 intelligent metrics and 13 smart filters. Identify trending products, plan inventory, and create targeted campaigns based on wishlist data.

Key Features

Everything you need for wishlist functionality

Add to Wishlist

Heart icon on product pages allows customers to save favorites with one click

Wishlist Page

Beautiful card grid layout displaying all saved items with images and details

Quick Add to Cart

Add wishlist items to cart instantly without page reload

Easy Management

Remove items individually with smooth animations

Notification Preferences

Customers control which emails they receive - Privacy-friendly

Fully Responsive

Perfect experience on all devices and screen sizes

Database Storage

Wishlists persisted in database, not session-based

Wishlist Sharing

Share lists with friends via secure unique links

Business Intelligence

Advanced analytics with 11 metrics and 13 smart filters

Core Functionality

For Customers

  • Heart Icon: On all product pages for easy access
  • Instant Feedback: AJAX operations without page reload
  • Dedicated Page: Beautiful wishlist view at /shop/wishlist
  • Stock Status: See real-time product availability
  • Smart Notifications: Automatic emails for stock, price drops, and reminders
  • Notification Preferences: Control which emails to receive (customer-controlled)
  • Shareable: Generate unique links to share your wishlist with friends
  • Direct Add: Add wishlist items to cart with one click
  • Remove Anytime: Easy item removal with confirmation
  • Counter Badge: Header shows wishlist item count
  • Empty State: Beautiful message when wishlist is empty

For Store Owners

  • Customer Insights: Track which products are most desired
  • Advanced Analytics: 11 metrics with Pivot & Graph views
  • Inventory Planning: See what customers want before restocking
  • Price Intelligence: Monitor savings and price changes
  • Demand Analytics: Identify trending products and high-demand items
  • Automated Engagement: Three types of email notifications
  • Privacy Features: Customer-controlled notification preferences with opt-in/opt-out capabilities
  • Easy Configuration: Centralized settings in one place
  • Data Management: Cleanup tools and reporting access control
  • Security Built-in: User-specific access and CSRF protection

🎨 Full Product Variant Support

Save exact colors, sizes, and configurations

Smart Variant Detection:

The wishlist intelligently captures specific product variants when customers add items. If a customer selects "Red T-Shirt - Size Large", that exact variant is saved - not just the generic product.

How It Works:

  • Dynamic Detection: JavaScript automatically reads the selected variant from Odoo's configurator
  • Real-time Updates: When users change color/size dropdowns, the wishlist captures their final choice
  • Attribute Display: Wishlist shows full variant name: "T-Shirt (Red, Large)"
  • Unique Constraint: Prevents duplicate product+variant combinations
Stock Notifications Per Variant: Users get notified when their specific variant comes back in stock - not just the generic product!

What Gets Saved:

  • Product Variant ID: The exact variant they selected
  • All Attributes: Color, size, material, etc.
  • Variant Price: Specific pricing for that configuration
  • Variant Stock: Availability of their exact choice

Benefits:

  • Better UX: Customers see exactly what they saved
  • Accurate Notifications: Stock alerts for their specific variant
  • Price Tracking: Monitor price changes for exact configurations
  • No Confusion: Clear distinction between "Red S" and "Red XL"
Works Everywhere: Product pages, list views, and quick view modals all correctly capture variant selections.

🎯 Enhanced Business Intelligence Analytics

Transform wishlist data into actionable insights

The wishlist module now includes comprehensive analytics that help you understand customer behavior, track product demand, monitor price changes, and optimize your inventory. Make data-driven decisions with 11 intelligent metrics and 13 smart filters.

⚙️ Module Settings & Configuration

Complete control from one centralized settings screen

Settings Screen - Main Features

Access all wishlist configuration options from Settings → Website. The module provides a beautifully organized settings interface with four main sections for complete control over your wishlist functionality.

Wishlist Settings Main Screen

Main Settings Panel: Enable/disable wishlist functionality, configure the global Stock Check Method (Physical/Forecasted/Unreserved), enable smart stock alerts, price drop alerts, and wishlist reminders - all with intuitive toggle switches. The clean interface makes configuration simple and straightforward.

🎯 Global Stock Check Method

The Stock Check Method setting appears at the top of the configuration panel and controls how stock availability is calculated across ALL wishlist features:

  • Physical Stock (Standard): Uses qty_available - items must be physically in warehouse
  • Forecasted Stock (Pre-order): Uses virtual_available - includes incoming shipments before they arrive
  • Unreserved Stock (Strict): Uses free_qty - only counts stock not reserved for other orders

This global setting affects stock notifications, add-to-cart availability, and stock badges throughout the wishlist system.

📊 Advanced Settings & Data Management

Reporting, notification frequency, and data controls

Wishlist Reporting and Notification Settings Wishlist Reporting and Notification Settings

Notification Frequency:

  • Run Checks Every: Configure interval (Minutes, Hours, Days, Weeks, Months)
  • Global Control: One setting controls ALL notification types (Stock, Price, Reminders)
  • Smart Scheduling: Automatically updates cron jobs when you change frequency
  • Resource Optimization: Balance between user experience and server load

Cart & Reporting Controls:

  • Wishlist Reporting: Enable/disable advanced analytics menu in Website → Reporting
  • Out-of-Stock Add to Cart: Control whether customers can add out-of-stock items to cart from wishlist
  • Stock Badge Display: When disabled, out-of-stock items show "Agotado" badge instead of cart button
  • Business Intelligence: Access pivot tables and comprehensive analytics

Data Management:

  • Enable Data Cleanup: Unlock the "Danger Zone" management tools
  • Clear All Data: Secure button with confirmation to remove ALL wishlist data
  • Permanent Action: Cannot be reversed - requires explicit confirmation
  • Use Cases: Testing, data refresh, store reset, customer data management

🛒 Out-of-Stock Cart Control

Flexible inventory management for wishlist items

Take full control over whether customers can add out-of-stock wishlist items to their cart. This powerful setting gives you the flexibility to match your business model - whether you allow backorders or prefer to prevent purchases of unavailable items.

Setting Disabled - Strict Stock Control

Out-of-Stock Badge When Setting Disabled
When Disabled:
  • Stock Badge Shown: Out-of-stock items display "Agotado" (Out of Stock) badge
  • No Cart Button: Add to Cart button is hidden for unavailable items
  • Smart Notification Option: Shows "You'll be notified when back in stock" if customer has stock alerts enabled in their preferences
  • Clear Communication: Customers immediately see product availability status
  • Prevents Frustration: No false expectations about purchasing unavailable items
  • Best For: Stores that don't allow backorders or pre-orders

💡 Smart Feature: If the customer has enabled stock notifications in their preferences, they'll see a reassuring message that they'll be automatically notified when the item becomes available again.

Setting Enabled - Flexible Purchasing

Add to Cart Button When Setting Enabled
When Enabled:
  • Cart Button Always Shown: Add to Cart available regardless of stock status
  • Flexible Ordering: Customers can purchase items even when out of stock
  • Optional Notification: Customers with stock alerts enabled in preferences will still be notified when items restock
  • Backorder Support: Perfect for stores that accept pre-orders or backorders
  • No Lost Sales: Capture orders even when temporarily out of stock
  • Best For: Drop-shipping, made-to-order, or pre-order business models

✅ Best of Both Worlds: Even when allowing out-of-stock purchases, customers who want stock alerts will still receive notifications. They can choose to wait for restock or order immediately.

⚙️ Configuration:

Toggle this setting at Settings → Website → Ecommerce Wishlist → Out-of-Stock Add to Cart. The change takes effect immediately across all wishlist pages. This gives you complete control to adapt to seasonal demand, inventory policies, and business strategy changes without any code modifications.

⚙️ Customer Notification Preferences

Privacy-friendly granular control for every customer

Customers have complete control over which wishlist notifications they receive. This powerful preference system puts customers in the driver's seat with opt-in/opt-out controls, improving customer satisfaction by respecting their communication preferences.

Preference Management Interface

Customer Notification Preferences Menu

Accessible from My Account Menu: Customers can access their notification preferences directly from the "My Account" dropdown in the website header. One click takes them to a dedicated preferences page where they can customize all their wishlist notification settings.

🎯 Three Granular Email Controls:

  • 📦 Stock Notifications: Get alerted when out-of-stock wishlist items become available again
  • 💰 Price Drop Alerts: Receive emails when wishlist item prices decrease
  • ⏰ Wishlist Reminders: Periodic "still interested?" emails for items sitting in wishlist
🔔 Smart Integration with Wishlist Pages

When a customer views their wishlist and an item is out of stock:

  • If stock notifications are enabled: Shows "You'll be notified when back in stock"
  • If stock notifications are disabled: Only shows the "Out of Stock" badge

This intelligent display respects the customer's preferences and sets clear expectations.

📍 Easy Access Points:

  • My Account Dropdown: Direct "Notification Preferences" link in header menu
  • Wishlist Page: Dedicated preferences link on the wishlist page itself
  • Email Footers: All wishlist emails include an "Update Preferences" link
  • Direct URL: Customers can bookmark /shop/wishlist/preferences

✅ Privacy Control Features:

  • Opt-Out by Default: All notifications start disabled until customer explicitly enables them
  • Clear Explanations: Each preference has a detailed description of what emails it controls
  • Easy Unsubscribe: One-click disable for any notification type
  • No Hidden Toggles: All communication settings are transparent and accessible
  • Instant Updates: Preference changes take effect immediately

💡 How Preferences Affect User Experience:

Stock Notifications Enabled:
  • Out-of-stock items show reassuring message: "You'll be notified when back in stock"
  • Automatic email sent when items restock
  • No action required - system monitors inventory automatically
Stock Notifications Disabled:
  • Out-of-stock items only show "Out of Stock" badge
  • No automatic emails sent
  • Customer must manually check wishlist for restocks

🎓 Store Owner Benefits:

By giving customers control over their notifications, you achieve:

  • Higher Engagement: Customers who opt-in are genuinely interested and more likely to convert
  • Lower Unsubscribe Rates: Granular controls mean customers don't have to unsubscribe from ALL emails
  • Privacy Protection: Designed with privacy-friendly features and opt-in/opt-out controls
  • Better Deliverability: Emails go to engaged users, improving sender reputation
  • Reduced Support Tickets: Customers can self-manage preferences without contacting support

Result: Your wishlist emails become a powerful sales tool rather than unwanted spam, driving real revenue while respecting customer preferences.

🔔 Advanced Notification Logic

Control exactly when stock alerts are sent

Different businesses manage inventory differently. The module offers three distinct trigger methods to align with your specific logistics strategy. Configure this in Settings to determine precisely what counts as "In Stock" for your customers.

Physical Stock (Standard)

Triggers when items arrive

How it works: Notifications are sent as soon as your Quantity On Hand becomes positive.

Best used for: Standard retail where you only want to sell items currently sitting on your shelves. Simplest and most common configuration.

Forecasted Stock (Pre-order)

Triggers on incoming shipment

How it works: Uses Forecasted Quantity. Alerts users when a Purchase Order is confirmed or manufacturing is scheduled, even before physical goods arrive.

Best used for: Pre-order models or Just-In-Time inventory where you want to secure sales before stock physically lands.

Unreserved Stock (Strict)

Triggers only when free to ship

How it works: Checks Free to Use Quantity (On Hand minus Reserved). If you have 10 units but 10 are reserved for other orders, NO notification is sent.

Best used for: High-volume stores with tight inventory to prevent overselling goods that are already committed to other customers.

🔐 Authentication & User Experience

Secure wishlist access with seamless login integration

Guest User Protection:

Authentication Required Modal

When a guest user (not logged in) clicks the "Add to Wishlist" button, they see an elegant modal dialog prompting them to log in or create an account. This ensures all wishlist data is securely associated with authenticated user accounts, preventing data loss and improving customer tracking.

Automatic Login Redirect:

Redirect to Login Page

When a non-authenticated user clicks the heart icon button, they are seamlessly redirected to the /web/login endpoint. After successful login, users can return to the product and add it to their wishlist. This smooth authentication flow encourages account creation and improves conversion rates.

❤️ Add to Wishlist - Live Feedback

Instant confirmation with dynamic visual updates

Product Added to Wishlist Confirmation

Success Message:

  • Instant Feedback: The "Add to Wishlist" button changes to display "Product added to wishlist"
  • AJAX Operation: No page reload - smooth, modern user experience
  • Visual Confirmation: Clear text message confirms the action was successful

Dynamic Counter Badge:

  • Heart Icon Update: The heart button icon displays a number badge showing total wishlist items
  • Real-time Count: Badge updates immediately to show "1" (or current count) after adding
  • Header Integration: Counter visible in the site header for easy access to wishlist

📋 My Wishlist - Complete Management

Beautiful card layout with full product details and actions

My Wishlist Page with Products

Comprehensive Product Cards:

The wishlist page at /shop/wishlist displays all saved products in an elegant card grid layout. Each product card includes:

Product Information:

  • Product Image: High-quality thumbnail
  • Product Name: Full name with variant details
  • Description: Sales description text
  • Current Price: Live updated pricing
  • Date Added: Timestamp of when item was wishlisted

Stock Status:

  • In Stock: Green badge showing availability
  • Out of Stock: Clear visual indicator
  • Quantity Available: Real-time stock levels
  • Smart Notifications: "Notify Me" button for OOS items

Action Buttons:

  • Add to Cart: Individual item purchase
  • Remove: Delete from wishlist
  • Share List: Generate shareable link
  • Add All to Cart: Bulk cart addition

🛒 Seamless Cart Integration

Add wishlist items to cart with one click

Product Added to Cart Modal

Individual Item Addition:

When you click the "Add to Cart" button on any wishlist item, a beautiful confirmation modal appears displaying "Product added to cart successfully". The AJAX-powered operation happens instantly without requiring a page refresh, providing a smooth shopping experience that encourages additional purchases.

Add All to Cart Success

Bulk Cart Addition:

The "Add All to Cart" button allows customers to purchase their entire wishlist at once. After clicking, a confirmation message shows "x items added to cart" where x is the actual count of products added. This feature significantly reduces friction in the checkout process and increases average order values.

🎨 Beautiful Empty State

Encouraging engagement even with no items

Empty Wishlist State

Thoughtful Design:

  • Friendly Message: "Your wishlist is empty" with welcoming icon
  • Clear Call-to-Action: "Start Shopping" button to drive engagement
  • Modern Styling: Clean, attractive design that matches your store theme
  • Helpful Context: Encourages users to browse products and save favorites

User Experience Benefits:

Instead of showing a blank or error page, the empty state provides a positive experience that guides users back to shopping. This reduces bounce rates and keeps customers engaged with your store, even when their wishlist is currently empty.

🔗 Wishlist Sharing Functionality

Share your favorites with friends and family

Shared Wishlist View

Shareable Links:

  • Unique URLs: Generate secure, shareable links to your wishlist
  • User Attribution: Shared lists display the owner's name (e.g., "Michel Admin's Wishlist")
  • Public Access: Friends can view items without requiring an account
  • Gift Registry: Perfect for birthdays, weddings, and special occasions

Real-Time Synchronization:

  • ✅ Compatibility Updates: Updates for Odoo 19.0+.x versions
  • Live Updates: Changes to your wishlist automatically reflect in shared links
  • Product Details: Shows current prices, stock status, and full product information
  • Direct Purchase: Shared links include "Add to Cart" buttons for easy gifting
  • Social Commerce: Leverage word-of-mouth marketing through wishlist sharing

🔔 Customer Notification Preferences

Privacy-friendly email control for every customer

Give your customers complete control over which wishlist notifications they receive. Designed with privacy best practices in mind. Features opt-in/opt-out controls for customer notification management.

⚖️ Legal Note: This module provides tools for customer preference management. Compliance with GDPR, CAN-SPAM, or other regulations depends on your implementation and business practices. Consult your legal advisor for compliance requirements.

🎯 Granular Email Controls:

  • Stock Alerts Toggle: Enable/disable back-in-stock notifications
  • Price Drop Alerts: Control price decrease notifications
  • Wishlist Reminders: Opt in/out of periodic reminders
  • Email Frequency: Choose instant, daily digest, or weekly summary
🚀 Opt-Out Approach: All notifications enabled by default to maximize engagement, while giving customers easy opt-out access anytime.

📍 Access Points:

  • Preferences Button: Visible on wishlist page for logged-in users
  • Dedicated Page: Clean interface at /shop/wishlist/preferences
  • Instant Feedback: Success/error messages on save
  • Privacy Note: Clear explanation of how preferences are used

✅ Compliance Features:

  • GDPR Ready: Customer-controlled data preferences
  • CAN-SPAM: Easy unsubscribe mechanism
  • Transparent: Clear labels and descriptions
  • Persistent: Preferences saved to customer account

🎨 User Experience Highlights:

  • One-Click Access: Preferences button prominently displayed on wishlist page
  • Clean UI: Bootstrap cards with checkboxes and clear explanations
  • Mobile Responsive: Perfect experience on all devices
  • Instant Updates: Changes applied immediately to all cron jobs
  • No Registration Required: Works with portal and internal users

🔧 Technical Implementation:

Backend Integration: Four new fields added to res.partner model:

  • wishlist_notify_stock (Boolean, default=True)
  • wishlist_notify_price_drop (Boolean, default=True)
  • wishlist_notify_reminders (Boolean, default=True)
  • wishlist_email_frequency (Selection: instant/daily/weekly)

Robust Cron Protection: All automated notification jobs verify customer preferences before sending emails. If a customer disables stock alerts, they will never receive them - even if the global feature is enabled.

📧 Premium Email Notifications

Beautiful, responsive emails that drive conversion

Three professionally designed email templates automatically notify customers about important wishlist events. All emails feature rich HTML layouts, real product images, brand identity, and smart call-to-action buttons that work perfectly across all email clients (Outlook, Gmail, Apple Mail, Yahoo, etc.).

Back in Stock

Back in Stock Email Template

Sent automatically when out-of-stock wishlist items become available again. Features a vibrant purple gradient header and displays product images, current prices, and direct "Add to Cart" links.

Still Interested?

Still Interested Email Template

Gentle reminder emails sent after a configurable number of days (default: 7) to re-engage customers with items they've saved. Uses a soft pink-purple gradient to maintain a friendly, non-pushy tone.

Price Drop Alert

Price Drop Email Template

Alerts customers when wishlist item prices decrease. Shows both old and new prices with clear savings calculation. Features a fresh green gradient header to convey the excitement of a deal.

Email Features & Compatibility:

  • Responsive Design: Perfect display on desktop and mobile email clients
  • Table-Based Layouts: Guaranteed compatibility with even the oldest email clients
  • Dynamic Content: Real product images fetched from your Odoo database
  • Brand Integration: Automatically uses your company name, logo, and email address
  • Multi-Language: Full Spanish and English translation support
  • Smart Tracking: Prevents duplicate notifications with "Last Notified Price" tracking

🛡️ Smart Notifications & Anti-Spam Guarantee

Transparency and peace of mind for you and your customers

We take customer experience seriously. Our notification system is engineered with strict Anti-Spam Logic to ensure your customers are informed, never annoyed. This behavior is hard-coded into the system core for 100% compliance and reliability.

🔒 One-Time Reminder Policy:

  • Single Notification: Customers receive exactly ONE reminder email per wishlisted item.
  • Permanent Flag: Once sent, the system permanently marks that specific item as "Notified".
  • Zero Nagging: If the customer ignores the reminder, the system will NEVER send it again for that item.
  • Peace of Mind: No risk of accidentally spamming customers with repeated follow-ups.

🔄 Reset Logic (Customer Controlled):

The only way to trigger a second reminder is through direct customer action:

  1. Customer deletes the item from their wishlist.
  2. Customer manually re-adds the same item later.

This is treated as a new intent, resetting the timer. Without this explicit action, the system maintains strict silence after the first alert.

* This logic applies to "Still Interested?" reminders. Stock alerts are sent only when stock status actively changes from 0 to positive.

💰 Price Tracking Intelligence

Monitor price changes and customer savings automatically

Price Tracking Features:

  • Price at Addition: Frozen history of price when first wishlisted
  • Current Value: Live product price (updates automatically)
  • Price Change: Exact monetary difference ($)
  • Avg Price Change %: Smart averaging (not summing) for accurate trends
  • Last Notified Price: Intelligent tracking to prevent spamming users
  • Savings Amount: Calculates actual customer savings opportunity
Auto-Update: All price analytics recalculate automatically when you change product prices. No manual intervention needed!

Price Analytics Dashboard:

Current Value Filter
Current Value Analytics

Current Value: View the live, real-time price of all wishlisted products. This filter helps identify high-value wishlist opportunities and track the total potential revenue from customer wishlists.

Price at Addition Filter
Price at Addition Analytics

Price at Addition: Historical price snapshot frozen when customers first added items to their wishlist. Compare against current prices to measure price changes and discount opportunities.

Price Change Filter
Price Change Analytics

Price Change: Monetary difference between current and original prices. Positive values indicate price increases, negative values show discounts. Perfect for identifying repricing opportunities.

💹 Advanced Price Metrics

Percentage changes, savings, and notification tracking

Price Change %

Price Change Percentage Analytics

Percentage change from original to current price. Intelligently averaged (not summed) across multiple products for accurate trend analysis. Ideal for spotting significant discount patterns.

Customer Savings

Savings Analytics

Total monetary savings available to customers when prices drop below original wishlist price. Calculate aggregate customer benefit and use this data to create targeted "Deal Alert" campaigns.

Last Notified Price

Last Notified Price Analytics

Smart tracking field preventing notification spam. Records the price at which the last alert was sent to customers, ensuring they only receive new alerts when prices change significantly from the last notification.

📦 Stock Availability Intelligence

Track stock changes and identify restocking priorities

Stock Notifications Analytics

Stock Notifications Sent Analytics

Stock Notifications Sent: Track how many times each customer has been notified about a product returning to stock. High notification counts identify "patient waiters" - highly engaged customers with strong purchase intent who are waiting for specific items to become available.

Stock Tracking Features:

  • Notification Count: Track "High Intent" users who have been alerted multiple times.
  • Stock Status Changed: Detects when availability flips (In -> Out -> In).
  • Back in Stock Filter: Find products that recently returned to inventory.
  • Out of Stock Filter: Identify restocking priorities based on wishlists.

Business Benefits:

  • Prioritize restocking based on ACTUAL demand (not just guesses).
  • Identify "Patient Waiters" via Notification Count.
  • Notify customers automatically when desired items return.

🔥 Popularity & Demand Analytics

See which products customers desire most

Demand Tracking:

  • Popularity Score: Count of unique users who wishlisted each product
  • High Demand Filter: Products wishlisted by 5+ users
  • Very Popular Filter: Products wishlisted by 10+ users
  • Trend Analysis: Track demand over time with graph view

Use Cases:

  • Identify trending products before they sell out
  • Plan marketing campaigns around popular items
  • Adjust pricing based on demand
  • Prioritize product photography/descriptions for high-demand items
  • Use popularity data for homepage promotions

Real-World Applications:

Marketing Strategy: Use popularity data to create targeted campaigns around trending products.

Inventory Planning: Stock up on high-demand items before they sell out.

Pricing Optimization: Adjust prices based on actual customer demand signals.

🔍 13 Smart Filters for Deep Insights

Find exactly what you need with intelligent filtering

Price & Discount Filters:

  • Discounted Items - Products cheaper now
  • View customer savings opportunities
  • Target users with price drop alerts

Stock Filters:

  • Out of Stock - Restocking priorities
  • Back in Stock - Returned products
  • Identify stock status changes

Demand Filters:

  • High Demand (5+) - Popular items
  • Very Popular (10+) - Trending products
  • Focus on high-value opportunities

Time-Based Engagement Filters:

  • Recent (Last 7 Days): Hot leads, high purchase intent
  • Stale (30+ Days): Needs reminder or discount
  • Very Stale (60+ Days): Re-engagement opportunity
  • Abandoned (90+ Days): Win-back campaign targets
Marketing Automation: Use time filters to trigger automated campaigns - send reminders for stale items or special offers for abandoned wishlists.

Combined Filters:

Powerful Combinations: Stack multiple filters to create highly targeted result sets.

Example: Find "Discounted + High Demand + Stale" items for flash sale campaigns.

Save Time: Pre-configured filters give you instant insights without manual data analysis.

📊 Powerful Analytics Views

Graph, Pivot, and detailed reporting

Graph View Capabilities:

  • Visualize Trends: Bar charts, line graphs, and pie charts for wishlist data
  • Time-based Analysis: Track how wishlist metrics change over days, weeks, or months
  • Product Comparison: See which products have the highest demand or savings
  • Export Data: Download graphs and share with your team

Pivot View Features:

  • Multi-Dimensional Analysis: Cross-reference multiple data points simultaneously
  • Dynamic Grouping: Group by product, user, date, stock status, and more
  • Custom Aggregations: Sum, average, count - choose what matters to you
  • Drill-Down: Expand/collapse data hierarchies for detailed investigation

Available Measures:

  • Total Current Value - Overall wishlist value
  • Total Savings Amount - Customer discount opportunities
  • Average Price Change % - Price trend analysis
  • Average Days in Wishlist - Engagement timing
  • Total Popularity - Product demand count

⚡ Real-Time Auto-Update

Analytics stay current automatically

How It Works:

All analytics fields use Odoo's computed field mechanism with automatic dependency tracking. When you change product data, the system automatically recalculates all affected metrics.

Automatic Updates Triggered By:

  • Product Price Change: All price analytics update instantly
  • Stock Change: Stock status fields recalculate
  • Time Passage: Days in wishlist updates automatically
  • New Wishlist Additions: Popularity counts refresh

Example Flow:

  1. User adds Product X to wishlist at $100
    → price_at_addition = $100 (frozen)
    → current_value = $100
    → price_change = $0
  2. Admin changes Product X price to $80
    → Odoo automatically triggers recalculation
    → current_value = $80
    → price_change = -$20
    → has_discount = True
    → savings_amount = $20
  3. User views analytics
    → Sees updated savings and discount immediately!
Zero Manual Work: Analytics update automatically - you just change prices or stock, the system does the rest!

Settings & Configuration

Easy management from Odoo settings

Access wishlist settings through Settings → Website where you'll find the Ecommerce Wishlist app section with comprehensive configuration options.

Available Settings:

  • Enable Wishlist: Toggle wishlist functionality on/off for your entire store
  • Clear Data: Remove all wishlist data with one click (with confirmation)
  • View Statistics: See technical information about the module

Configuration Features:

  • Browser-based configuration (no code required)
  • Instant enable/disable without module uninstall
  • Data cleanup button with safety confirmation
  • Detailed help text for each setting
  • View module technical specifications
  • Security information display
Default State: Wishlist is enabled by default upon installation. You can disable it anytime from settings.

Technical Excellence

Built with best practices

Security

  • Authentication required for all operations
  • User-specific wishlists (record rules)
  • CSRF protection on all forms
  • SQL injection prevention (ORM only)
  • XSS protection via templates
  • Secure session handling

Performance

  • AJAX operations (no page reload)
  • Optimized database queries
  • Indexed fields for fast lookup
  • Concurrency handling with retry logic
  • Minimal page load impact
  • Efficient data structures

Clean Code

  • Smart Cleanup: Auto-uninstall hook wipes all data instantly (Zero residue)
  • Follows Odoo best practices
  • Modular architecture
  • Comprehensive documentation
  • Well-commented code
  • Consistent naming conventions
  • Professional development standards

RESTful API Endpoints

Comprehensive controller routes

HTTP Routes

  • /wishlist/add - Add product to wishlist (POST/GET)
  • /shop/wishlist - Display wishlist page (GET)

JSON-RPC Endpoints

  • /shop/wishlist/add_to_cart/<id> - Add wishlist item to cart
  • /shop/wishlist/remove/<id> - Remove from wishlist
  • /shop/wishlist/remove/product/<product_id> - Remove by product
  • /shop/wishlist/check_access - Check authentication status
  • /shop/wishlist/count - Get wishlist item count

API Features:

  • CSRF Protection: All endpoints secured
  • Authentication: Login required for operations
  • Error Handling: Proper error responses
  • Variant Support: Works with product variants
  • Concurrency Safe: Retry logic for conflicts
  • JSON Responses: Standard format for AJAX
Developer Friendly: All endpoints return structured JSON responses with success status and messages. Easy to integrate with custom frontends or mobile apps.

Database Structure

Robust data model

Model: ecommerce_wishlist.wishlist

Complete wishlist storage with 11 fields:

  • product_id: M2O to product.product (required, indexed)
  • user_id: M2O to res.users (required, indexed)
  • active: Boolean (default True)
  • create_date: Datetime (indexed, read-only)
  • price_unit: Float (computed, stored)
  • product_name: Related field (stored)
  • product_image: Related field
  • product_description: Related field
  • website_published: Related field
  • qty_available: Related field

Constraints & Rules:

  • Unique Constraint: One product per user (product_user_uniq)
  • Cascade Delete: Auto-cleanup when product/user deleted
  • Default Ordering: By create_date desc (newest first)

Security Rules:

  • Public Users: Read-only (redirected to login)
  • Portal Users: Full CRUD on own items
  • Internal Users: Full CRUD on own items
  • Sales Managers: Full CRUD on all items
Optimized: Indexed fields ensure fast queries even with thousands of wishlist items.

Complete Multi-language Support

Professional translations included

English (EN): Complete translation of all UI elements, buttons, messages, and backend labels. Professional terminology throughout.

Spanish (ES): Full professional Spanish translation covering frontend, backend, settings, and portal interfaces. 200+ translated strings.

Translated Components:

  • All frontend buttons and labels
  • Settings screen and descriptions
  • Portal pages and messages
  • Error and success notifications
  • Empty state messages
  • Confirmation dialogs
  • Help text and tooltips
  • Model fields and descriptions
  • Controller messages
  • JavaScript strings

Mobile-First Responsive Design

Perfect on all devices

Mobile Optimizations:

  • Touch-Friendly: Large buttons and tap targets
  • Responsive Grid: Cards stack on mobile
  • Fast Loading: Optimized for mobile networks
  • Swipe Support: Natural mobile gestures
  • Orientation: Works in portrait and landscape
  • 6 CSS Files: Specialized responsive styling

Responsive Features:

  • Product cards adapt to screen size
  • Wishlist button accessible on mobile product pages
  • Add to cart works perfectly on touch devices
  • Empty state displays beautifully on mobile
  • Header counter visible on all screen sizes
  • Settings screen mobile-friendly

📊 Stock Calculation Method Configuration

Choose how to calculate product availability for wishlist items

The module offers three different stock calculation methods to determine product availability on wishlist pages and when sending stock notifications. This powerful setting allows you to align the wishlist behavior with your specific inventory management strategy and business model.

Stock Calculation Methods Explained:

Quantity on Hand

Standard Method (Default)

Technical Field: qty_available

What it shows: Physical inventory currently in your warehouse - the actual units sitting on shelves.

Calculation: Simple count of units physically present in stock locations.

✅ Best for: Standard retail stores, physical goods, traditional inventory management

Example: 100 units in warehouse = 100 available for customers

Forecasted Quantity

Future Planning Method

Technical Field: virtual_available

What it shows: Predicted available stock accounting for incoming and outgoing orders.

Calculation: On Hand + Incoming Purchase Orders - Outgoing Sales Orders

✅ Best for: Pre-orders, Just-In-Time inventory, drop-shipping models

Example: 50 on hand + 100 incoming - 30 committed = 120 forecasted available

Free to Use (Strict)

Conservative Method

Technical Field: free_qty

What it shows: Only unreserved stock - units NOT already committed to other customers.

Calculation: On Hand - Reserved for Other Orders (requires MRP/Manufacturing module)

✅ Best for: High-volume stores, preventing overselling, tight inventory control

Example: 100 on hand - 70 reserved = only 30 truly free for new orders

Configuration & Impact:

Where to Configure:
  1. Navigate to Settings → Website
  2. Find the "Ecommerce Wishlist" section
  3. Locate "Stock Notification Method" dropdown
  4. Select your preferred calculation method
  5. Click Save to apply changes
What This Setting Controls:
  • Stock Badge Display: "In Stock" vs "Out of Stock" on wishlist page
  • Add to Cart Button: Enable/disable based on calculated availability
  • Email Notifications: When to trigger "Back in Stock" alerts
  • Analytics: Stock status metrics in reporting dashboard
  • Customer Experience: Accurate availability information

Smart Recommendation:

Start with "Quantity on Hand" (default) as it's the most straightforward and widely understood. Once you're comfortable with the system, experiment with the other methods to see which best matches your business operations. You can change this setting at any time without affecting existing wishlist data.

💡 Pro Tip: If you use "Free to Use" method, make sure you have the MRP/Manufacturing module installed. Otherwise, the system will automatically fall back to "Quantity on Hand" for safety.

Easy Installation & Setup

Get started in minutes

Installation Steps:

  1. Download the module from Odoo App Store or upload folder
  2. Place in your Odoo addons directory
  3. Update Apps List in Odoo
  4. Search for "Ecommerce Wishlist"
  5. Click Install
  6. That's it - wishlist is ready to use!

Note: No additional configuration required. Module works out of the box with sensible defaults.

Configuration (Optional):

Navigate to Settings → Website to:

  • Enable/disable wishlist functionality
  • Clear all wishlist data if needed
  • View technical information
Zero Dependencies: Only requires standard Odoo modules (base, web, website, website_sale, product, sale). No custom module dependencies!

Compatibility

Requirements:

  • Odoo Version: Odoo 19.0+ (Community or Enterprise Edition)
  • Python: 3.8+
  • PostgreSQL: 12+
  • Browsers: Chrome, Firefox, Safari, Edge (latest versions)
  • Mobile: iOS Safari, Chrome Mobile

Required Odoo Modules:

  • base
  • web
  • website
  • website_sale
  • product
  • sale

All standard Odoo modules - no external dependencies required!

🛡️ Anti-Spam Security Features

Enterprise-grade protection against notification spam

Comprehensive Spam Prevention System

Our module includes sophisticated anti-spam mechanisms to prevent email bombardment even in volatile scenarios like frequent price changes or stock fluctuations.

User-Level Cooldown Timestamps

Prevents same user from receiving duplicate notifications:

  • Stock Notifications: 24-hour cooldown per user
  • Price Drop Alerts: 24-hour cooldown per user
  • Wishlist Reminders: 7-day cooldown per user

✅ Configurable via system parameters
✅ Automatically tracks last notification timestamp per user per type
✅ Prevents spam even with 100+ price changes per day

Intelligent Stock Calculation Respect

All notification crons respect global stock settings:

  • Stock Notifications: Uses is_storable + global stock_method
  • Price Drop Alerts: Only triggers for storable products with valid stock
  • Reminders: Checks stock availability before sending

✅ Consistent with Add to Cart logic
✅ Prevents notifications for non-storable products
✅ Respects on_hand/virtual/free calculations

Database Schema Extensions

New fields added to res.partner model for cooldown tracking:

last_stock_notification_date

Datetime - Tracks last stock alert sent

last_price_drop_notification_date

Datetime - Tracks last price drop alert

last_reminder_notification_date

Datetime - Tracks last reminder sent

Configuration Parameters

Customize cooldown periods via Settings > Technical > Parameters > System Parameters:

Parameter Key Default Value Description
ecommerce_wishlist.notification_cooldown_hours 24 Cooldown for stock/price notifications (hours)
ecommerce_wishlist.reminder_cooldown_days 7 Cooldown for wishlist reminders (days)

Real-World Spam Prevention Scenarios

Scenario 1: Price Volatility

Problem: Product price changes 50 times in one day due to dynamic pricing or import errors.
Solution: User receives only 1 notification per 24 hours, regardless of how many price changes occur.

Scenario 2: Stock Fluctuations

Problem: Stock goes in/out repeatedly due to manual adjustments or synchronized warehouse updates.
Solution: Cooldown prevents spam even if stock flag resets multiple times per day.

✅ Production-Ready Anti-Spam Protection | ✅ Configurable Parameters | ✅ Detailed Logging

Professional Support in English & Spanish

We're here to help you succeed

Email Support

support@hexalian.com

🇺🇸 English | 🇪🇸 Español

Response within 24 hours

WhatsApp

+1 (724) 215-3235

Quick responses in both languages

Business hours support

Website

www.hexalian.com

Documentation & Resources

Video tutorials available

🚀 Ready to Boost Your Sales?

Install now and transform your customer experience

✅ Install in minutes - No coding required
✅ Works instantly - Pre-configured settings
✅ Fully responsive - Perfect on mobile
✅ Secure & tested - Enterprise-grade code
✅ Support included - We're here to help

Questions? Contact us anytime:
📧 support@hexalian.com | 🌐 www.hexalian.com

⭐ Join Odoo store owners who are already using our modules
💳 Secure payment via Odoo Apps marketplace
🔒 Your satisfaction is guaranteed

⚠️ IMPORTANT CONFIGURATION REQUIREMENT

PLEASE READ CAREFULLY: MANUAL CONFIGURATION REQUIRED

⚠️ MODULE COMPATIBILITY:

  • website_sale_wishlist (Default Odoo Wishlist): This module REPLACES the default Odoo wishlist module. If you have website_sale_wishlist installed, you must UNINSTALL IT FIRST before installing this advanced version. Both modules cannot coexist as they manage the same wishlist functionality.
  • website_sale_stock (Stock Control): This module will BLOCK the "Add to Wishlist" button when products are out of stock. For full wishlist functionality regardless of stock levels, you should UNINSTALL website_sale_stock. If you want advanced stock control with wishlist notifications when products come back in stock, check out our eCommerce Stock Notification module instead!

If you have been using Odoo with the "Continue Selling" option DISABLED (which is the default behavior), YOU MUST MANUALLY UPDATE YOUR PRODUCTS.

If a product is set to "Show as Out of Stock" (default Odoo behavior when stock is 0), Odoo's core logic will completely hide the "Add to Wishlist" button and prevent this module from functioning properly. This is NOT a defect of this module but a core Odoo stock prevention mechanism that blocks wishlist buttons when products are marked as unavailable.

1. Global Setting (Inventory Defaults):

Inventory Defaults Setting

2. Product Level Setting (Sales Tab):

Product Stock Configuration

ACTION REQUIRED:

You must enable "Continue selling when out-of-stock" for your products. You can do this:

  • Via GUI: Go to Product > Sales Tab > Out-of-Stock > Select "Continue selling when out-of-stock".
  • Via Database/Import: Update the allow_out_of_stock_order field to True for all product templates.

Note: You are responsible for ensuring this configuration is correct.

Need Help?

Our support team is ready to assist you with troubleshooting, or any questions.

📧 Email: support@hexalian.com
💬 WhatsApp: +1 (724) 215-3235
🌐 Website: www.hexalian.com

Support available in English & Spanish | Response time: 24-48 hours

⚖️ Legal Information & Licensing

📜 Odoo Proprietary License v1.0 (OPL-1)

This module is licensed under the Odoo Proprietary License v1.0. This means you have the right to use, modify, and deploy this module for your own business, but you may not redistribute, resell, or publish this module or derivatives without explicit written permission from Hexalian LLC.

  • ✅ Permitted: Use in your own Odoo instance, customize for your needs
  • ✅ Permitted: Deploy on multiple databases you own
  • ❌ Prohibited: Reselling, redistributing, or publishing publicly
  • ❌ Prohibited: Removing copyright or license notices

Full License: https://www.odoo.com/documentation/17.0/legal/licenses.html

⚠️ Legal Disclaimer

Privacy & Compliance: This module provides technical tools for customer preference management and notification controls. While designed with privacy best practices in mind, compliance with GDPR, CAN-SPAM, CASL, or other privacy/marketing regulations depends entirely on your implementation, configuration, and business practices.

  • You are responsible for obtaining proper consent before collecting customer data
  • You must comply with all applicable laws in your jurisdiction and your customers' jurisdictions
  • You should implement appropriate data protection and security measures
  • You must provide customers with privacy policies and terms of service
  • You are responsible for handling data subject access requests (DSAR) and data deletion requests

Hexalian LLC provides this software "AS IS" without warranty of any kind. We strongly recommend consulting with your legal advisor to ensure your use of this module complies with all applicable laws.

💼 Support & Customization

Need help with implementation, customization, or compliance questions?

  • Technical Support: support@hexalian.com
  • Custom Development: Available for enterprise clients
  • Legal Compliance Consultation: We recommend consulting your own legal advisor
  • WhatsApp: +1 (724) 215-3235

Ecommerce Wishlist v19.0.1.0.0
Developed by Hexalian LLC
Licensed under OPL-1 | Compatible with Odoo 19.0+

Contact Us:
Email: support@hexalian.com
WhatsApp: +1 (724) 215-3235
Website: www.hexalian.com

Let customers save their favorites today!

Ecommerce Wishlist Module

  • Overview
  • Key Features
    • Core Functionality
    • User Experience
    • Technical Features
  • Installation
    • Prerequisites
    • Installation Steps
  • Configuration
    • No Configuration Required
    • Permissions
  • Usage
    • For Customers
    • For Administrators
    • For Developers
  • API Reference
    • HTTP Endpoints
    • JSON-RPC Endpoints
  • Database Structure
    • Model: ecommerce_wishlist.wishlist
  • Customization
    • Extending the Model
    • Customizing Templates
    • Styling
  • Troubleshooting
    • Wishlist Button Not Showing
    • Items Not Adding to Wishlist
    • Concurrency Errors
    • Duplicate Product Error
  • Module Structure
    • Assets
    • Installation Hooks
  • Performance Optimization
    • Database Indexes
    • Query Optimization
    • Caching
  • Compatibility
  • Dependencies
    • Required Modules
  • Support
  • License
  • Credits
  • Changelog
    • Version 1.0.0

Overview

The Ecommerce Wishlist module provides comprehensive wishlist functionality for your Odoo 17 e-commerce store. This standalone module was extracted from the web_commerce_suite and allows customers to save products they're interested in for later purchase, improving user experience and potentially increasing sales.

The module features a beautiful heart icon button on product pages, AJAX-powered operations for smooth interactions, and a modern card-based wishlist page with responsive design.

Key Features

Core Functionality

  • Add to Wishlist: Customers can add products to their wishlist from product pages
  • Wishlist Page: Dedicated page displaying all wishlist items in a modern card grid layout
  • Quick Add to Cart: Add wishlist items directly to cart without leaving the wishlist page
  • Remove Items: Remove individual items from the wishlist
  • Product Variants: Full support for product variants
  • Real-time Counter: Wishlist counter in header updates in real-time
  • Stock Status: Display product availability and stock status

User Experience

  • Authentication Required: Secure, user-specific wishlists (public users redirected to login)
  • AJAX Operations: Smooth interactions without page reloads
  • Responsive Design: Works perfectly on all devices with 6 specialized CSS files
  • Heart Icon Button: Beautiful heart icon on product pages (desktop and mobile)
  • Empty State: Beautiful empty wishlist widget with animated heart and quick action links
  • Modern Card Layout: Product cards with images, prices, availability badges, and action buttons

Technical Features

  • Database Storage: Persistent storage using ecommerce_wishlist.wishlist model
  • Security Rules: 4 record rules + 4 access rights for comprehensive security
  • Concurrency Handling: Robust handling with 3 retry attempts and exponential backoff
  • Multi-language: English and Spanish translations included
  • Performance: Optimized queries with indexes on product_id, user_id, and create_date
  • Installation Hooks: Post-install and uninstall hooks for data management
  • Product Variants: Full support for configurable product variants

Installation

Prerequisites

  • Odoo 17.0 or later
  • website_sale module installed
  • portal module installed

Installation Steps

  1. Copy the module to your Odoo addons directory:

    cp -r ecommerce_wishlist /path/to/odoo/addons/
    
  2. Update the apps list:

    • Go to Apps menu
    • Click "Update Apps List"
    • Search for "Ecommerce Wishlist"
  3. Install the module:

    • Click "Install" button
    • The post_init_hook will run automatically and log successful installation

Configuration

No Configuration Required

The module works out of the box with no configuration required. All wishlist features are enabled by default upon installation.

Permissions

The module includes the following access rights and security rules:

Access Rights (ir.model.access.csv):

  • Public Users: Read-only access
  • Portal Users: Read, Write, Create (no Delete)
  • Internal Users: Read, Write, Create (no Delete)
  • Sales Managers: Full CRUD access (including Delete)

Record Rules (ir.rule):

  • Public Users: Can read all wishlist items
  • Portal Users: Can manage only their own wishlist items (domain: user_id = current user)
  • Internal Users: Can manage only their own wishlist items (domain: user_id = current user)
  • Sales Managers: Can manage all wishlist items (no domain restriction)

Usage

For Customers

Adding Products to Wishlist

  1. Navigate to any product page
  2. Click the "Add to Wishlist" button below the "Add to Cart" button
  3. Login if prompted (wishlist requires authentication)

Viewing Wishlist

  • Visit /shop/wishlist directly
  • The wishlist page displays all items in a modern card grid layout

Managing Wishlist Items

  • Add to Cart: Click the "Add to Cart" button on any wishlist item
  • Remove: Click the "Remove" button to delete an item
  • View Product: Click the product name or image to view details

For Administrators

View All Wishlists

  • Go to Sales → Configuration → Wishlist (if menu is enabled)
  • Or access via Settings → Technical → Database Structure → Models → Search for "ecommerce.wishlist"

Cleanup Wishlist Data

# In Odoo shell or code
self.env['ecommerce_wishlist.wishlist'].sudo().cleanup_all_wishlist_data()

For Developers

Model Access Examples

# Get wishlist items for current user
wishlist_items = request.env['ecommerce_wishlist.wishlist'].get_wishlist_products()

# Get wishlist items for specific user
wishlist_items = request.env['ecommerce_wishlist.wishlist'].get_wishlist_products(user_id=user_id)

# Add product to wishlist
request.env['ecommerce_wishlist.wishlist'].sudo().create({
    'product_id': product_id,
    'user_id': user_id,
})

# Add wishlist item to cart
wishlist_item = request.env['ecommerce_wishlist.wishlist'].browse(wishlist_id)
result = wishlist_item.add_to_cart()
# Returns: {'success': bool, 'message': str}

# Cleanup all wishlist data
count = request.env['ecommerce_wishlist.wishlist'].sudo().cleanup_all_wishlist_data()

API Reference

HTTP Endpoints

Add to Wishlist

  • Route: POST /wishlist/add
  • Auth: Public (redirects to login if not authenticated)
  • CSRF: Required
  • Parameters:
    • product_id - Product template ID
    • variant_id (optional) - Specific product variant ID
  • Returns: Redirect to /shop/wishlist or JSON response

View Wishlist Page

  • Route: GET /shop/wishlist
  • Auth: Public (redirects to login if not authenticated)
  • Returns: Rendered wishlist page template

JSON-RPC Endpoints

Add Wishlist Item to Cart

  • Route: POST /shop/wishlist/add_to_cart/<wishlist_id>
  • Type: JSON
  • Auth: Public
  • Returns: {'success': bool, 'message': str, 'show_cart_link': bool, 'cart_url': str}

Remove Item from Wishlist

  • Route: POST /shop/wishlist/remove/<wishlist_id>
  • Type: JSON
  • Auth: Public (requires authentication)
  • Concurrency: 3 retry attempts with exponential backoff
  • Returns: {'success': bool, 'message': str}

Remove Product from Wishlist

  • Route: POST /shop/wishlist/remove/product/<product_id>
  • Type: JSON
  • Auth: Public (requires authentication)
  • Returns: {'success': bool, 'message': str}

Check Authentication Status

  • Route: POST /shop/wishlist/check_access
  • Type: JSON
  • Auth: Public
  • Returns: {'success': bool, 'is_authenticated': bool, 'can_access': bool, 'redirect_url': str}

Get Wishlist Count

  • Route: POST /shop/wishlist/count
  • Type: JSON
  • Auth: Public
  • Returns: {'count': int}

Database Structure

Model: ecommerce_wishlist.wishlist

Field Type Description
product_id Many2one Reference to product.product (required, indexed, cascade delete)
user_id Many2one Reference to res.users (required, indexed, cascade delete)
active Boolean Active status (default: True)
create_date Datetime Date added to wishlist (readonly, indexed)
price_unit Float Product price (computed, stored)
product_name Char Product name (related, stored)
product_image Binary Product image 128x128 (related)
product_description Text Product sale description (related)
website_published Boolean Published status (related)
qty_available Float Available quantity (related)

Constraints

  • SQL Unique Constraint: product_user_uniq - Each product can only appear once per user in the wishlist
  • Cascade Delete: Wishlist items are automatically deleted when product or user is deleted

Customization

Extending the Model

from odoo import models, fields

class ProductWishlist(models.Model):
    _inherit = 'ecommerce.wishlist'

    custom_field = fields.Char(string='Custom Field')

Customizing Templates

Override the wishlist page template:

<template id="custom_wishlist_page_custom" inherit_id="ecommerce_wishlist.custom_wishlist_page">
    <xpath expr="//div[@class='wishlist-page']" position="before">
        <div class="custom-header">
            <!-- Your custom content -->
        </div>
    </xpath>
</template>

Styling

Override CSS by creating a new CSS file and adding it to assets:

'web.assets_frontend': [
    'your_module/static/src/css/wishlist_custom.css',
],

Troubleshooting

Wishlist Button Not Showing

  1. Check if the module is installed and enabled
  2. Clear browser cache and reload the page
  3. Regenerate assets: Settings → Technical → User Interface → Views → Regenerate Assets Bundles
  4. Check browser console for JavaScript errors

Items Not Adding to Wishlist

  1. Ensure user is logged in (wishlist requires authentication - public users are redirected to login)
  2. Check browser console for JavaScript errors
  3. Verify CSRF token is present in the page
  4. Check Odoo logs for server-side errors

Concurrency Errors

The module includes built-in concurrency handling with 3 retry attempts and exponential backoff. If you still experience issues:

  1. Check database logs for deadlock errors
  2. Ensure PostgreSQL is properly configured
  3. The retry mechanism should handle most concurrent delete operations automatically

Duplicate Product Error

If you see "This product is already in your wishlist!" error:

  1. This is expected behavior - the SQL constraint prevents duplicate entries
  2. The product is already in the wishlist
  3. No action needed - this is working as designed

Module Structure

Assets

CSS Files (web.assets_frontend):

  • wishlist_enhanced.css - Main wishlist styles and animations
  • wishlist_cart_wrapper.css - Cart integration styles
  • wishlist_add_to_cart_fix.css - Add to cart button fixes
  • wishlist_responsive.css - Mobile responsive styles
  • wishlist_layout_fix.css - Layout fixes and adjustments
  • wishlist_card_responsive.css - Wishlist card responsive design

JavaScript Files (web.assets_frontend):

  • wishlist_header_button.js - Header wishlist button functionality
  • wishlist_auth.js - Authentication handling
  • wishlist_ajax.js - AJAX operations for wishlist
  • wishlist_fixes.js - Various fixes and enhancements
  • wishlist_add_to_cart.js - Add to cart functionality

QWeb Templates (web.assets_qweb):

  • wishlist_button.xml - Wishlist button template

Installation Hooks

Post-Install Hook (post_init_hook):

  • Logs successful installation
  • Confirms wishlist functionality is available

Uninstall Hook (uninstall_hook):

  • Cleans up all wishlist data from database
  • Logs cleanup statistics

Performance Optimization

Database Indexes

The module automatically creates indexes on:

  • product_id - For fast product lookups
  • user_id - For fast user wishlist queries
  • create_date - For sorting by date added

Query Optimization

  • Uses sudo() for efficient database access
  • Implements exists() checks before operations
  • Stores computed and related fields for faster access
  • Uses domain filters to minimize data retrieval

Caching

Consider implementing caching for:

  • Wishlist count queries (already optimized with search_count)
  • Product availability checks (uses related fields)

Compatibility

  • Odoo Version: 17.0+
  • Python Version: 3.8+
  • Browsers: Chrome, Firefox, Safari, Edge (latest versions)
  • Mobile: iOS Safari, Chrome Mobile

Dependencies

Required Modules

  • base - Odoo core
  • web - Web interface
  • website - Website builder
  • website_sale - E-commerce functionality
  • product - Product management
  • sale - Sales management

Note: The portal module is NOT required as a dependency, though portal users can use the wishlist feature.

Support

For support, please contact:

  • Email: support@hexalian.com
  • Website: https://www.hexalian.com

License

This module is licensed under the Odoo Proprietary License v1.0 (OPL-1).

Credits

Author: Hexalian LLC

Website: https://www.hexalian.com

Version: 1.0.0

Changelog

Version 1.0.0

  • Initial release extracted from web_commerce_suite module
  • Core wishlist functionality with database storage
  • Heart icon button on product pages (desktop and mobile responsive)
  • AJAX-based operations for smooth user experience
  • Multi-language support (EN/ES)
  • Fully responsive design with 6 specialized CSS files
  • 5 JavaScript files for enhanced functionality
  • Comprehensive security rules and access rights
  • Concurrency handling with retry logic (3 attempts, exponential backoff)
  • Post-install and uninstall hooks for data management
  • Beautiful empty wishlist state with quick action buttons
  • Support for product variants
  • Authentication required for wishlist operations
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with