Top Level Technical Considerations
Purpose
This section documents the top-level technical requirements, constraints, and considerations that will shape the new website implementation. It synthesizes technical findings to inform key technology decisions.
Technical considerations answer: What technical requirements must the new website meet?
Current State Summary
Architecture Overview
The current infrastructure consists of two interconnected but separate systems:
| Component | Technology | Function |
|---|---|---|
| Storefront Websites | Custom CMS (“Ajax”) | Marketing sites, product display, size charts |
| Web Stores | Magento 2 Community | Cart, checkout, pricing, fulfillment |
| Size Charts | VBScript + SQL stored procedures | Complex product configuration logic |
| ERP Integration | Custom scripts | File-based sync with three ERP systems |
Critical Technical Debt
| Issue | Impact | Source |
|---|---|---|
| Custom search | Zero results for valid part numbers; | Search Log |
| Static size charts | VBScript/SQL stored procedures; no real-time interactivity | Brief |
| No API layer | All integrations file-based or custom | Brief |
| No documentation | ”House built without plans”; steep learning curve | Interview |
| Fragment URLs | Checkout uses # fragments; breaks analytics | Brief |
Platform Requirements
Non-Negotiable Technical Requirements
Based on the brief and stakeholder input, any platform must support:
| Requirement | Specification | Constraint Source |
|---|---|---|
| Decimal precision | 4 decimal places for pricing and quantity | Eliminated Shopify |
| Product variants | Support for 320+ variants per product | Product complexity |
| Multi-currency | USD, CAD, MXN, GBP, EUR, PLN, CNY, HKD | 11 regional markets |
| Multi-language | EN, ES, IT, DE, FR, PL, ZH (7 languages) | Regional requirements |
| ERP integration | Sage, EFACs, KingDee (3 systems) | Current infrastructure |
| Size chart complexity | 180 columns across 42 column types | Current functionality |
Functional Requirements by Priority
Critical (Launch Blockers)
| Capability | Current State | Required State |
|---|---|---|
| Search | Custom-built, returns zero for valid SKUs | Native search with part number recognition |
| Size charts | Static HTML from VBScript | Interactive, sortable, filterable tables |
| Checkout | Fragment URLs, broken tracking | Clean URL paths, full analytics |
| Mobile experience | Desktop-first, tables non-responsive | Mobile-first, responsive tables |
High Priority (Near-Term)
| Capability | Current State | Required State |
|---|---|---|
| Customer portal | Does not exist | Order history, tracking, reorder, pricing |
| Stock visibility | Inaccurate or absent | Real-time inventory by warehouse |
| Sample ordering | Separate form per part | Unified cart with $0 samples |
| Analytics | Broken cross-domain, missing events | Single GA4 property, full e-commerce |
Medium Priority (Post-Launch)
| Capability | Current State | Required State |
|---|---|---|
| Quick order | Does not exist | Bulk SKU entry, CSV upload |
| Quote request | Phone/email only | Web-based RFQ submission |
| Configurators | Multi-step, dependent dropdowns | Preserved functionality, improved UX |
| AI advisor | Does not exist | Natural language product recommendations |
ERP Integration
Current ERP Landscape
| System | Region | Architecture | API Capability |
|---|---|---|---|
| Sage | US, Canada, Mexico | Sage 2010, FoxPro, 32-bit, on-prem | None (file-based only) |
| EFACs | UK, EU (incl. Poland) | Cloud-based, single server | XML file-based |
| KingDee | China | Single instance | Unclear |
Integration Note: High probability of ERP changes during migration. Specifics remain unclear per brief.
Required Data Flows
| Data Type | Direction | Frequency | Notes |
|---|---|---|---|
| Orders | Web → ERP | Real-time | Full financial data, not just SKU/qty/price |
| Fulfillments | ERP → Web | Near real-time | Tracking numbers, ship dates |
| Inventory | ERP → Web | Scheduled (hourly) | Stock levels by warehouse |
| Inventory adjustments | ERP → Web | As needed | Corrections, transfers |
| Products | ERP → Web | Scheduled (daily) | New products, updates |
| Pricing | ERP → Web | Scheduled (daily) | Standard and negotiated pricing |
| Returns/Refunds | Bidirectional | As needed | Currently manual, automation desired |
Integration Constraints
| Constraint | Impact | Mitigation |
|---|---|---|
| Sage has no API | Cannot use modern integration patterns | File-based sync or custom middleware |
| 2 week to 3 month product update delays | New products slow to appear online | Improve sync pipeline, reduce manual steps |
| Cross-department coordination | Procedural delays on top of technical | Streamline approval workflows |
Analytics Requirements
Current Analytics Failures
| Issue | Impact | Source |
|---|---|---|
| No cross-domain tracking | Cannot attribute marketing spend | Brief |
| Cookie fires before consent | GDPR compliance risk | Brief |
| No add_to_cart events | Cannot measure funnel | Brief |
| No search tracking | Cannot analyze product discovery | Brief |
| Fragment URLs in checkout | Breaks page-to-page analysis | Brief |
| Multiple GA4 properties | Cannot consolidate regional data | Brief |
Research basis: “Approximately 20% of required metrics are easily available, 40% require significant manual work or BigQuery extraction, and 40% are simply not available with current tracking.”
Required Analytics Implementation
Single GA4 Property Architecture
| Dimension | Purpose |
|---|---|
| Region | US, UK, DE, etc. |
| Brand | MOCAP, Cleartec, Beckett, X-Treme Tape |
| Language | EN, ES, DE, etc. |
| User type | Guest, logged-in, internal staff |
E-commerce Event Requirements
| Event | Trigger |
|---|---|
| view_item | Product page load |
| view_item_list | Category/search results page |
| add_to_cart | Add item to cart |
| remove_from_cart | Remove item from cart |
| begin_checkout | Checkout initiation |
| add_shipping_info | Shipping step completion |
| add_payment_info | Payment step completion |
| purchase | Order confirmation |
Search Event Requirements
| Event | Parameters |
|---|---|
| search | Query term, results count |
| view_search_results | Query, filters applied, results shown |
| search_result_click | Query, clicked product, position |
| search_no_results | Query term (critical for discovery gaps) |
Form Event Requirements
| Event | Parameters |
|---|---|
| form_start | Form type (contact, quote, sample) |
| form_field_complete | Field name, form type |
| form_submit | Form type, success/failure |
| form_error | Field name, error type |
Internal Traffic Segregation
Staff using the site for customer orders must be segregated from customer-initiated actions:
| Method | Implementation |
|---|---|
| IP-based exclusion | Filter known office IP ranges |
| User-based exclusion | Flag internal user accounts |
| Parameter-based | Use utm_source=internal for staff links |
| Separate property | Last resort; complicates reporting |
Recommendation: Implement user-based exclusion via account role plus IP filtering as backup.
Performance Requirements
Page Load Targets
| Page Type | Target (LCP) | Rationale |
|---|---|---|
| Homepage | < 2.5 seconds | Core Web Vitals threshold |
| Category pages | < 2.5 seconds | Heavy image/filter load |
| Product pages | < 2.5 seconds | Tables and configurators |
| Search results | < 2.0 seconds | User patience for search |
| Checkout | < 2.0 seconds | Conversion-critical |
Size Chart Performance
Size charts are the most demanding page element:
| Product | Variant Count | Performance Consideration |
|---|---|---|
| Largest series | 320+ variants | Virtualization or pagination required |
| Average series | 25.8 variants | Standard table rendering |
| Interactive requirements | Sort, filter, search | Client-side for responsiveness |
Recommendation: Implement virtual scrolling for tables exceeding 100 rows. Load visible rows only, render additional rows on scroll.
Image Optimization
| Image Type | Format | Max Size |
|---|---|---|
| Product primary | WebP with JPEG fallback | 100KB |
| Product thumbnails | WebP with JPEG fallback | 20KB |
| Category tiles | WebP with JPEG fallback | 50KB |
| Hero images | WebP with JPEG fallback | 150KB |
Lazy loading: All images below the fold should lazy-load to improve initial page performance.