PHPackages                             myparcelnl/pdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. myparcelnl/pdk

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

myparcelnl/pdk
==============

MyParcel Plugin Development Kit

4.0.2(1w ago)014.5k↑55.3%1[1 issues](https://github.com/myparcelnl/pdk/issues)[5 PRs](https://github.com/myparcelnl/pdk/pulls)MITPHPPHP &gt;=7.4.0CI failing

Since Mar 25Pushed 2w ago1 watchersCompare

[ Source](https://github.com/myparcelnl/pdk)[ Packagist](https://packagist.org/packages/myparcelnl/pdk)[ Docs](https://myparcel.nl)[ RSS](/packages/myparcelnl-pdk/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (99)Versions (330)Used By (0)

MyParcel Plugin Development Kit
===============================

[](#myparcel-plugin-development-kit)

[![Latest version](https://camo.githubusercontent.com/1aa4e4507ddd388ff4fafde45d0a7dd955812dd4e07c4c08d94579f74f712d1e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6d7970617263656c6e6c2f70646b)](https://github.com/myparcelnl/pdk/releases/latest)[![Packagist Downloads](https://camo.githubusercontent.com/6e9ce9456a2657627bc05cb748360446eef58e62ba17935a17c625a83f96e2f4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f6d7970617263656c6e6c2f70646b)](https://packagist.org/packages/myparcelnl/pdk)[![Code coverage](https://camo.githubusercontent.com/964f3ead0cc87c32ba8704ddcb997c2ca95ee75dd950e1d7427cf0a1378e9b82/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6d7970617263656c6e6c2f70646b)](https://codecov.io/gh/myparcelnl/pdk)[![PHPStan](https://camo.githubusercontent.com/91cf2ea89cdec7740d84c8a35d956853ad38bb2e070383ef5ebc3490bdeea7b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f79616d6c3f75726c3d68747470732533412532462532467261772e67697468756275736572636f6e74656e742e636f6d2532466d7970617263656c6e6c25324670646b2532466d61696e2532467068707374616e2e6e656f6e2e646973742671756572793d2532342e706172616d65746572732e6c6576656c266c6162656c3d5048505374616e2532306c6576656c26636f6c6f723d627269676874677265656e)](https://camo.githubusercontent.com/91cf2ea89cdec7740d84c8a35d956853ad38bb2e070383ef5ebc3490bdeea7b7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64796e616d69632f79616d6c3f75726c3d68747470732533412532462532467261772e67697468756275736572636f6e74656e742e636f6d2532466d7970617263656c6e6c25324670646b2532466d61696e2532467068707374616e2e6e656f6e2e646973742671756572793d2532342e706172616d65746572732e6c6576656c266c6162656c3d5048505374616e2532306c6576656c26636f6c6f723d627269676874677265656e)[![License](https://camo.githubusercontent.com/671b9efa59d9863a7c6adb576877338a7bb4d01cb1428d685cbe9253ed5216d1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d7970617263656c6e6c2f70646b)](https://camo.githubusercontent.com/671b9efa59d9863a7c6adb576877338a7bb4d01cb1428d685cbe9253ed5216d1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d7970617263656c6e6c2f70646b)[![Chat with us](https://camo.githubusercontent.com/2e03356b0e56baf2420b30da2978e160e0ca7291f57658a1534b2b5b1e415fbb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536c61636b2d436861742532307769746825323075732d77686974653f6c6f676f3d736c61636b266c6162656c436f6c6f723d346131353462)](https://join.slack.com/t/myparcel-dev/shared_invite/enQtNDkyNTg3NzA1MjM4LTM0Y2IzNmZlY2NkOWFlNTIyODY5YjFmNGQyYzZjYmQzMzliNDBjYzBkOGMwYzA0ZDYzNmM1NzAzNDY1ZjEzOTM)

The MyParcel PDK (Plugin Development Kit) is meant for developing entire plugins on PHP E-Commerce platforms. If you're just looking to connect to our API without creating an entire plugin, you should check out our php [SDK](https://github.com/myparcelnl/sdk).

Requirements
------------

[](#requirements)

- PHP 7.4 – 8.5
- Composer

Documentation
-------------

[](#documentation)

For examples, guides and in-depth information, visit our [Plugin Development Kit (PDK) documentation](https://developer.myparcel.nl/documentation/52.pdk/).

Support
-------

[](#support)

Create an issue or contact us via our [Developer Portal contact page](https://developer.myparcel.nl/contact.html).

Contributing
------------

[](#contributing)

View our [contribution guidelines](https://github.com/myparcelnl/developer/blob/main/DEVELOPERS.md) for information on how to contribute to the PDK.

### Prerequisites

[](#prerequisites)

- Node 18
- Yarn
- Docker

### Installation

[](#installation)

Create `.env`:

```
cp .env.template .env
```

Install Yarn dependencies:

```
yarn
```

Install Composer dependencies:

```
docker compose up php
```

### Running tests

[](#running-tests)

Run all tests:

```
docker compose run php composer test
```

#### Testing on a specific PHP version

[](#testing-on-a-specific-php-version)

The default PHP version is 7.4. To test on a different version, change `PHP_VERSION` in `.env` and rebuild:

```
docker compose build
docker compose run php composer test
```

### Adding a shipment option

[](#adding-a-shipment-option)

Shipment options are managed through the `OrderOptionDefinitionInterface` system. Each option is a single Definition class that declares all its keys (shipment, capabilities, carrier settings, product settings, allow, price). All models, views, and services build their attributes and form elements dynamically from these definitions.

To add a new option:

1. **Create a Definition class** in `src/App/Options/Definition/` extending `AbstractOrderOptionDefinition`. Only two methods are required:
    - `getShipmentOptionsKey()` — the PDK-internal key, derived from `Str::camel(RefShipmentShipmentOptions::attributeMap()['sdk_key'])`
    - `getCapabilitiesOptionsKey()` — the V2 capabilities key, from `RefCapabilitiesContractDefinitionsResponseOptionsOptionsV2::attributeMap()['capabilities_key']`
2. **Register it** in the `orderOptionDefinitions` array in `config/pdk-business-logic.php`.
3. **Optionally**, add a deprecated constant to `ShipmentOptions` if platform integrations reference the key directly.

Everything else (carrier settings, product settings, allow/price toggles, validation, frontend form fields, API export/import) is derived automatically. Run `yarn test:unit` to verify the consistency tests pass.

If the option is not yet in the SDK types, update the SDK or regenerate the OpenAPI types first.

> **Using Claude Code?** Run `/add-shipment-option` for a guided step-by-step walkthrough that asks the right questions and generates the code.

### Linting

[](#linting)

We use Prettier to format .json, .yml, .md and .html files.

Make sure Prettier is enabled in your IDE and runs on the following files:

```
{**/*,*}.{md,html,yml,json}

```

Set up Git hooks to run Prettier on each commit, correcting any formatting issues.

```
yarn prepare
```

You can also run Prettier manually:

```
# Check formatting issues
yarn lint

# Fix formatting issues
yarn lint:fix
```

###  Health Score

55

—

FairBetter than 97% of packages

Maintenance97

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 54.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

244

Last Release

12d ago

Major Versions

1.37.0 → 2.0.02023-05-15

2.47.2 → v3.x-dev2024-11-20

2.68.0 → 3.0.02026-01-19

v2.x-dev → 3.2.02026-02-06

3.5.3 → 4.0.02026-06-04

PHP version history (2 changes)1.0.0PHP &gt;=7.1.0

2.51.1PHP &gt;=7.4.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/7074417d5d5a74a106ed32e4f1026daa662c0456c3cb55fa0b6183e04446d5df?d=identicon)[EdieLemoine](/maintainers/EdieLemoine)

---

Top Contributors

[![EdieLemoine](https://avatars.githubusercontent.com/u/3886637?v=4)](https://github.com/EdieLemoine "EdieLemoine (599 commits)")[![semantic-release-bot](https://avatars.githubusercontent.com/u/32174276?v=4)](https://github.com/semantic-release-bot "semantic-release-bot (137 commits)")[![myparcel-bot[bot]](https://avatars.githubusercontent.com/in/281272?v=4)](https://github.com/myparcel-bot[bot] "myparcel-bot[bot] (100 commits)")[![Mark-Ernst](https://avatars.githubusercontent.com/u/33826576?v=4)](https://github.com/Mark-Ernst "Mark-Ernst (77 commits)")[![joerivanveen](https://avatars.githubusercontent.com/u/49525608?v=4)](https://github.com/joerivanveen "joerivanveen (67 commits)")[![GravendeelJochem](https://avatars.githubusercontent.com/u/119667571?v=4)](https://github.com/GravendeelJochem "GravendeelJochem (41 commits)")[![FreekVR](https://avatars.githubusercontent.com/u/417416?v=4)](https://github.com/FreekVR "FreekVR (27 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (26 commits)")[![wthijmen](https://avatars.githubusercontent.com/u/106662400?v=4)](https://github.com/wthijmen "wthijmen (13 commits)")[![FlorianSDV](https://avatars.githubusercontent.com/u/93703843?v=4)](https://github.com/FlorianSDV "FlorianSDV (9 commits)")[![NabDevs](https://avatars.githubusercontent.com/u/20712349?v=4)](https://github.com/NabDevs "NabDevs (4 commits)")[![RichardPerdaan](https://avatars.githubusercontent.com/u/11389731?v=4)](https://github.com/RichardPerdaan "RichardPerdaan (2 commits)")[![simonvnk](https://avatars.githubusercontent.com/u/39694777?v=4)](https://github.com/simonvnk "simonvnk (1 commits)")

---

Tags

myparcelphpsdk

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/myparcelnl-pdk/health.svg)

```
[![Health](https://phpackages.com/badges/myparcelnl-pdk/health.svg)](https://phpackages.com/packages/myparcelnl-pdk)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.1k](/packages/laravel-framework)[symfony/http-kernel

Provides a structured process for converting a Request into a Response

8.1k869.4M8.8k](/packages/symfony-http-kernel)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[composer/composer

Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.

29.5k196.2M3.1k](/packages/composer-composer)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

21866.0M1.7k](/packages/drupal-core)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M420](/packages/drupal-core-recommended)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
