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
| Feature | Supported |
|---|---|
| HPOS | ✅ |
| Shipping Zones | ✅ |
| Real-time Rates | ✅ |
| Georgian City Search | ✅ |
| Shipment Registration | Manual |
| 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:
- API User: The API user supplied by Easyway.
- API Key: The API key supplied with the Easyway merchant account.
- Sender City / Origin: The warehouse or pickup city. Easyway cities are downloaded after valid credentials are configured.
- Sender Address: The street address where the courier collects shipments.
- Sender Contact Name: The person responsible for pickup.
- Sender Phone Number: A nine-digit Georgian mobile number. A
+995country prefix is accepted and normalized during registration. - Sender Tax Code / Identification: A 9-digit company tax ID or an 11-digit personal number.
- Sender Legal Form: The sender's legal form from the Easyway directory.
- Default Package Tier: The Easyway package type used for price calculation and registration. The default is Standard.
- Default Length, Width, and Height: Fallback parcel dimensions in centimetres, used only when a product dimension is missing.
- 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:
- Go to WooCommerce > Settings > Shipping > Shipping zones.
- Create or edit a zone whose region is Georgia.
- Add Easyway Courier as a shipping method.
- 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:
- Converts every product's configured weight to kilograms and multiplies it by quantity.
- Converts product dimensions to centimetres and substitutes the configured defaults for missing dimensions.
- Uses the greatest product length, greatest product width, and the sum of product heights multiplied by quantity as the parcel dimensions.
- Requests a live price using the sender city, destination city, package type, dimensions, and total weight.
- 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:
- Open WooCommerce > Orders and select the order.
- Find the Easyway shipping line in the order items section.
- 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:
- Go to WooCommerce > Settings > Shipping > Shipping options.
- Enable Debug mode.
- 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.
| Parameter | Type | Description |
|---|---|---|
$payload | array | Complete Easyway registration payload. |
$order | WC_Order | WooCommerce order being registered. |
$item_id | int | Easyway shipping-line item ID. |
The $payload array contains:
| Key | Type | Description |
|---|---|---|
tracking_code | string | Unique WooCommerce order and shipping-line reference. |
sender_name | string | Sender contact name. |
sender_region_id | int | Easyway sender region ID. |
sender_city_id | int | Easyway sender city ID. |
sender_address | string | Sender pickup address. |
sender_legal_form_id | int | Easyway sender legal-form ID. |
sender_tax_code | string | Sender's 9- or 11-digit identification number. |
sender_phone | string | Normalized nine-digit Georgian mobile number. |
receiver_name | string | Recipient name. |
receiver_region_id | int | Easyway recipient region ID. |
receiver_city_id | int | Easyway recipient city ID. |
receiver_address | string | Recipient delivery address. |
receiver_legal_form_id | int | Recipient legal-form ID; defaults to physical person (1). |
receiver_tax_code | string | Recipient's 11-digit personal number. |
receiver_phone | string | Normalized nine-digit Georgian mobile number. |
package_id | int | Easyway package-tier ID captured with the quote. |
payer | string | Shipping-fee payer: sender or receiver; defaults to sender. |
pay_method | string | Easyway settlement method: cash, cashless, or terminal; defaults to cashless. |
comment | string | Customer note, limited to 250 characters before filtering. |
weight | float | Quoted parcel weight in kilograms. |
quantity | int | Number of entries in items. |
items | array | Parcel 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.