Title: Qapla&#039; Pickup Points
Author: Qapla'
Published: <strong>maý 14, 2026</strong>
Last modified: maý 22, 2026

---

Search plugins

![](https://ps.w.org/qapla-pudo/assets/banner-772x250.png?rev=3544003)

![](https://ps.w.org/qapla-pudo/assets/icon.svg?rev=3532202)

# Qapla' Pickup Points

 By [Qapla’](https://profiles.wordpress.org/qaplawoocommerce/)

[Download](https://downloads.wordpress.org/plugin/qapla-pudo.2.03.zip)

 * [Details](https://tuk.wordpress.org/plugins/qapla-pudo/#description)
 * [Reviews](https://tuk.wordpress.org/plugins/qapla-pudo/#reviews)
 *  [Installation](https://tuk.wordpress.org/plugins/qapla-pudo/#installation)
 * [Development](https://tuk.wordpress.org/plugins/qapla-pudo/#developers)

 [Support](https://wordpress.org/support/plugin/qapla-pudo/)

## Description

**Pickup Points for WooCommerce – Offer Your Customers the Flexibility They Want**

Transform your checkout by adding a new shipping method: pickup points. With Qapla’
Pudo, your customers choose when and where to collect their orders, without waiting
at home for a courier.

#### A complete solution that grows with your business

This plugin integrates seamlessly into WooCommerce (via Qapla’ or GLS) and puts 
you on par with major market players. Your customers get a reliable and convenient
delivery option, while you reduce logistics costs and inventory buildup.

**What you can do:**

 * Enable pickup points at checkout with simple configuration
 * Customize shipping costs for this method (or make it free above a threshold)
 * Choose between interactive maps (Google Maps or OpenStreetMap) or list view: 
   desktop and mobile adapt automatically
 * Access thousands of pickup points across Europe – Qapla’ integrates 20+ couriers(
   UPS, DHL, GLS, FedEx, TNT, InPost, and many others)

**Compatible with:**

 * **Qapla’ Platform** – access a network of European couriers with extensive coverage
 * **GLS Platform** – use exclusively the GLS pickup network

The plugin is free to use. You’ll need an active contract with Qapla’ or GLS to 
use it.

### Third Party Services

This plugin connects to the following external services:

#### Qapla’ API

 * Service URL: https://api.qapla.it
 * Purpose: Retrieve pickup points (PUDO) near a shipping address, and retrieve 
   the list of available couriers (admin settings page only).
 * Terms of Service: https://www.qapla.it/terms-and-conditions/
 * Privacy Policy: https://www.qapla.io/privacy-policy
 * Data transmitted: Shipping address (postcode, city, country, street) is sent 
   on checkout to find nearby pickup points. The private API key is sent with each
   request for authentication. For the couriers list, only the private API key is
   transmitted (no user data).

#### GLS Italy API

 * Service URL: https://api.sellsend2.gls-italy.com
 * Purpose: Alternative API for GLS pickup points (when GLS platform is selected)
 * Terms of Service: https://www.gls-italy.com/it/chi-siamo/legal/condizioni-di-
   trasporto/
 * Privacy Policy: https://gls-group.eu/IT/it/privacy-policy
 * Data transmitted: Shipping address (postcode, city, street) to find nearby pickup
   points

#### OpenStreetMap Nominatim

 * Service URL: https://nominatim.openstreetmap.org
 * Purpose: Geocoding service to convert addresses to coordinates for map display
 * Terms of Service: https://operations.osmfoundation.org/policies/nominatim/
 * Privacy Policy: https://wiki.osmfoundation.org/wiki/Privacy_Policy
 * Data transmitted: Shipping address for geocoding

#### Google Maps API (Optional)

 * Service URL: https://maps.googleapis.com
 * Purpose: Map display when Google Maps view is configured by the user
 * Terms of Service: https://cloud.google.com/maps-platform/terms
 * Privacy Policy: https://policies.google.com/privacy
 * Data transmitted: User location data for map rendering
 * Note: Requires user to provide their own Google Maps API key

#### Qapla’ Tracking Service

 * Service URL: https://tracking.qapla.it, https://api.qapla.it and https://cdn.
   qapla.it
 * Purpose: Display shipment tracking widget and live status on the order detail
   page. Shipment event status icons are loaded from https://cdn.qapla.it as part
   of the tracking data returned by the Qapla’ API.
 * Terms of Service: https://www.qapla.it/terms-and-conditions/
 * Privacy Policy: https://www.qapla.io/privacy-policy
 * Data transmitted: Tracking number and API key are sent to retrieve tracking events.
   Status icon images are loaded directly from cdn.qapla.it as part of the service
   response.
 * Note: Only active when a tracking number has been assigned to the order and the
   Tracking View setting is not set to “Hide tracking”.

### Development

#### Building Assets

The plugin uses npm for building JavaScript assets. To build:

 1. Navigate to the plugin directory
 2. Run `npm install` to install dependencies
 3. Run `npm run build` to build production assets

#### Source Code

The source code for all compiled/minified files is included in this plugin package
under js/src/.

 * js/dist/qapla-pudo-block.js
    - Built from: js/src/qapla-pudo-block.js (included in this plugin)
    - Build command: npm install && npm run build
 * js/google-markerclusterer.min.js
    - Library: Google Maps MarkerClusterer v2.5.3
    - License: Apache 2.0
    - Original upstream source: https://github.com/googlemaps/js-markerclusterer
    - TypeScript source included in this plugin at: js/src/google-markerclusterer/
      (
      files: index.ts, markerclusterer.ts, cluster.ts, renderer.ts, marker-utils.
      ts, overlay-view-safe.ts, algorithms/)

#### Third Party Libraries

 * Leaflet.js (v1.9.4) – BSD 2-Clause License – https://leafletjs.com/

#### CARTO Tile Service (Optional)

 * Service URL: https://basemaps.cartocdn.com
 * Purpose: Alternative map tile styles (Voyager, Positron, Dark Matter) when OpenStreetMap
   view is configured
 * Terms of Service: https://carto.com/legal/
 * Privacy Policy: https://carto.com/privacy/
 * Data transmitted: Map tile coordinates for rendering
 * Note: Only used when user selects a CARTO tile style in plugin settings

### High-Performance Order Storage (HPOS)

This plugin is compatible with WooCommerce High-Performance Order Storage (HPOS).

To enable HPOS in WooCommerce:
 1. Go to WooCommerce  Settings  Advanced  Features
2. Enable “High-Performance Order Storage” 3. Click “Save changes”

The plugin uses the WooCommerce Order API (`$order->get_meta()`, `$order->update_meta_data()`)
for all order data operations, ensuring full compatibility with HPOS.

## Screenshots

 * [[
 * [[
 * [[
 * [[
 * [[
 * [[

## Blocks

This plugin provides 1 block.

 *   Qapla

## Installation

#### Part 1: Plugin Installation

**Method 1: From WordPress Plugin Directory (Recommended)**

 1. Log in to your WordPress admin
 2. Go to **Plugins  Add New Plugin**
 3. Search for “Qapla’ Pickup Points”
 4. Click **Install Now**, then **Activate**

**Method 2: Manual Upload**

 1. Download the .zip file from https://wordpress.org/plugins/qapla-pudo/
 2. Go to **Plugins  Add New Plugin  Upload Plugin**
 3. Upload the .zip file and click **Install Now**
 4. Click **Activate**

#### Part 2: Contract and API Credentials

The plugin requires an active contract with either **Qapla’** or **GLS** to retrieve
pickup points. Without valid API credentials, no pickup points will be shown.

**If you are a Qapla’ customer:**

 1. Log in to your Qapla’ account at https://app.qapla.it
 2. Go to the **Channel** section
 3. Copy your **Public API Key** and **Private API Key**
 4. Verify that the PUDO service is active — you should see a “Pickup Points” menu 
    item in the couriers configuration section
 5. If the service is not visible, contact your Qapla’ representative

**If you are a GLS customer (with Sell&Send):**

 1. Log in to your GLS Sell&Send account at https://sellsend2.gls-italy.com
 2. Go to the **Channel** section and locate your API key
 3. If the PUDO service is not listed as active, contact your GLS representative

**If you are a GLS customer (without Sell&Send):**

 1. Contact your GLS area representative
 2. Explain that you want to use the WordPress plugin “Qapla’ Pudo” for pickup points
 3. Request the GLS API key for PUDO integration
 4. Once received, save the key — you will need it in the next step

#### Part 3: Plugin Configuration

 1. In the WordPress admin left menu, click on **Qapla’ Pudo** (separate menu item,
    not under Plugins)
 2. Choose your platform tab: **Qapla’** or **GLS**
 3. Enter your API credentials in the appropriate fields and test the connection

**Map display — choose one:**

 * **Google Maps** – more recognizable by customers; requires a Google Maps API 
   key
    - Get your key at https://console.cloud.google.com  APIs & Services  Credentials
      Create API Key
    - Enable **Maps JavaScript API** for the key
    - Paste the key in the “Google Maps API Key” field in the plugin settings
 * **OpenStreetMap** – free, no API key required; choose from 4 tile styles (Voyager,
   Positron, Dark Matter, Standard)
 * **List view** – no map; shows pickup points sorted by distance; ideal for mobile

**Search parameters:**

 * _Default search radius_ (km) – recommended: 15–20 km
 * _Maximum pickup points to display_ – recommended: 8–12

**Tracking (optional):** choose between Link, Widget, or Both to show shipment tracking
on the customer’s order page.

 1. Click **Save Settings**

#### Part 4: Add Shipping Method to WooCommerce

 1. Go to **WooCommerce  Settings  Shipping**
 2. Select an existing shipping zone (e.g. “Italy”) or create a new one
 3. Click **Add Shipping Method** and select **Qapla’ Pudo**
 4. Configure the method:
 5.  * **Title** – the label customers see at checkout (e.g. “Pickup at partner location”)
     * **Cost** – leave empty for free, or enter an amount (e.g. 2.50)
     * **Free Shipping Threshold** – optional; order amount above which this method
       becomes free
 6. Click **Save**

#### Configuration Checklist

Before going live, verify:

 * Plugin installed and activated
 * Active contract with Qapla’ or GLS confirmed (PUDO service enabled)
 * API key entered and connection test passed
 * Map type or list view selected
 * Google Maps API key inserted (if using Google Maps)
 * Search radius and max PUDO configured
 * Tracking option selected
 * Settings saved
 * Shipping method “Qapla’ Pudo” added to the correct WooCommerce zone(s)
 * Title, cost, and free shipping threshold configured in WooCommerce
 * Checkout tested on desktop and mobile — pickup points appear and are selectable

#### Support

 * **Qapla’ issues**: support@qapla.it — https://www.qapla.it
 * **GLS issues**: contact your GLS area representative — https://www.gls-group.
   com
 * **Plugin issues**: https://wordpress.org/plugins/qapla-pudo/  Support tab

## FAQ

### What are the differences between Qapla’ and GLS?

Qapla’ and GLS are two different platforms with different coverage:

 * **Qapla’**: Gives you access to a network of 20+ European couriers (UPS, DHL,
   GLS, FedEx, TNT, InPost, BRT, Correos, SEUR, and many others). Ideal if you want
   to offer your customers maximum choice of pickup points. The network is extensive
   across Italy, Spain, and all of Europe.
 * **GLS**: Offers exclusively GLS pickup points. If you already have a contract
   with GLS for deliveries, this is the most straightforward choice. Coverage is
   good in Italy and Europe, but limited to the GLS network only.

In short: choose Qapla’ for maximum flexibility and a wide network; choose GLS for
a simple, dedicated solution.

### Do I need a contract with Qapla’ or GLS to use the plugin?

Yes, it is required. The plugin is free, but to work it needs API credentials provided
by an active contract with Qapla’ or GLS. Without these credentials, the plugin 
cannot connect to the servers to retrieve pickup points.

If you don’t have a contract yet, contact Qapla’ or GLS directly. If you already
have a contract with one of them (even for other logistics solutions), you can reuse
the same API credentials.

### How does the plugin appear in checkout and what information do customers see?

It depends on how you configure it. The plugin offers two display modes:

**Interactive map (Google Maps or OpenStreetMap):**

 * Customers see a map with pickup points marked
 * They can browse and select their preferred point
 * Each point shows opening hours, phone number, notes, courier name, and distance
 * Desktop: large readable map | Mobile: optimized view

**List view:**

 * A list of available pickup points sorted by distance
 * Same details: hours, phone, courier, distance
 * Lightweight and works great on mobile

In both modes, after selecting a pickup point the customer confirms the choice and
proceeds to payment. The selected point’s address and opening hours appear on the
thank you page and in the confirmation email.

### Which e-commerce stores are ideal for this plugin?

The plugin works best with stores selling small to medium-sized products, as pickup
points have size limitations.

**Ideal for:** clothing and accessories, books and media, cosmetics and beauty, 
consumer electronics (earbuds, chargers, etc.), small home goods, toys, food and
beverage.

**Less suitable for:** large furniture, bulky appliances, large sporting equipment,
goods requiring specialized delivery.

Note: size limits vary by courier and pickup point. You can enable this method for
all products — it will be up to your logistics workflow to handle any courier incompatibilities.

### I don’t see any pickup points in the checkout — what should I do?

Most likely causes:

 1. **API key is incorrect** – go to Qapla’ Pudo settings, verify the key, and run 
    the connection test
 2. **PUDO service not active in your contract** – contact your Qapla’ or GLS representative
    to verify
 3. **Search radius too small** – increase the default radius in the plugin settings(
    try 25 km)
 4. **Shipping method not in the right zone** – go to WooCommerce  Settings  Shipping
    and verify the method is assigned to the zone matching your customer’s address

### Google Maps is not loading — what should I do?

 1. Verify you have entered a Google Maps API key in the plugin settings
 2. In Google Cloud Console (https://console.cloud.google.com), confirm that **Maps
    JavaScript API** is enabled for your key
 3. If you have reached the free usage limit, add a payment method to your Google Cloud
    account

### The “Qapla’ Pudo” shipping method does not appear in checkout — what should I do?

 1. Verify you have added “Qapla’ Pudo” as a shipping method in WooCommerce  Settings
    Shipping for the correct zone
 2. Check that the customer’s address falls within the shipping zone where the method
    is configured
 3. Go to Plugins and confirm that “Qapla’ Pickup Points” is listed as Active

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Qapla' Pickup Points” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Qapla’ ](https://profiles.wordpress.org/qaplawoocommerce/)

[Translate “Qapla' Pickup Points” into your language.](https://translate.wordpress.org/projects/wp-plugins/qapla-pudo)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/qapla-pudo/), check
out the [SVN repository](https://plugins.svn.wordpress.org/qapla-pudo/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/qapla-pudo/) by 
[RSS](https://plugins.trac.wordpress.org/log/qapla-pudo/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.03

 * Fix: REST endpoint /pudos permission_callback now verifies WordPress REST nonce(
   X-WP-Nonce header) instead of using __return_true — protects private API key 
   from unauthenticated external access

#### 2.02

 * Readme: Source Code section now explicitly documents js/src/google-markerclusterer/
   TypeScript sources included in the plugin package

#### 2.01

 * Fix: Tracking widget — status icon for re-entering shipments now served locally(
   img/status/6-2.svg) instead of cdn.qapla.it
 * Fix: Plugin URL passed to tracking widget via qplpuTrackingData.pluginUrl

#### 2.00

 * Fix: REST endpoint /pudos uses __return_true permission_callback (public endpoint,
   no auth required)
 * Fix: Rate limiting moved from permission_callback to endpoint callback
 * Fix: Removed duplicate Licence header field and outdated @version docblock
 * Fix: new WC_Order() replaced with wc_get_order() for HPOS compliance
 * Fix: Residual get_post_meta() for tracking number replaced with $order->get_meta()
 * Fix: Block editor script handle mismatch (qplpu-block  qapla-pudo-block)
 * Fix: Hardcoded Italian string “Seleziona un punto di ritiro” replaced with translatable
   esc_attr_e()
 * Fix: i18n strings for select/selected/opening_hours/phone/notes now use __() 
   instead of locale conditionals
 * Fix: Shipping method field labels translated from Italian to English (Title, 
   Cost, Free Shipping Threshold)
 * Fix: Admin instruction string for GLS API keys translated to English
 * Readme: Added == Installation == section
 * Readme: Documented getCouriers API call with purpose and data transmitted
 * Readme: Documented cdn.qapla.it image loading in tracking service
 * Readme: Added missing changelog entries for versions 1.93–1.98

#### 1.99

 * Fix: PUDO data lost on order when WooCommerce refreshes checkout (updated_checkout
   listener)
 * Fix: HPOS compatibility — replaced update_post_meta/get_post_meta with WooCommerce
   Order API
 * Fix: Asset versioning — removed time() from wp_enqueue_style (WordPress.org guidelines)
 * Fix: Admin tile preview images now served locally (no external CARTO/OSM requests)
 * Fix: Updated Terms of Service and Privacy Policy URLs

#### 1.98

 * Fix: Settings link in plugin list was pointing to wrong admin page slug
 * Fix: Updated Gutenberg block text domain to match plugin slug

#### 1.97

 * Fix: Admin CSS/JS not loading due to wrong page hook slug
 * Fix: Removed duplicate map settings fields (now shared between Qapla and GLS 
   tabs)
 * Fix: Updated admin menu label

#### 1.96

 * Fix: Removed deprecated load_plugin_textdomain() call (WordPress 4.6+)

#### 1.95

 * Fix: Renamed plugin display name from “Qapla’ Pudo v2” to “Qapla’ Pudo”

#### 1.94

 * Fix: Renamed main plugin file to qapla-pudo.php to match WordPress.org slug convention

#### 1.93

 * Fix: Corrected text domain from qapla-pudo-v2 to qapla-pudo across all PHP files

#### 1.92

 * Fix geocoding for non-Italian addresses: Nominatim query now uses structured 
   fields and countrycodes filter
 * Fix distance filter zoom: reduced fitBounds padding for better map fill

#### 1.91

 * Fix zoom iniziale non adeguato al default_radius
 * Fix filtri distanza OpenStreetMap non funzionanti dopo le modifiche precedenti

#### 1.86

 * Patch sicurezza

#### 1.75

 * Unified list card layout: single and multi-carrier cards now share the same 3-
   zone structure (header, address, carrier rows)
 * Carrier logo moved from header to dedicated carrier row for clearer visual hierarchy
 * Selection highlight uses box-shadow instead of border-width change (no layout
   shift)
 * Removed obsolete CSS classes, updated tooltip positioning for unified header

#### 1.74

 * Fixed: Info tooltip now correctly reads businessHours array from API (was looking
   for non-existent flat fields)
 * Fixed: Removed debug overlay from tooltip, restored hasInfoData gate
 * Added: Info tooltip on PUDO points showing opening hours, phone, notes — hover/
   tap
 * Added: Smart hours grouping with support for multiple daily time slots
 * Changed: Font-size +2px on all popup and list elements for readability
 * Changed: Info icon 22px, context-specific tooltip positioning

#### 1.71

 * Fixed: InfoWindow styling now applied via JS `domready` event — reliably overrides
   Google Maps inline styles
 * Fixed: Close button compact circular overlay and uniform 12px padding enforced
   via DOM manipulation
 * Changed: CSS simplified to minimal fallback (close button rules removed, handled
   by JS)

#### 1.70

 * Improved: Google Maps InfoWindow close button now compact circular overlay (CSS-
   only, superseded by v1.71)
 * Improved: InfoWindow padding uniform 12px on all sides (removed extra right padding)

#### 1.69

 * Fixed: Select/Selected buttons now have uniform width (grid overlay prevents 
   size change on toggle)
 * Fixed: Preferred courier auto-select works correctly when multiple couriers share
   the same pickup point

#### 1.68

 * Selected PUDO Couriers: tag input with lazy-loaded autocomplete to filter map
   couriers (Qapla’ only)
 * Nearest Preferred Courier: auto-select prioritizes preferred courier at same-
   distance points
 * New REST endpoint for fetching couriers list from Qapla’ API
 * API error feedback displayed under couriers field

#### 1.66

 * Reordered admin settings, removed redundant shipping method name setting
 * Added shipping configuration hint with direct link

#### 1.65

 * Fixed OSM map container already initialized error
 * Fixed OSM marker clustering not working

#### 1.64

 * Admin settings redesign: tab-based layout with platform tabs, card-based sections
 * New OpenStreetMap Style selector with 4 tile styles and thumbnail preview cards
 * New Google Maps Style selector with 6 styles and SVG-based preview cards
 * Fixed OSM marker clustering race condition
 * New `css/admin.css` for admin UI

#### 1.54

 * Marker clustering for both Leaflet and Google Maps
 * Courier icon preloader with base64 caching
 * Fixed Google Maps courier logo broken images

#### 1.44

 * List view redesign: sort by distance, group by proximity, card-based UI
 * Multilingual support (IT/EN) for select buttons
 * Group popup redesign on map

#### 1.34

 * Redesigned popup layout for single and group markers
 * New Map Marker Style setting (pin type / courier logo)
 * Courier logo markers with selection highlight

#### 1.24

 * Fixed Google Maps InfoWindow stale confirmed state
 * Fixed single-marker popup missing confirmed button state

#### 1.23

 * Fixed multiple markers remaining orange after sequential confirmations
 * Fixed PUDO selection freeze on single-point markers

#### 1.22

 * Fixed confirmed pin persistence when browsing other markers
 * Fixed popup close restoring previous confirmed selection
 * Fixed group markers orange state on click

#### 1.21

 * Fixed PUDO selection data cleared on popup close
 * Fixed selected pin persistence after popup close

#### 1.20

 * Smart PUDO grouping by coordinate proximity (~50m) across all map views
 * Orange selected pin on OSM map (aligned with Google Maps)
 * PUDO grouping on Google Maps with numbered circle markers
 * Unified group popup styling with “Confirm this pickup point” buttons
 * Added CHANGELOG.md

#### 1.0.0

 * First release.

## Meta

 *  Version **2.03**
 *  Last updated **sagat ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.3 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/qapla-pudo/)
 * Tags
 * [Pickup Points](https://tuk.wordpress.org/plugins/tags/pickup-points/)[shipping](https://tuk.wordpress.org/plugins/tags/shipping/)
   [woocommerce](https://tuk.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://tuk.wordpress.org/plugins/qapla-pudo/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/qapla-pudo/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/qapla-pudo/reviews/)

## Contributors

 *   [ Qapla’ ](https://profiles.wordpress.org/qaplawoocommerce/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/qapla-pudo/)