# Saleor Features Overview ## Built-in Features ### Core Commerce - **Products & Variants** - Support for simple and variable products - **Categories** - Hierarchical nested categories (MPTT tree structure) - **Collections** - Manual and automated collections - **Inventory** - Multi-warehouse stock tracking - **Channels** - Multi-channel support (different prices/currencies per channel) - **Multi-language** - Full translation support for products, categories, pages - **Multi-currency** - Channel-based currency configuration ### Orders & Checkout - **Shopping Cart** - Persistent cart with metadata support - **Checkout Flow** - Customizable checkout process - **Orders** - Full order management with status tracking - **Draft Orders** - Create orders manually (e.g., for phone orders) - **Order History** - Complete audit trail of order changes ### Payments - **Payment Gateway Integration** - Stripe, Adyen, PayPal, and more - **Transactions** - Transaction-based payment handling (Saleor 3.x+) - **Multiple Payment Methods** - Per-channel configuration - **Partial Payments** - Support for split payments ### Shipping - **Shipping Zones** - Geographic shipping regions - **Shipping Methods** - Multiple carriers and rates - **Free Shipping** - Threshold-based free shipping - **Weight-based Rates** - Calculate by product weight ### Discounts & Promotions - **Vouchers** - Coupon codes with various rules - **Promotions** - Automatic discounts (percentage, fixed amount) - **Buy X Get Y** - Gift with purchase promotions - **Catalog Promotions** - Category/product-specific discounts ### Customers - **User Accounts** - Customer registration and profiles - **Address Book** - Multiple shipping/billing addresses - **Customer Groups** - User segmentation - **Order History** - Customer order visibility ### Content Management - **Pages** - Static pages (About, Contact, etc.) - **Menus** - Navigation menu builder - **Page Types** - Structured content with attributes ### Gift Cards - **Digital Gift Cards** - Sell and redeem gift cards - **Balance Tracking** - Usage history ### Taxes - **Tax Classes** - Different tax rates per product type - **Tax Configuration** - Country/region-specific taxes - **VAT Support** - European VAT handling ### Staff & Permissions - **Staff Accounts** - Admin user management - **Permission Groups** - Role-based access control - **Impersonation** - Login as customer for support --- ## Missing Features (Need to Build/Add) ### 1. Product Reviews ⭐ **Status:** NOT built-in (on roadmap but not planned) **Official Statement:** > "We are not planning to add product reviews, however, you could use product metadata to provide very basic reviews or use a full fledge service for reviews such as trustpilot and integrate it with Saleor." **Options:** #### Option A: Third-Party Service (Recommended) - **Trustpilot** - Industry standard, SEO benefits - **Yotpo** - Reviews + UGC + loyalty - **Judge.me** - Affordable, works well with headless - **Reviews.io** - Good API for headless Integration: Add JS widget to storefront #### Option B: Build Custom Review System Create new tables: ```sql -- Custom reviews table CREATE TABLE product_review ( id SERIAL PRIMARY KEY, product_id INTEGER REFERENCES product_product(id), user_id INTEGER REFERENCES account_user(id), rating INTEGER CHECK (rating >= 1 AND rating <= 5), title VARCHAR(255), comment TEXT, is_approved BOOLEAN DEFAULT false, created_at TIMESTAMP DEFAULT NOW(), updated_at TIMESTAMP DEFAULT NOW() ); ``` Then add GraphQL mutations: ```graphql type Mutation { productReviewCreate(productId: ID!, input: ReviewInput!): ProductReview productReviewUpdate(reviewId: ID!, input: ReviewInput!): ProductReview } ``` **Effort:** Medium-High (2-4 weeks) #### Option C: Use Product Metadata (Quick Hack) Store reviews in product metadata: ```json { "reviews": [ {"rating": 5, "comment": "Great product!", "author": "John"} ] } ``` **Limitations:** No filtering, no moderation, poor performance --- ### 2. Abandoned Cart Recovery ⭐ **Status:** NOT built-in **Options:** #### Option A: Email Marketing Platform (Recommended) Most popular solution: **Klaviyo** (Best for Saleor) - Native e-commerce focus - Abandoned cart flows - Product recommendations - Customer segmentation - Works via API integration **Integration approach:** ```javascript // Track checkout started klaviyo.track('Started Checkout', { $value: checkout.totalPrice.amount, ItemNames: checkout.lines.map(l => l.variant.name), CheckoutURL: `https://dev.manoonoils.com/checkout/${checkout.id}` }); ``` Other options: - **Mailchimp** - Good free tier - **Sendinblue** - Affordable - **ActiveCampaign** - Advanced automation - **Omnisend** - E-commerce focused **Effort:** Low-Medium (1-2 weeks) #### Option B: Build Custom Abandoned Cart Database approach: ```sql -- Track checkout abandonment CREATE TABLE checkout_abandoned ( checkout_id INTEGER PRIMARY KEY REFERENCES checkout_checkout(id), user_email VARCHAR(255), cart_value NUMERIC(20,3), abandoned_at TIMESTAMP DEFAULT NOW(), email_sent BOOLEAN DEFAULT false, recovered BOOLEAN DEFAULT false ); ``` Components needed: 1. **Background job** - Check for abandoned carts (e.g., 1 hour after last update) 2. **Email service** - Sendgrid/AWS SES/etc 3. **Email templates** - Serbian + English 4. **Recovery URL** - Deep link to restore cart 5. **Analytics** - Track recovery rate **Effort:** High (4-6 weeks) #### Option C: N8N Automation Use your existing n8n instance: ``` Trigger: Schedule (every hour) ↓ PostgreSQL: Find abandoned checkouts ↓ Filter: Not completed, older than 1 hour ↓ Send Email: Via Sendgrid ↓ Update: Mark email_sent = true ``` **Effort:** Medium (1-2 weeks) --- ### 3. Email Marketing Automation **Status:** NOT built-in **Options:** - Klaviyo (recommended) - Mailchimp - Sendinblue **What you get:** - Welcome emails - Order confirmations - Shipping notifications - Post-purchase follow-up - Win-back campaigns --- ### 4. Live Chat **Status:** NOT built-in **Options:** - Tidio - Intercom - Crisp - Tawk.to (free) --- ### 5. Analytics **Status:** NOT built-in **Options:** - Google Analytics 4 - Plausible - Mixpanel - Amplitude - Your existing Rybbit --- ## Recommended Setup for Manoon Oils ### Phase 1: Essential (Launch) - [ ] Saleor core (✅ Done) - [ ] Payment gateway (Stripe) - [ ] Shipping configuration - [ ] Tax setup - [ ] Basic email (order confirmations) ### Phase 2: Growth (Post-launch) - [ ] **Klaviyo** - Abandoned cart + email marketing - [ ] **Trustpilot** or **Judge.me** - Product reviews - [ ] Advanced analytics - [ ] Live chat ### Phase 3: Optimization - [ ] Loyalty program - [ ] Subscription products - [ ] Advanced promotions - [ ] B2B features --- ## Cost Estimate | Feature | Solution | Monthly Cost | |---------|----------|--------------| | Reviews | Judge.me | Free - $15 | | Reviews | Trustpilot | $200+ | | Abandoned Cart | Klaviyo | Free (up to 250 contacts) - $20+ | | Live Chat | Tawk.to | Free | | Live Chat | Intercom | $74+ | | Email | Sendgrid | Free (100/day) - $19+ | --- ## Summary | Feature | Built-in? | Solution | |---------|-----------|----------| | Product Reviews | ❌ No | Judge.me / Trustpilot / Custom build | | Abandoned Cart | ❌ No | Klaviyo / N8N automation / Custom build | | Email Marketing | ❌ No | Klaviyo / Mailchimp | | Live Chat | ❌ No | Tawk.to / Intercom | | Gift Cards | ✅ Yes | Native Saleor | | Multi-language | ✅ Yes | Native Saleor | | Multi-currency | ✅ Yes | Native Saleor | | Promotions | ✅ Yes | Native Saleor | | Inventory | ✅ Yes | Native Saleor | **Bottom line:** Saleor is a solid commerce engine but requires third-party services or custom development for reviews and abandoned cart recovery.