ESHOPMAN

Mastering Multilingual Draft Orders in ESHOPMAN: A Deep Dive for Global Merchants

For ESHOPMAN merchants leveraging the power of headless commerce and HubSpot CMS to manage international storefronts, accurate multilingual support is paramount. The ability to present product information in a customer's native language directly impacts user experience, builds trust, and significantly boosts conversion rates. ESHOPMAN, as a robust Node.js/TypeScript platform wrapped as a HubSpot application, empowers businesses to deploy dynamic storefronts directly through HubSpot CMS, making global reach more accessible than ever. However, even with such advanced capabilities, specific nuances can arise. Recently, a critical insight emerged from the ESHOPMAN community regarding a specific challenge with line item translations during draft order creation.

As an e-commerce migration expert at Move My Store, we understand the intricacies of maintaining seamless operations across diverse platforms. This deep dive aims to shed light on a particular scenario within ESHOPMAN's Admin API that affects multilingual draft orders and provide actionable strategies for ensuring your international customers always see the right language.

In-content image: ESHOPMAN Admin API code for two-step draft order creation alongside a HubSpot CMS multilingual product page.
In-content image: ESHOPMAN Admin API code for two-step draft order creation alongside a HubSpot CMS multilingual product page.

The Identified Challenge: Untranslated Line Items in ESHOPMAN Draft Orders

A diligent ESHOPMAN user identified a bug where line items within draft orders were not being translated to the specified locale when the order was created in a single request via the ESHOPMAN Admin API. Specifically, when utilizing the POST /admin/draft-orders endpoint with both a locale and an items array in the same request, the product_title, product_description, and variant_title for those items would default to the primary language, entirely ignoring the order's intended locale. This can lead to a disjointed customer experience and potential confusion for international buyers.

Why This Matters for ESHOPMAN Merchants

In a headless commerce setup like ESHOPMAN, where the backend (Admin API) is decoupled from the frontend (HubSpot CMS storefront), the integrity of data passed between systems is crucial. For global businesses, this means ensuring that all customer-facing data, from product descriptions to order confirmations, is accurately localized. When draft orders, often used for custom quotes, manual orders, or B2B transactions, fail to reflect the chosen language, it can:

  • Degrade Customer Experience: Customers receiving draft orders in an unexpected language may feel misunderstood or undervalued.
  • Increase Manual Work: Merchants might have to manually correct or re-send draft orders, adding operational overhead.
  • Impact Conversion: Confusion over product details due to incorrect language can deter customers from completing a purchase.
  • Affect International Sales Strategy: Undermine the effort put into localizing HubSpot CMS storefronts if backend processes don't follow suit.

Key Observations and Reproduction Steps:

This issue is particularly notable because items added after the draft order's initial creation (e.g., via POST /admin/draft-orders/:id/edit/items) are translated correctly. This clearly indicates the problem is isolated to the order creation path when items are included in the initial request. This distinction is vital for understanding the workaround.

Here's a simplified way to reproduce the behavior within an ESHOPMAN environment, highlighting the interaction with the Admin API and the underlying Node.js/TypeScript architecture:

  1. Enable Translation Feature: Ensure the translation feature flag is enabled in your ESHOPMAN configuration. This is fundamental for ESHOPMAN's multilingual capabilities.
  2. Configure Locales: Add supported locales (e.g., en-US, fr-FR, es-ES) within your ESHOPMAN setup.
  3. Create and Translate Products: Create a product with variants using the ESHOPMAN Admin API. Subsequently, add translations for its title, description, and variant titles for a secondary locale (e.g., fr-FR) using the Admin API's batch translation endpoint (POST /admin/translations/batch). This ensures the translated data exists within ESHOPMAN's backend.
  4. Attempt Single-Request Draft Order Creation: Attempt to create a draft order in a single request using the ESHOPMAN Admin API endpoint POST /admin/draft-orders. Include both the desired locale (e.g., fr-FR) and the items array containing the product and variant IDs.
  5. Verify Output: Inspect the created draft order. You will observe that the product_title, product_description, and variant_title for the line items default to the primary language, despite the locale being set to fr-FR in the request.

// Example of problematic single-request payload (conceptual)
{
  "email": "customer@example.com",
  "locale": "fr-FR",
  "items": [
    {
      "variant_id": "var_01G8Z0J0J0J0J0J0J0J0J0J0J0",
      "quantity": 1
    }
  ]
}

Strategic Workaround: Ensuring Multilingual Accuracy

Given the observation that items added after initial draft order creation are translated correctly, the most effective workaround involves a two-step process when using the ESHOPMAN Admin API:

  1. Create the Draft Order First (with Locale): Initiate the draft order creation with the desired locale, but without any line items. This establishes the order's language context correctly within ESHOPMAN's system.
  2. Add Line Items Subsequently: Once the draft order is created and you have its ID, make a separate request to add the line items using the POST /admin/draft-orders/:id/edit/items endpoint. At this point, ESHOPMAN will correctly apply the translations based on the draft order's established locale.

// Step 1: Create Draft Order with locale (without items)
POST /admin/draft-orders
{
  "email": "customer@example.com",
  "locale": "fr-FR"
}

// Response will include draft_order.id

// Step 2: Add items to the created draft order
POST /admin/draft-orders/{draft_order_id}/edit/items
{
  "items": [
    {
      "variant_id": "var_01G8Z0J0J0J0J0J0J0J0J0J0J0",
      "quantity": 1
    }
  ]
}

This two-step approach ensures that ESHOPMAN's Node.js/TypeScript backend processes the locale context for the draft order before attempting to retrieve and associate translated product data, thereby resolving the issue for your HubSpot CMS-powered international storefronts.

Best Practices for ESHOPMAN Multilingual Stores

Beyond this specific workaround, maintaining a robust multilingual ESHOPMAN store, especially when deploying storefronts via HubSpot CMS, involves several best practices:

  • Consistent Translation Management: Utilize ESHOPMAN's Admin API (e.g., POST /admin/translations/batch) to manage all product, variant, and content translations centrally. This ensures consistency across your headless commerce setup.
  • Thorough Testing: Always test your multilingual flows, from product display on your HubSpot CMS storefront to checkout and order confirmation, for each supported locale.
  • Leverage HubSpot CMS Features: Integrate ESHOPMAN's Store API data seamlessly with HubSpot CMS's multilingual page capabilities to provide a fully localized frontend experience.
  • API Monitoring: Implement monitoring for your ESHOPMAN Admin API calls to quickly identify and address any unexpected behavior in a dynamic headless environment.
  • Stay Updated: Keep your ESHOPMAN application updated to benefit from the latest features, bug fixes, and performance improvements.

Conclusion

ESHOPMAN provides a powerful, flexible headless commerce solution, deeply integrated with HubSpot for seamless storefront management and deployment. While minor challenges like the untranslated line items in draft orders can arise, understanding the platform's behavior and implementing strategic workarounds ensures that your international operations remain smooth and customer-centric. By following the recommended two-step process for draft order creation and adhering to best practices for multilingual management, ESHOPMAN merchants can continue to deliver exceptional, localized experiences to customers worldwide, driving growth and engagement across all their HubSpot CMS-powered storefronts.

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools