Skip to content

WooCommerce Easyway Shipping Method

Documentation for the Plug and Pay WooCommerce Easyway Shipping Method plugin. The plugin provides live Easyway rates, Georgian city selection, manual shipment registration, PDF waybills, cancellation, and customer-facing tracking for domestic delivery within Georgia.

Requirements

Technical Requirements

  • PHP: 7.4, 8.1, 8.2, or 8.3
  • ionCube Loader: Required. For version requirements and installation details, see IonCube Loader.
  • WooCommerce: 3.6 or higher

Store Setup Prerequisites

  • Easyway account: API User and API Key supplied by Easyway.
  • Currency: The store currency must be GEL (Georgian Lari).
  • Destination: Delivery is supported within Georgia only.
  • Product weights: Every shippable product must have a positive weight configured in WooCommerce. The plugin converts the store's configured weight unit to kilograms.
  • Recipient information: Registration requires a Georgian mobile number and the recipient's 11-digit personal number.

Technical Specification & Feature Support

FeatureSupported
HPOS
Shipping Zones
Real-time Rates
Georgian City Search
Shipment RegistrationManual
PDF Waybill
Shipment Cancellation
Shipment Tracking
Multiple WooCommerce Shipping Packages
Test Mode
Easyway courier-side COD collection
Third-party shipping-fee payer
Debug Mode

Setup

Global Settings

Go to WooCommerce > Settings > Shipping > Easyway Courier and configure:

  1. API User: The API user supplied by Easyway.
  2. API Key: The API key supplied with the Easyway merchant account.
  3. Sender City / Origin: The warehouse or pickup city. Easyway cities are downloaded after valid credentials are configured.
  4. Sender Address: The street address where the courier collects shipments.
  5. Sender Contact Name: The person responsible for pickup.
  6. Sender Phone Number: A nine-digit Georgian mobile number. A +995 country prefix is accepted and normalized during registration.
  7. Sender Tax Code / Identification: A 9-digit company tax ID or an 11-digit personal number.
  8. Sender Legal Form: The sender's legal form from the Easyway directory.
  9. Default Package Tier: The Easyway package type used for price calculation and registration. The default is Standard.
  10. Default Length, Width, and Height: Fallback parcel dimensions in centimetres, used only when a product dimension is missing.
  11. Debug Log: Records Easyway plugin and API activity in WooCommerce > Status > Logs.

Easyway cities are retrieved from the live Easyway API and cached in one local city table together with their region details. This plugin version has no test environment setting.

Shipping Zones

Add Easyway Courier to a Georgia shipping zone:

  1. Go to WooCommerce > Settings > Shipping > Shipping zones.
  2. Create or edit a zone whose region is Georgia.
  3. Add Easyway Courier as a shipping method.
  4. Edit the method instance to configure its checkout title and optional instance debug logging.

The method is available only when the destination country is Georgia, the store currency is GEL, and the plugin license is active. Do not add it to international zones.

Checkout Behavior

Georgian City Selection

When an available Easyway method handles the current Georgian shipping package, the billing and shipping city inputs become searchable Easyway city selectors. Enter at least two characters to search. Billing and shipping selections are stored independently and preserved when WooCommerce refreshes the checkout.

The selected value must resolve to an exact city in the downloaded Easyway directory. The plugin does not silently substitute another city. If Easyway does not handle the package, the normal WooCommerce city input remains in place.

Recipient Personal Number

The plugin adds Personal ID (required for Easyway) to both the billing and shipping address forms. The field is optional when another shipping method is selected, but Easyway checkout validation requires exactly 11 digits.

When Ship to a different address is enabled, the shipping personal number is used. Otherwise, the billing personal number is used. This version registers the receiver as a physical person.

Real-time Rate Calculation

For each WooCommerce shipping package, the plugin:

  1. Converts every product's configured weight to kilograms and multiplies it by quantity.
  2. Converts product dimensions to centimetres and substitutes the configured defaults for missing dimensions.
  3. Uses the greatest product length, greatest product width, and the sum of product heights multiplied by quantity as the parcel dimensions.
  4. Requests a live price using the sender city, destination city, package type, dimensions, and total weight.
  5. Stores the quoted shipment data on the WooCommerce shipping line so registration uses the same package that produced the accepted checkout rate.

If any shippable product has no valid positive weight, the plugin does not return an Easyway rate. One Easyway shipment is created for each Easyway shipping line, so separate WooCommerce shipping packages can be registered independently.

Easyway Courier-side COD

Shipment registration defaults to sender as the shipping-fee payer and cashless as the Easyway settlement method. These are implementation defaults rather than merchant settings.

