With CCS - Nearest Pickup Points, ShipDock shows the courier's pickup points nearest to the customer's address as separate shipping options in checkout, each with the point's name, distance and address. The customer picks the pickup point by picking the shipping option, so no widget is needed. It works on any Shopify plan that has carrier-calculated shipping, not only Shopify Plus.

You need the Lite plan or higher.
Carrier-calculated shipping (CCS) must be active on your store and in ShipDock. See How to enable carrier-calculated shipping (CCS). Until it is active, CCS - Nearest Pickup Points is greyed out with the badge Store don't support CCS.
The courier is connected in ShipDock and its status is Active. Inactive couriers send no rates.
Each country you want to ship to is in one of your Shopify shipping zones.
In ShipDock, open Providers.
Open the courier, or click Create provider to add a new one.

Go to the Pickup points tab.

Under Choose integration, select CCS - Nearest Pickup Points.

The screenshot is from an older version. Today the tab shows three options: Manual rates mapping, CCS - Dynamic Rates and CCS - Nearest Pickup Points.
In the Shipping rates card, set Number of pickup points in Checkout: how many of the nearest points ShipDock offers. The default is 5, the minimum is 1. The number applies to every country of this courier.
Click Add country.

The screenshot shows the older card title Pickup points settings.
In the Select country dialog, choose the country and click Select.

Today the dialog splits the list into Supported countries and Unsupported countries. You can only pick countries from your Shopify shipping zones where the courier has pickup points. No more countries available means every country from your zones is already added.
The Edit country dialog opens. Keep or change the Shipping name (the option title) and the Shipping description (the second line). They are prefilled with:
Shipping name: {CarrierName} • {PickupPointName} • {PickupPointId}
Shipping description: {Distance} km - {PickupPointFullAddress}
Checkout preview fills in a sample pickup point so you can see the result. The placeholders you can use are listed under Available variables (see the table below).
Under Pricing rules, set the price (see "Pricing rules" below). All pickup points of this courier in the country get the same price.

Click Save in the dialog.
Repeat steps 6 to 10 for each country.
Save the courier settings.
{CarrierName}: Name of the courier or partner network the point belongs to.
{PickupPointName}: Name of the pickup point.
{PickupPointId}: ID of the pickup point.
{Distance}: Distance from the customer's address in km, with 2 decimals.
{PickupPointFullAddress}: Street, city, postcode.
{PickupPointStreet}: Street.
{PickupPointCity}: City.
{PickupPointZip}: Postcode.
{PickupPointCountryCode}: Country code, for example CZ.
Note: Each placeholder is filled in once per field. If you use the same placeholder twice in the name, the second one stays as plain text.
Choose the Strategy:
Based on order price: the order total in checkout.
Based on item weight: the total weight of the cart in kg, from the product weights in Shopify. Products without a weight add 0 kg.
Fill in each row: Price from: / Price to: (or Weight from: / Weight to: in kg) and Shipping cost:. Leave the "to" field empty for no upper limit. Use Add pricing rule for more rows.
Optionally fill in Free shipping:, the order total from which the options cost 0.
Rows are checked from top to bottom and the first matching row wins; both limits are included. If no row matches the cart, no nearest pickup points are shown for this courier. Free shipping: always compares the order total and only works when a row matches.
Important: Price limits and Free shipping: are in your store currency. Shipping cost: has its own currency selector, prefilled with the local currency of the country you added. ShipDock sends the price in that currency without converting it, so check the selector.
In Shopify admin, go to Settings → Shipping and delivery and open your shipping profile.
Check that every country where you want nearest pickup points has the rate Shipdock - Shipping rates (Rates provided by app).

If it is missing in a zone, click Add rate.
In Rate type, choose Use carrier or app to calculate rates, then choose Shipdock - Shipping rates (Rates provided by app) below it. Leave Automatically show new shipping services to customers when they become available ticked.

Click Done, save, and repeat for every zone.
ShipDock also adds Shipdock - Shipping rates to these zones by itself after you save the courier. The steps above are the check.
Note: If your store manages shipping in Markets (market-driven shipping), there are no zones. Add ShipDock as a shipping option of type Carrier or app calculated in every market instead. See How to enable carrier-calculated shipping (CCS).
Open your store, add a product to the cart and go to checkout. Enter a full shipping address (street, postcode, city) in one of the countries you set up. The nearest pickup points appear as shipping options.

Note: Shopify's shipping rate preview in the admin shows no nearest pickup points. Always test with a real checkout and a real address.
ShipDock uses the shipping address the customer entered in checkout. If Shopify doesn't send the location, ShipDock looks the address up on a map.
It offers the courier's points in the customer's country, up to 30 km away (straight-line distance), up to the number you set in Number of pickup points in Checkout. ShipDock sends them ordered by distance, nearest first.
Points the courier marks as unavailable are left out, and so are points hidden by your Exclusion settings on the Pickup points tab.
If the address can't be found, or there is no point within 30 km, no nearest pickup point options appear for this courier. Other ShipDock rates are not affected.
If several couriers use this integration, each one adds its own nearest points.
The chosen pickup point is saved with the order, and the shipping label is created for it.
The customer can't change the pickup point after ordering, because the point is part of the shipping option they chose and paid for. You can still change it on the order in ShipDock. See How to let customers change their pickup point after ordering.
All pickup points of a courier in one country have the same price. You can't price single points.
No pickup point options, but other rates show: the address is incomplete or can't be found, there is no point within 30 km, all nearby points are excluded, or no pricing row matches the cart.
No ShipDock rates at all: check that CCS is active in Settings → General, that Shipdock - Shipping rates is in the customer's shipping zone, that the courier is Active, and that the country is added in the Shipping rates card.
Too many or too few options: change Number of pickup points in Checkout.