*** title: Order Management subtitle: Complete guide to managing orders in the CPS system slug: order-management ---------------------- Learn how to create, track, and manage orders through the CPS Order Management API. ## Order Lifecycle ### 1. Order Creation Orders are created through the ordering platform with customer details and selected photos. ```javascript const createOrder = async (orderData) => { const response = await fetch('https://convention.photos/api/orders/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(orderData) }); return response.json(); }; ``` ### 2. Status Tracking Orders progress through statuses: pending → paid → shipped ```javascript const updateOrderStatus = async (orderId, status) => { const response = await fetch(`https://cps-orders.replit.app/api/orders/${orderId}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ status }) }); return response.json(); }; ``` ### 3. Shipping Updates Mark orders as shipped and generate shipping labels. ```javascript const markShipped = async (orderId) => { const response = await fetch(`https://cps-orders.replit.app/api/orders/${orderId}/update-shipping`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ shipped: true }) }); return response.json(); }; ``` ### 4. Feedback Collection Collect customer satisfaction feedback after fulfillment. ```javascript const submitFeedback = async (orderNumber, feedback) => { const response = await fetch(`https://cps-orders.replit.app/api/orders/${orderNumber}/feedback`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ feedback }) }); return response.json(); }; ``` ## Admin Dashboard ### Order Monitoring Track all orders by status: * **Pending**: Awaiting payment * **Paid**: Payment received, ready for fulfillment * **Shipped**: Order shipped to customer * **Cancelled**: Order cancelled ### Sales Reporting Access comprehensive sales analytics: ```javascript const getSalesSummary = async () => { const response = await fetch('https://cps-orders.replit.app/api/orders/summary'); return response.json(); }; // Returns: // { // totalOrders: 150, // pendingCount: 12, // completedCount: 125, // cancelledCount: 13, // totalRevenue: 2500.00, // averageOrderValue: 20.00 // } ``` ### Envelope Generation Generate shipping labels for fulfilled orders: ```javascript // Get PNG shipping label const getPngLabel = async (orderId) => { const response = await fetch(`https://cps-orders.replit.app/api/envelope/png/${orderId}`); return response.blob(); }; // Get DOCX shipping label const getDocxLabel = async (orderId) => { const response = await fetch(`https://cps-orders.replit.app/api/envelope/docx/${orderId}`); return response.blob(); }; ``` ## Google Sheets Integration All order data is stored in Google Sheets with real-time synchronization: * **Real-time updates**: Changes reflect immediately * **30-second cache**: Performance optimized with caching * **Automatic backups**: Data safety ensured * **Column-based status**: Easy status management ### Sheet Structure * **Column A**: Order ID * **Column B**: Order Number * **Column C**: Customer Name * **Column D**: Email * **Column E**: Phone * **Column F**: Fulfillment Type * **Column G**: Shipping Address * **Column H**: Items * **Column I**: Subtotal * **Column J**: Shipping Fee * **Column K**: Total * **Column L**: Status * **Column M**: Created At * **Column N**: City * **Column O**: State * **Column P**: ZIP Code * **Column Q**: Shipping Status * **Column R**: Feedback ## Email Automation Orders trigger automated email workflows: * **Receipt emails**: Sent upon order creation * **Status updates**: Notifications for status changes * **Shipping confirmations**: When orders ship * **Feedback requests**: Post-fulfillment surveys ## Best Practices 1. **Validate addresses** before order creation 2. **Monitor order status** regularly 3. **Generate labels** immediately after payment 4. **Collect feedback** within 7 days of shipping 5. **Backup data** regularly from Google Sheets ## Quick example Here's a minimal example showing common customization options in `docs.yml`: ```yaml title="docs.yml" title: Your Documentation colors: accentPrimary: dark: "#81C784" light: "#1B5E20" logo: dark: docs/assets/logo-dark.svg light: docs/assets/logo-light.svg favicon: docs/assets/favicon.svg ``` For complete configuration options, see the [site-level settings documentation](https://buildwithfern.com/learn/docs/configuration/site-level-settings).