# Shipping Label Plan ## Overview Standardized waybill data structure for shipping label generation. ## Problem - Different shipping carrier addons (JNE, JNT, SiCepat, etc.) store data differently - No standard structure for label generation - Label button needs waybill data to function ## Proposed Solution ### 1. Standardized Meta Key Order meta: `_shipping_waybill` ### 2. Data Structure ```json { "tracking_number": "JNE123456789", "carrier": "jne", "carrier_name": "JNE Express", "service": "REG", "estimated_days": 3, "sender": { "name": "Store Name", "address": "Full address line 1", "city": "Jakarta", "postcode": "12345", "phone": "08123456789" }, "recipient": { "name": "Customer Name", "address": "Full address line 1", "city": "Bandung", "postcode": "40123", "phone": "08987654321" }, "package": { "weight": "1.5", "weight_unit": "kg", "dimensions": "20x15x10", "dimensions_unit": "cm" }, "label_url": null, "barcode": "JNE123456789", "barcode_type": "128", "created_at": "2026-01-05T12:00:00+07:00" } ``` ### 3. Addon Integration Contract Shipping addons MUST: 1. Call `update_post_meta($order_id, '_shipping_waybill', $waybill_data)` 2. Use the standard structure above 3. Set `label_url` if carrier provides downloadable PDF 4. Set `barcode` for local label generation ### 4. Label Button Behavior 1. Check if `_shipping_waybill` meta exists on order 2. If `label_url` → open carrier's PDF 3. Otherwise → generate printable label from meta data ### 5. UI Behavior - Label button hidden if order is virtual-only - Label button shows "Generate Label" if no waybill yet - Label button shows "Print Label" if waybill exists ## API Endpoint (Future) ``` POST /woonoow/v1/orders/{id}/generate-waybill - Calls shipping carrier API - Stores waybill in standardized format - Returns waybill data GET /woonoow/v1/orders/{id}/waybill - Returns current waybill data ``` ## Implementation Priority 1. Define standard structure (this document) 2. Implement Label UI conditional logic 3. Create waybill API endpoint 4. Document for addon developers