WooCommerce Georgian Post Courier Shipping Method
Documentation for the Plug and Pay WooCommerce Georgian Post Courier Shipping Method plugin.
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
- Currency: Store must use GEL (Georgian Lari).
- Weights: All products must have weight units and values assigned to calculate shipping rates correctly.
- Shipping Destination: Supports shipping within Georgia only.
Technical Specification & Feature Support
| Feature | Supported |
|---|---|
| HPOS | ✅ |
| Shipping Zones | ✅ |
| Real-time Rates | ✅ |
| Shipment Registration | Manual |
| Label Printing | ✅ |
| Return Label Printing | ✅ |
| Shipment Tracking | ✅ |
| Debug Mode | ✅ |
Setup
Global Settings
Go to WooCommerce > Settings > Shipping > Georgian Post Courier to configure the global API settings:
- API username: Provided by Georgian Post.
- API password: Your Georgian Post API password.
- Barcode type: Select the preferred barcode format for labels.
- Sender city: Select the city from which you will be sending packages.
- Sender address: Your physical warehouse or store address.
- Debug Log: Enable this to log API events for troubleshooting.
Shipping Zones
After configuring the global settings, add the Georgian Post Courier method to your desired shipping zones under WooCommerce > Settings > Shipping > Shipping zones.
Using Both Georgian Post Plugins
Courier and Georgian Post International can be active together. No compatibility setting is required, but each shipping destination must be assigned to only one of the two methods through WooCommerce shipping zones.
| Active and API-key activated plugins | Checkout city behavior |
|---|---|
| Courier only | Courier supplies its Georgian city search. Other countries keep WooCommerce's normal city input. |
| International only | The International plugin supplies city lists for every supported destination, including Georgia. |
| Both, correctly zoned | Courier supplies Georgian cities and IDs for GE; the International plugin supplies cities and IDs for every other configured country. |
Standalone Zone Requirements
“Standalone” means that only one of the two Georgian Post plugins is active and API-key activated. It does not remove WooCommerce's shipping-zone requirement.
- International only: Add Georgian Post to every zone where it should provide rates. This can include a Georgia zone if you intend to use the International service domestically.
- Courier only: Add Georgian Post Courier to a Georgia-only zone. Courier cannot provide international rates and requires the store currency to be GEL.
If an activated plugin is not added to the shipping zone that matches the customer's destination, WooCommerce will not show its rate. The plugin may still change the checkout city field, but that alone does not make the shipping method available.
Recommended Shipping-Zone Setup
Configure the zones under WooCommerce > Settings > Shipping > Shipping zones as follows:
| Zone | Region | Shipping method |
|---|---|---|
| Georgia | Georgia only | Georgian Post Courier only |
| International | The countries you ship to, or Rest of the world after the Georgia zone | Georgian Post only |
Do not add both Georgian Post methods to the same zone. The Courier and International APIs provide separate city lists, and their city IDs are provider-specific. Even when two cities have the same name, their IDs must not be assumed to match. If both methods are available for the same destination, checkout can collect an ID for one provider and later submit it to the other provider.
With the recommended setup:
- Georgia (
GE) uses the Courier city search and Courier rates. - All other configured countries use the International city list and International rates.
- Billing and shipping countries are handled independently. For example, a Georgian billing address and an international shipping address use the appropriate city source for each field.
- Changing a country clears the previous provider's city ID. The customer must select a city valid for the newly selected country.
Courier requires the store currency to be GEL. For a non-GEL store, do not enable Courier in a shipping zone; use the International plugin for the required destinations instead.
If either plugin or its API-key activation is disabled, the remaining plugin returns to its standalone checkout behavior.
Checkout Behavior
Real-time Rate Calculation
The plugin automatically calculates shipping weights and fetches real-time rates from the Georgian Post API during checkout. It ensures accurate pricing based on the destination and package weight.
Since shipping rates depend on weight, every product in the cart must have a weight set in its WooCommerce settings. If a product is missing weight data, the shipping method will not be available.
Georgian City Selection
For Georgian billing and shipping addresses, the plugin supplies the Georgian Post Courier city search used to resolve the destination city ID required for rate calculation. When Georgian Post International is also active, the shipping-zone configuration described above determines which plugin supplies the city data for each destination.
Managing Shipments
Register a Shipment
Store administrators can manually register shipments directly from the WooCommerce order details page. Once a shipping item is associated with the Georgian Post Courier method, a Register button appears in the order items section.
Print Labels
After successful registration, you can generate and print:
- Shipping Labels: Standard labels for your packages.
- Return Labels: Labels to facilitate customer returns.
Shipment Tracking
Customers can view the real-time status of their shipment directly on the "View Order" page. The plugin fetches the latest routing information and status updates from Georgian Post, displaying a detailed history of the package's journey.
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.
Georgian Post Courier Debug Log
Enable Debug Log in the Georgian Post Courier global or shipping-zone instance settings, then review entries under WooCommerce > Status > Logs using the gpost_courier_shipping_method source.
Actions & Filters
plugandpay_gpost_courier_register_order_sender
Type: filter
When: Before registering an order with Georgian Post Courier — controls the sender details sent to the API.
| Parameter | Type | Description |
|---|---|---|
$sender | array | Associative array of sender details. |
$item_id | int | WooCommerce shipping item ID. |
The $sender array supports:
| Key | Type | Description |
|---|---|---|
addressNote | string | Sender pickup address captured with the checkout quote. |
CityID | int | Georgian Post sender-city ID captured with the quote. |
CountryId | int | Optional Georgian Post country ID; defaults to Georgia (63) when omitted. |
// Change sender details on order registration.
add_filter(
'plugandpay_gpost_courier_register_order_sender',
function( $sender, $item_id ) {
$sender['addressNote'] = '1 Warehouse Street, Tbilisi';
$sender['CityID'] = 123; // Use a valid Georgian Post city ID.
return $sender;
},
10,
2
);
Changing the sender city or address does not recalculate the amount already shown in WooCommerce. Georgian Post can charge a different amount for the modified route.
plugandpay_gpost_courier_register_order_receiver
Type: filter
When: Before registering an order with Georgian Post Courier — controls receiver details sent to the API.
| Parameter | Type | Description |
|---|---|---|
$receiver | array | Receiver details. |
$order | WC_Order | WooCommerce order being registered. |
The $receiver array contains:
| Key | Type | Description |
|---|---|---|
addressNote | string | Shipping address, postcode, and address note. |
cityID | int | Georgian Post recipient-city ID. |
firstName | string | Recipient first name. |
lastName | string | Recipient last name. |
phone | string | Recipient phone number. |
add_filter(
'plugandpay_gpost_courier_register_order_receiver',
function( $receiver, $order ) {
$receiver['addressNote'] .= ' — Call before delivery';
return $receiver;
},
10,
2
);
Changing the receiver city or address does not recalculate the amount already shown in WooCommerce.
plugandpay_gpost_courier_label_before and plugandpay_gpost_courier_label_after
Type: actions
When: Immediately before or after the generated admin shipping-label contents.
Neither action receives parameters. Use them to add static merchant information or label markup:
add_action(
'plugandpay_gpost_courier_label_after',
function() {
echo '<p>' . esc_html__( 'Handle with care', 'your-text-domain' ) . '</p>';
}
);
WooCommerce Core Hooks
The WooCommerce method ID is gpost_courier_shipping_method.
Use the standard woocommerce_package_rates filter to change the Georgian Post Courier checkout cost or label. See General Shipping Hooks for examples based on cart total, destination city, or products.