=== CatCode Shipping Labels with Shippo and EasyPost for WooCommerce ===
Contributors: catcodestudio
Tags: shipping labels, shipping rates, usps, tracking, woocommerce
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Live carrier rates at checkout and labels bought from the order screen, through your own Shippo or EasyPost account. You always see the price first.

== Description ==

Connect your own Shippo or EasyPost account and your store gets the carriers of that account: USPS, UPS, FedEx, DHL and others, with no separate carrier contract for the ones the service provides.

Shippo and EasyPost are third-party products. This is an independent integration, not affiliated with or endorsed by Shippo or EasyPost.

= At checkout =

* Live rates as a normal WooCommerce shipping method, added to any shipping zone.
* Works on the classic checkout and on the Cart and Checkout blocks.
* Show only the services you want, limit how many, add a handling fee, and show the estimated delivery time.
* A backup rate, if you set one, keeps the checkout open when the service does not answer.
* Answers are cached for ten minutes, so the service is not asked again on every checkout refresh.

= On the order screen =

* The parcel size and weight come filled in from the products and your boxes, and you can change them.
* Press Get rates and every rate appears with its price. The rate the customer chose is marked.
* **The price is always on the buy button.** The plugin keeps the quote on the server and refuses to buy if the price differs from what you saw.
* Print the label as PDF, PNG or ZPL.
* Customs forms are filled in from the order for international parcels, with the HS code and country of origin from each product.
* A second label on the same order needs a tick, so nobody buys one twice by accident.

= When something goes wrong =

* If the service gives no clear answer during a purchase, the plugin does not guess. The attempt is marked as not confirmed, it checks with the service, and it blocks another purchase on that order until it knows what happened.
* Failures read as plain sentences: a wrong key, an empty balance, a refused address.
* Every purchase attempt stays in the list with its cost, including the ones that failed.

= Refunds and tracking =

* Refund an unused label from the order. Carriers decide refunds and can take days, so the plugin keeps checking and updates the order when the answer comes.
* A label the carrier has already scanned is not offered for refund.
* If an order is cancelled while it has an unused label, a note on the order says so.
* The tracking number goes to order e-mails and the customer's order page. Open labels are read every few hours.

// @pro-begin
= Pro =

Sold on [catcode.com.ua](https://catcode.com.ua/modules/shipping-labels-shippo-easypost-woocommerce/) with a 7-day trial:

* **Both services at once**: rates from Shippo and EasyPost side by side, the cheapest of each service goes to checkout.
* **Return labels** from the order screen, with a link the customer opens from the order page or by e-mail.
* **Live tracking**: status changes reach the order the moment the carrier scans the parcel.
* **Automation**: delivered orders complete by themselves, and customers get an e-mail when the parcel moves.
* **Rate rules per zone**: a percentage on top of the carrier price and free shipping above an order total.

// @pro-end
== Installation ==

1. Install and activate the plugin. WooCommerce must be active.
2. Open WooCommerce > Shipping Labels, choose a service, paste the API key and press Check key. A test key gives sample labels and costs nothing.
3. Check the sender address and fill in your boxes.
4. Open WooCommerce > Settings > Shipping, choose a zone and add "Live carrier rates (Shippo / EasyPost)".
5. Open an order and press Get rates.

== Frequently Asked Questions ==

= Do I pay for labels through this plugin? =

No. Labels are charged by Shippo or EasyPost to your own account at the price shown. The plugin takes nothing.

= Can I test without spending money? =

Yes. Put a Shippo test token or an EasyPost test key in the settings. Labels are marked as test and cannot be used for shipping.

= Which carriers will I see? =

The ones connected to your Shippo or EasyPost account. Some carriers need your own account with them, and some do not offer test rates.

= Why is a rate missing at checkout? =

The service gave no rate for that address or parcel, a filter in the shipping method hid it, or it came in another currency and no exchange rate is set. Open the order screen to see the messages from the service.

= Does it work without product weights? =

Yes. Set a default weight and a default parcel size in the settings. Rates are only as good as those numbers.

= Why is the label cost different from what the customer paid? =

The customer pays the checkout rate plus your rules. The label cost is what the service charges you. Both are shown in the order.

= Can a refund be guaranteed? =

No. The carrier decides, and a scanned label counts as used. Time limits differ by carrier and service.

== External services ==

The plugin connects to the service you choose, using your API key. Nothing is sent until a key is saved.

**Shippo** (https://goshippo.com), used to get rates, buy labels, request refunds and read tracking. When a customer sees rates at checkout, the plugin sends the destination address they entered, the store address, the parcel size and weight, and for international parcels the item names, values, HS codes and origin. When you buy a label, the order's recipient name, address, phone and e-mail are sent too. Terms: https://privacy.goshippo.com/policies?name=terms-of-use Privacy: https://privacy.goshippo.com/policies?name=privacy-notice

**EasyPost** (https://www.easypost.com), used for the same purposes with the same data. Terms: https://legal.easypost.com/ Privacy: https://legal.easypost.com/#privacy-policy

// @pro-begin
**CatCode** (https://catcode.com.ua), used to check the license key and deliver updates of the Pro version. The key and the site address are sent. Terms: https://catcode.com.ua/terms/ Privacy: https://catcode.com.ua/privacy/

// @pro-end
== Screenshots ==

1. Rates with prices on the order screen, and the buy button with the price on it.
2. Labels of an order with status, tracking and refund.
3. Live rates at checkout.
4. Settings.

== Changelog ==

= 1.0.0 =
* First release: rates at checkout (classic and blocks), labels from the order, customs forms, refunds of unused labels, tracking for customers, through Shippo or EasyPost.
// @pro-begin
* Pro: both services at once, return labels, live tracking, automation, rate rules.
* Updates of the Pro version arrive in the usual WordPress updates screen.
// @pro-end