This plugin version does not send a courier-side COD amount to Easyway, does not implement Easyway collection of the order total, and does not support a third-party payer.

Managing Shipments

Register a Shipment

Shipment registration is manual:

  1. Open WooCommerce > Orders and select the order.
  2. Find the Easyway shipping line in the order items section.
  3. Select Register with Easyway.

The plugin validates the quoted package details, sender and receiver information, Georgian phone numbers, and identification numbers before contacting Easyway. After Easyway confirms registration, the Easyway order ID and registration time are stored on that shipping line and an order note is added. The same shipping line cannot be registered twice.

Print a Waybill

After registration, select Print Waybill (PDF) beside the Easyway shipping line. The PDF returned by Easyway opens in the browser for printing or saving.

Cancel a Shipment

After registration, select Cancel Shipment and confirm the action. Cancellation is subject to Easyway's current shipment state and rules. The local Easyway order ID is removed only after the Easyway API confirms cancellation, and the cancelled ID is retained in the order-item history.

Shipment Tracking

Customers can view the Easyway order ID, latest status, dispatch time when available, and status history under My Account > Orders > View. Tracking is requested from Easyway and successful event results are cached for one hour.

Tracking is displayed only while the Plug and Pay plugin license is active. Deactivation does not remove shipment IDs already saved on orders.

Debugging

WooCommerce Shipping Debug Mode

When configuring or troubleshooting rates, enable WooCommerce shipping debug mode so cached rates do not hide settings changes:

  1. Go to WooCommerce > Settings > Shipping > Shipping options.
  2. Enable Debug mode.
  3. Save the changes.

Disable WooCommerce shipping debug mode again after testing because it can affect checkout performance.

Easyway Debug Log

Enable Debug Log in the Easyway global or shipping-zone instance settings, then review entries under WooCommerce > Status > Logs using the easyway_shipping_method source.

The API transport logger records request methods, endpoints, field names, response status codes, and response sizes without recording complete request payloads or response bodies. Rate calculation also records the small parsed price response. Credentials and shipment payloads containing personal information are not written to the transport log.

Actions & Filters

plugandpay_easyway_register_order_payload

Type: filter

When: Immediately before a WooCommerce shipping line is registered with Easyway.

ParameterTypeDescription
$payloadarrayComplete Easyway registration payload.
$orderWC_OrderWooCommerce order being registered.
$item_idintEasyway shipping-line item ID.

The $payload array contains:

KeyTypeDescription
tracking_codestringUnique WooCommerce order and shipping-line reference.
sender_namestringSender contact name.
sender_region_idintEasyway sender region ID.
sender_city_idintEasyway sender city ID.
sender_addressstringSender pickup address.
sender_legal_form_idintEasyway sender legal-form ID.
sender_tax_codestringSender's 9- or 11-digit identification number.
sender_phonestringNormalized nine-digit Georgian mobile number.
receiver_namestringRecipient name.
receiver_region_idintEasyway recipient region ID.
receiver_city_idintEasyway recipient city ID.
receiver_addressstringRecipient delivery address.
receiver_legal_form_idintRecipient legal-form ID; defaults to physical person (1).
receiver_tax_codestringRecipient's 11-digit personal number.
receiver_phonestringNormalized nine-digit Georgian mobile number.
package_idintEasyway package-tier ID captured with the quote.
payerstringShipping-fee payer: sender or receiver; defaults to sender.
pay_methodstringEasyway settlement method: cash, cashless, or terminal; defaults to cashless.
commentstringCustomer note, limited to 250 characters before filtering.
weightfloatQuoted parcel weight in kilograms.
quantityintNumber of entries in items.
itemsarrayParcel items; every entry contains a unique code string.
add_filter(
    'plugandpay_easyway_register_order_payload',
    function( $payload, $order, $item_id ) {
        $payload['comment'] = sprintf( 'WooCommerce order #%d', $order->get_id() );

        return $payload;
    },
    10,
    3
);

The payload defaults to payer: sender and pay_method: cashless. A filter callback can change the payer to receiver and the payment method to cash, cashless, or terminal.

The filtered payload is validated before it is sent. This version always removes cgd, third_name, third_phone, and third_tax_code; the payer must remain sender or receiver. These fields cannot be used to enable courier-side COD or a third-party payer.


WooCommerce Core Hooks

The WooCommerce method ID is easyway_shipping_method.

Use the standard woocommerce_package_rates filter to change the Easyway checkout cost or label. See General Shipping Hooks for examples based on cart total, destination city, or products.