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
This commit is contained in:
296
saleor-features.md
Normal file
296
saleor-features.md
Normal file
@@ -0,0 +1,296 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user