- 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
297 lines
7.7 KiB
Markdown
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.
|