Integrating Custom Shipping Plugins

1. Overview

This knowledge base article provides a practical guide for development partners integrating custom shipping microservices with the Znode platform. It outlines the required inputs, configuration structure, request/response expectations, and key behavioral considerations to ensure seamless integration.

2. Purpose

The purpose of this document is to help developers understand:

  • How Znode communicates with external shipping microservices
  • What information must be provided during plugin development
  • How shipping services are configured and mapped in Admin and Store settings
  • Required response fields for displaying shipping methods
  • Plugin configuration (global and store-specific)
  • Important integration considerations and constraints

This document should be reviewed before beginning custom plugin development.

3. Key Capabilities of Znode’s Custom Shipping Framework

Znode’s extensible shipping framework allows development partners to:

  • Integrate with internal or external carriers
  • Support multiple shipping types (e.g., LTL, parcel, pickup, local delivery)
  • Implement custom business logic and rules
  • Run shipping logic as independent microservices
  • Return multiple shipping services in a single request
  • Update or version services independently of Znode core
  • Configure plugins globally or per store
  • Apply customer- or account-specific shipping rules

4. How Custom Shipping Services Work

Each shipping plugin defines one or more Shipping Services, such as:

  • LTL Freight
  • Local Truck Delivery
  • Will Call Pickup

Znode uses these services to:

  • Display shipping options in Admin
  • Allow stores to enable or disable services
  • Map services to shipping methods
  • Call Estimate or Calculate APIs
  • Display shipping rates during checkout

Important: Consistent identifiers and complete response data are required for proper operation.

5. Developer Requirements

5.1 Shipping Service Code

  • A unique system identifier
  • No spaces or special characters
  • Must match the value expected by the plugin

Examples:

  • LTLFREIGHT
  • OURTRUCK
  • WILLCALL

5.2 Display Name 

  • Human-readable name shown in Admin UI

5.3 Display Order

  • Determines the order in which services appear in Admin

5.4 IsCalculateIndividually (Boolean: 0 or 1)

Defines how Znode calls the shipping plugin:

  • 1 (True) → Znode calls the plugin once per service
  • 0 (False) → Znode calls the plugin once for all services (batch)

6. API Invocation Patterns

6.1 Calculate Request (IsCalculateIndividually = 1)

Znode sends a separate request per service: 

6.2 Estimate Request (IsCalculateIndividually = 0)

Znode sends all services in a single request: 

7. How Plugin Configuration Works

7.1 Global Configuration

Applies across all stores and environments:

  • API Base URL
  • Authentication details
  • Environment (Sandbox / Production)
  • Shared headers or tokens

7.2 Store-Level Configuration (Configuration Sets)

Applies per store:

  • API keys
  • Account numbers
  • Warehouse or location identifiers
  • Store-specific rules

Note: Only fields defined in the Spec.yaml file will be visible in Admin.

8. Spec.yaml Requirements

The Spec.yaml file defines the configuration schema and UI behavior in Admin.

It should include:

  • All required configuration fields
  • Global vs store-level designation
  • Field groupings
  • Data types and validation rules
  • Consistent naming aligned with plugin logic

Recommendation: Validate completeness before development begins to avoid rework.

9. Plugin Response Requirements

9.1 Estimate API Response

Each object in ShippingEstimateRate[] must include:

  • ShippingCode (Required)
  • ShippingRate (Required — must be > 0)
  • ResponseMessage (Required — cannot be null)

9.2 Calculate API Response

Response must include:

  • ShippingCost (Required — must be > 0)
  • IsValidShippingSetting (Required — must be true)
  • ResponseMessage (Required)

9.3 Important Note: $0 Shipping

  • Znode currently filters out shipping methods with $0 cost

  • A platform enhancement is underway to support valid free shipping scenarios

10. Error Handling Guidelines

To ensure reliability and transparency:

  • Return structured and meaningful error responses
  • Avoid generic HTTP 500 errors
  • Provide business-level messages such as: 
    • Carrier unavailable
    • Account not eligible

These messages are surfaced to downstream systems and UI.

11. Known Considerations

11.1 Account and Address Behavior

Some customer addresses may include:

Resolution Approach

If account validation is required, partners can resolve it using:

Note: This behavior may change in future platform releases.

12. Developer Preparation Checklist

Before starting development, ensure the following are ready:

  • Shipping Service Codes
  • Display names and display order
  • isCalculateIndividually values
  • Global configuration fields
  • Store-level configuration fields
  • Completed and validated Spec.yaml
  • Sample Estimate API responses
  • Sample Calculate API responses
  • Error response formats
  • Business rules and conditional logic

13. Summary

Znode’s custom shipping framework provides a flexible and scalable way to integrate external shipping logic via microservices. Proper configuration, standardized identifiers, and compliant API responses are critical to ensure successful integration and accurate rate calculation during checkout.

For more techni details please refer: Shipping Plugin Customization Developers Guide


Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.