Files
manoon-headless/saleor-features.md
Unchained 7b94537670 feat(saleor): Phase 1 - GraphQL Client Setup
- Add Apollo Client for Saleor GraphQL API
- Create GraphQL fragments (Product, Variant, Checkout)
- Create GraphQL queries (Products, Checkout)
- Create GraphQL mutations (Checkout operations)
- Add TypeScript types for Saleor entities
- Add product helper functions
- Install @apollo/client and graphql dependencies

Part of WordPress/WooCommerce → Saleor migration
2026-03-21 12:36:21 +02:00

297 lines
7.7 KiB
Markdown

# 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.