Upsells - Scope Document
Project: Coneflower Creamery Shopify Integration Component: Product Page Cross-Selling Status: Ready to Build (pending design)
Objective
Encourage customers ordering ice cream cakes to also purchase seasonal ice cream pints through a "Pair with seasonal pints" upsell section on product pages.
MVP Approach
Product Page Upsells
Add a designed section below the main product content on cake product pages:
┌──────────────────────────────────────────────────────────┐
│ ICE CREAM CAKE │
│ [Product Image] Chocolate Cake │
│ $XX.00 │
│ [Select Flavor ▼] │
│ [Add to Cart] │
├──────────────────────────────────────────────────────────┤
│ │
│ 🍦 COMPLETE YOUR ORDER WITH SEASONAL PINTS │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ [image] │ │ [image] │ │ [image] │ │ [image] │ │
│ │ Vanilla │ │ Choc. │ │ Mint │ │ Caramel │ │
│ │ $12 │ │ $12 │ │ $12 │ │ $12 │ │
│ │ [Add] │ │ [Add] │ │ [Add] │ │ [Add] │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
Functionality
Display Logic
| Page | Show Upsells? | Products Shown |
|---|---|---|
| Cake product page | Yes | Ice cream pints |
| Pint product page | Maybe | Other pint flavors (optional) |
| Gift card page | No | N/A |
Upsell Component Features
- Show 3-4 pint products
- Display: image, flavor name, price
- "Quick Add" button (adds to cart without leaving page)
- Cart opens/updates when item added
- Responsive: 4 across on desktop, 2 on tablet, 1-2 on mobile
Implementation Options
Option A: Hardcoded Products (Simplest)
Manually specify which pint variants to show as upsells.
// In single product template
$upsell_variant_ids = [
'gid://shopify/ProductVariant/123', // Vanilla
'gid://shopify/ProductVariant/456', // Chocolate
'gid://shopify/ProductVariant/789', // Mint Chip
'gid://shopify/ProductVariant/012', // Salted Caramel
];
Pros: Simple, fast to build Cons: Requires code change to update featured pints
Option B: Product Tags (More Flexible)
Tag pint variants as "featured-upsell" in Shopify, query by tag.
query {
products(first: 4, query: "tag:featured-upsell") {
edges {
node {
id
title
variants(first: 10) { ... }
}
}
}
}
Pros: Client can change featured pints in Shopify admin Cons: Slightly more complex query
Option C: Show All Pints
Simply display all available pint variants.
Pros: No configuration needed Cons: May show too many options, less curated
Recommended Approach
Option A for MVP - Hardcode 4 featured pint variants.
- Fastest to implement
- Client provides which 4 flavors to feature
- Update in Phase 2 to tag-based if they want flexibility
Tasks
Design
| Task | Details | Est. Hours |
|---|---|---|
| Upsell section design | Layout, spacing, typography | 1.5 |
| Upsell product card | Mini card for pint display | 1 |
| Mobile responsive design | Stack/scroll on small screens | 0.5 |
| Design Total | 3 |
Development
| Task | Details | Est. Hours |
|---|---|---|
| Upsell section template | PHP template partial | 0.5 |
| Fetch upsell products | Query Storefront API for pints | 0.5 |
| Render upsell cards | Image, title, price, add button | 1 |
| Quick Add functionality | Add to cart from upsell card | 1 |
| Responsive CSS | Grid/flex layout | 0.5 |
| Dev Total | 3.5 |
Content/Config Needed
| Item | Status | Notes |
|---|---|---|
| Which 4 pints to feature | Pending | Client to decide |
| Section headline | Suggestion | "Complete your order with seasonal pints" |
| Pint product images | Pending | Need for upsell cards |
Deliverables
- Upsell section design - Approved by client
- Upsell component - Built into single product template
- Quick add functionality - Adds pint to cart from upsell section
Hour Estimate
| Category | Hours |
|---|---|
| Design | 3 |
| Development | 3.5 |
| Total | 6.5 |
Out of Scope (MVP)
- Cart drawer upsells (Phase 2)
- Checkout upsells (requires Shopify Plus)
- Post-purchase upsells (Phase 2 with app)
- Dynamic "you might also like" recommendations
- A/B testing upsell effectiveness
Phase 2 Enhancements
If client wants more sophisticated upselling:
| Feature | Approach | Cost |
|---|---|---|
| Cart drawer upsells | Custom development | 4-6 hrs |
| Tag-based featured products | Update query logic | 2-3 hrs |
| Upsell app (ReConvert, Bold) | Third-party app | $20-50/mo |
References
- Single product template:
single-shopify_product.php - Cart add functionality:
shopify.js→addToCart()