dpdconnect / magento2-shipping
DPD Connect - Magento2 Shipping
Package info
github.com/dpdconnect/magento2-shipping
Type:magento2-module
pkg:composer/dpdconnect/magento2-shipping
Requires
- php: >=8.1
- dpdconnect/php-sdk: ^1.1.14
- magento/framework: >=103.0.6
Requires (Dev)
- magento/marketplace-eqp: ^2.0
- overtrue/phplint: ^1.1
- dev-master
- 1.5.0
- 1.4.0
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9-beta
- 1.0.8-beta
- 1.0.7-beta
- 1.0.6-beta
- 1.0.5-beta
- dev-feature/php-compatibility-and-timeout-fixes
- dev-version/1.4.1
- dev-refactor/graphql
This package is auto-updated.
Last update: 2026-03-30 09:00:47 UTC
README
DPD Connect for Magento 2
Integrate DPD parcel shipping directly into your Magento 2 store. Generate labels, offer Parcelshop pickup at checkout, and monitor async batches — all from the Magento admin.
Features · Requirements · Installation · Configuration · Development]
📦 Features
🏷️ Label Generation
| Feature | Description |
|---|---|
| Single label | Generate from any order page via the order actions menu |
| Bulk labels | Select multiple orders from the sales grid and process in one action |
| Return labels | Generated and stored separately from shipping labels |
| Fresh & Freeze | Temperature-controlled shipments with per-parcel expiration dates |
| Multi-parcel | Split a single order across multiple parcels via the packaging popup |
🗺️ Delivery Options
| Feature | Description |
|---|---|
| DPD Classic | Standard delivery via the unified DPD carrier with customer product selection |
| DPD Parcelshop | Embedded Google Maps picker at checkout — customer chooses a pickup point |
| DPD Predict | Home delivery with email notification for B2C and B2B MSG products |
| Saturday delivery | Method automatically hidden outside a configurable day + time window |
| Express (E10 / E12) | Guaranteed delivery before 10:00 or 12:00 |
| Guarantee 18 | Guaranteed delivery before 18:00 |
| Age check | Flag products to require recipient age verification at delivery |
⚡ Processing & Downloads
| Feature | Description |
|---|---|
| Synchronous | Small batches generated and downloaded immediately as PDF |
| Asynchronous | Larger batches queued at DPD; labels delivered via webhook callback |
| A4 and A6 | Choose the format that matches your printer |
| ZIP or merged PDF | Download bulk labels as a ZIP archive or a single merged PDF |
| Shipping list | Printable pick list for warehouse staff |
🔧 Admin & Integration
| Feature | Description |
|---|---|
| Batch monitor | Sales → DPD → Batches grid shows status of every async job |
| Label archive | Sales → DPD → Labels grid with download and mass-download actions |
| Table rates | Per-carrier custom rate tables (by weight, price, or qty) |
| Customs support | HS code, export description, and consignee data sent for international shipments |
| Multi-store | All credentials and settings configurable per website / store view |
| REST API | dpd_parcelshop_id exposed on Magento Order API via extension attributes |
✅ Requirements
| Dependency | Version |
|---|---|
| PHP | ≥ 7.2 |
| Magento Framework | ≥ 103.0.6 (Magento 2.3+) |
dpdconnect/php-sdk |
^1.1 |
| Google Maps API key | Required for Parcelshop pickup |
🚀 Installation
composer require dpdconnect/magento2-shipping
After installation run the standard Magento upgrade sequence:
php bin/magento module:enable DpdConnect_Shipping php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy -f php bin/magento cache:flush
Upgrade
composer update dpdconnect/magento2-shipping php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy -f php bin/magento cache:flush
⚙️ Configuration
Navigate to Stores → Configuration → Sales → DPD Parcelservice.
Account Settings
| Setting | Description |
|---|---|
| Username | Your DPD Connect API username |
| Password | Your DPD Connect API password (stored encrypted) |
| Depot | Your DPD depot number |
| Print format | Label paper size — A4 or A6 |
| Test Connection | Button to verify credentials against the DPD API |
Carrier Settings
Navigate to Stores → Configuration → Sales → Shipping Methods.
Each DPD carrier (DPD, DPD Pickup, DPD Predict, DPD Saturday, etc.) has its own section with price, rate type, and allowed countries.
Advanced
| Setting | Description |
|---|---|
| Include return label | Generate a return label together with every shipping label |
| Email return label | Email the return label PDF to the customer |
| Picqer mode | Store parcelshop name in the company field instead of the customer name |
| Save labels as file | Write label PDFs to disk (default: stored in the database) |
| Age check | Enable per-product age verification at delivery |
| Async threshold | Number of orders above which label generation switches to async mode |
🛠️ Development
Module structure
DpdConnect_Shipping/
├── Api/ # Interfaces (ApiCallbackInterface)
├── Block/ # Admin and frontend blocks
├── Config/Source/ # Dropdown source models
├── Controller/ # Admin + frontend controllers
├── etc/ # XML configuration (di, events, webapi, system)
├── Helper/ # DPDClient, DpdSettings, Data, OrderConvertService
├── Model/ # Carriers, ResourceModels, CheckoutConfigProvider
├── Observer/ # Order, shipment and config event observers
├── Plugin/ # Order API extension attribute plugins
├── Services/ # AuthenticationService, BatchManager, ShipmentManager
├── Setup/ # UpgradeSchema, UpgradeData
├── Ui/ # UI component providers
├── ViewModel/ # CheckShipment view model
├── i18n/ # Translations (EN, NL, DE, ES, FR, IT, PL)
└── view/ # Layout XML, templates, JS, CSS
Useful commands
# Flush cache during development php bin/magento cache:flush # Recompile dependency injection php bin/magento setup:di:compile # Reindex php bin/magento indexer:reindex # Run PHP linter vendor/bin/phplint .
Webhook endpoint
DPD calls back on this endpoint after async label generation:
POST /rest/V1/dpd-shipping/callback
No Magento authentication is required (<resource ref="anonymous"/>). The callback payload contains the job ID, parcel numbers, label data (fetched separately), and error information.
❓ FAQ
I get a "Bad credentials" error when printing a label.
If you use
env.phpto specify credentials, usebin/magento config:sensitive:setto set the password — it must be stored encrypted.bin/magento config:sensitive:set dpdshipping/account_settings/password "yourpassword"
DPD Fresh / Freeze orders fail when creating a shipment.
Fresh and Freeze products can only be shipped through the DPD order overview or the packages screen. Standard Magento shipment creation is blocked by design to ensure expiration dates and product descriptions are filled in correctly.
Labels are not appearing after async batch processing.
Check Sales → DPD → Batches for the job status. If jobs show
failed, verify the webhook URL is publicly accessible:https://your-store.com/rest/default/V1/dpd-shipping/callback
Saturday delivery is not showing at checkout.
The Saturday carrier has a configurable display window. Go to Stores → Configuration → Sales → Shipping Methods → DPD Saturday and check the "Shown from" and "Shown till" day/time settings.