Delivery Tracking

v1.4.14 Updated 29 aug. 2026

Delivery Tracking

Suit chaque colis expédié, historise ses événements transporteur, et prévient le client par email dès que son colis change d'état — selon des règles…
Hyvä Compatibel Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
€ 79,00
Probeer de live demo
  • Updates and support included for 12 months
  • License key delivered immediately by email
  • 30-day money-back guarantee
  • Full documentation included
  • Compatible with Hyvä themes
  • Composer-ready installation

Delivery Tracking

Zodra een bestelling verzonden is, valt de meeste communicatie stil. De klant heeft een volgnummer en de site van de vervoerder, en elke vraag die daarna opkomt belandt bij uw support. Wimakeit Delivery Tracking vult dat gat: het volgt elk pakket, bewaart de volledige geschiedenis en mailt de klant zodra er iets gebeurt dat hem aangaat.

Wat "hem aangaat" bepaalt u zelf. De module vertaalt de ruwe statuscodes van elke vervoerder naar een vaste set pakketstatussen, en u koppelt een e-mail aan de statussen die dat verdienen. Zonder code, zonder templates te bewerken.

Voor wie

  • Voor merchants die verzenden met DPD, UPS, bpost of Mondial Relay, in één of meerdere landen
  • Voor winkels waar "waar is mijn pakket?" een terugkerende supportkost is
  • Voor merchants met afhaalpunten, waar "wacht op het afhaalpunt" en "geleverd" niet verward mogen worden
  • Voor wie leveringsmails wil in de eigen toon en op het eigen ritme, per store view

Belangrijkste voordelen

  • Minder supporttickets. De klant weet dat zijn pakket is opgehaald, onderweg is voor levering,
  • klaarligt op een afhaalpunt of geleverd is, nog voor hij eraan denkt te vragen.

  • Triggers die u zelf beheert vanuit de backend. Elke pakketstatus kan zijn eigen e-mailtemplate
  • versturen, met eigen voorwaarden voor vervoerder, store view en customer group, eigen vertraging en eigen frequentielimiet.

  • Statusmapping die de praktijk overleeft. Vervoerders wijzigen hun codes en documenteren ze zelden
  • volledig. Onbekende codes worden automatisch vastgelegd, gerangschikt op frequentie, en versturen nooit een e-mail voordat iemand hun betekenis heeft bevestigd.

  • Waarschuwen voordat het pakket teruggaat. Een pakket dat bij een afhaalpunt blijft liggen gaat
  • terug zonder dat iemand het hoort: geen enkele vervoerder kondigt dat aan, de winkel merkt het pas bij het verzoek om terugbetaling. Een trigger kan op verstreken tijd afgaan en de klant bereiken terwijl die nog iets kan doen.

  • Herzendingen net zo gevolgd als de rest. Een vervangend pakket vertrekt meestal vanuit het ERP
  • en levert geen Magento-zending op. De module kan deze registreren vanuit een bestandsfeed of een CSV-import, met hun eigen ontvanger — en dat is nu net het pakket waar de klant het meest over inzit.

  • Een dubbele e-mail is onmogelijk, niet enkel onwaarschijnlijk. De deduplicatie steunt op een
  • database-constraint: overlappende cron-runs, een handmatige herverzending en een CLI-commando kunnen niet botsen.

  • De klant redt zichzelf. Een pagina "Mijn pakketten" in het account, de pakketstatus op de
  • bestelpagina, en een beveiligde volglink die werkt zonder aanmelden — noodzakelijk voor gastbestellingen.

  • Volledig auditspoor. Elke notificatie, ook elke bewust niet verstuurde, wordt gelogd met de
  • reden. "Waarom kreeg deze klant die mail niet?" is één filter in de grid.

Compatibiliteit

Magento Open Source en Adobe Commerce 2.4.6+, Mage-OS 3.x, PHP 8.1 tot 8.4. Themaonafhankelijk: werkt op Luma, Hyvä en maatwerkthema's. Vereist wimakeit/module-core en verder niets — er is geen externe vervoerder-extensie nodig, en vervoerders worden één voor één geactiveerd.

Installeer deze module via Composer. Zorg ervoor dat uw auth.json is geconfigureerd met uw Wimakeit-inloggegevens.

Terminal
$ composer require wimakeit/module-delivery-tracking:^1.4.14
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile

Installation

The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.

Dependencies

PackageMinimum
php8.1
magento/framework^103.0 (Magento 2.4.6+, Mage-OS 3.x)
wimakeit/module-core^3.0

No third-party carrier extension is required. Carrier integrations are built in and disabled by default.

Nothing is sent until you say so

Both safety nets are deliberate and worth knowing about before you go looking for missing emails:

  • All six email triggers are installed inactive. Activate them under
  • Sales → Delivery Tracking → Email Triggers.

  • All four carriers are installed disabled. Enable and configure them one at a time.

A fresh install therefore records parcels and shows tracking links, but sends nothing.

First steps after installing

1. Enable a carrier under Stores → Configuration → WiMakeIT → Delivery Tracking, or create a feed under Sales → Delivery Tracking → Carrier Feeds if your carrier delivers status files. 2. Let it run for a few days, then check Sales → Delivery Tracking → Status Mapping. It opens on the codes nobody has confirmed yet, most frequent first. Set what each one means and mark it confirmed. 3. Activate the triggers you want, starting with Out for delivery and Delivered. 4. Before going live, switch on Test mode in the Notifications group so every email is redirected to an address you choose, with the intended recipient shown in the subject.

ACL resources

Granted through System → User Roles. All sit under Sales.

ResourceGrants
Wimakeit_DeliveryTracking::trackingAccess to the whole section
Wimakeit_DeliveryTracking::parcelView tracked parcels
Wimakeit_DeliveryTracking::parcel_refreshRefresh a parcel against the carrier
Wimakeit_DeliveryTracking::parcel_resendResend a delivery notification
Wimakeit_DeliveryTracking::parcel_tokenIssue a new guest tracking link
Wimakeit_DeliveryTracking::parcel_deleteDelete parcels and their history
Wimakeit_DeliveryTracking::triggerView email triggers
Wimakeit_DeliveryTracking::trigger_saveCreate and edit triggers
Wimakeit_DeliveryTracking::trigger_deleteDelete triggers
Wimakeit_DeliveryTracking::status_mapView status mappings
Wimakeit_DeliveryTracking::status_map_saveEdit status mappings
Wimakeit_DeliveryTracking::feedView and run carrier feeds
Wimakeit_DeliveryTracking::feed_saveCreate, edit and delete carrier feeds
Wimakeit_DeliveryTracking::notificationRead the notification log
Wimakeit_DeliveryTracking::configChange the module configuration

Cron jobs

Registered in the default group. No setup beyond a working Magento cron.

JobSchedulePurpose
wimakeit_delivery_tracking_ingest/10 *Pick up tracking numbers the real-time observer missed
wimakeit_delivery_tracking_feed/30 *Read carrier status files
wimakeit_delivery_tracking_poll/15 *Ask carriers what changed
wimakeit_delivery_tracking_notify/5 *Send queued notifications
wimakeit_delivery_tracking_purge0 3 0Retention cleanup

Polling is self-pacing: each parcel decides its own next check from its status, so the 15-minute schedule is a ceiling rather than a per-parcel frequency.

Command line

CommandPurpose
bin/magento wimakeit:deliverytracking:poll --parcel=<id> --forceRefresh one parcel and print what changed
bin/magento wimakeit:deliverytracking:feed --profile=<id>Run one carrier feed and report the counters
bin/magento wimakeit:deliverytracking:unmappedList carrier codes still awaiting mapping, most frequent first

Database tables

Created by declarative schema. wimakeit_delivery_tracking_parcel, _event, _status_map, _trigger, _notification, _preference and _feed_profile. Two data patches seed the status mappings and the inactive triggers; both complete in under a second.

Carrier notes

  • DPD ships two source modes. File feed needs no API account and reads the status files DPD
  • drops for you. REST calls DPD directly and returns richer history.

  • UPS authenticates with OAuth 2.0 client credentials; the legacy access key is retired. UPS
  • publishes no enumeration of its status codes, so expect to spend a week letting auto-discovery build the mapping before enabling UPS emails.

  • bpost requires a Shipping Manager account with API access.
  • Mondial Relay returns no status code at all, only a French label, so its mappings match on the
  • label. Its contract also caps polling at four to six calls per shipment per day, which the module enforces with a 240-minute floor. Do not lower it.

Configuration reference

Stores → Configuration → WiMakeIT → Delivery Tracking

General

SettingPathDefault
Enabledwimakeit_delivery_tracking/general/enabled1
Enable Debug Loggingwimakeit_delivery_tracking/general/debug_mode0

Parcel discovery

SettingPathDefault
Track Magento Shipmentswimakeit_delivery_tracking/sources/track_shipments1
Catch-up Window (days)wimakeit_delivery_tracking/sources/lookback_days14
Create Parcels In Real Timewimakeit_delivery_tracking/sources/auto_create_on_shipment1

Polling

SettingPathDefault
Enabledwimakeit_delivery_tracking/polling/enabled1
Parcels Per Runwimakeit_delivery_tracking/polling/batch_size100
Interval — Awaiting Handover (minutes)wimakeit_delivery_tracking/polling/interval_pending_minutes120
Interval — In Transit (minutes)wimakeit_delivery_tracking/polling/interval_transit_minutes180
Interval — Out For Delivery / Ready For Pickup (minutes)wimakeit_delivery_tracking/polling/interval_active_minutes30
Interval — Exception / Customs (minutes)wimakeit_delivery_tracking/polling/interval_exception_minutes360
Keep Polling After Delivery (hours)wimakeit_delivery_tracking/polling/keep_polling_after_delivery_hours24
Abandon After (days)wimakeit_delivery_tracking/polling/max_tracking_days45
Max Consecutive Failureswimakeit_delivery_tracking/polling/max_failures8
Max Calls Per Carrier Per Runwimakeit_delivery_tracking/polling/max_calls_per_run200

Notifications

SettingPathDefault
Enabledwimakeit_delivery_tracking/notifications/enabled1
Copy Methodwimakeit_delivery_tracking/notifications/copy_methodbcc
Max Emails Per Parcelwimakeit_delivery_tracking/notifications/max_emails_per_parcel6
Notify Guest Orderswimakeit_delivery_tracking/notifications/send_to_guests1
Respect Customer Opt-outwimakeit_delivery_tracking/notifications/respect_customer_preference1
Test Modewimakeit_delivery_tracking/notifications/test_mode0
Emails Per Runwimakeit_delivery_tracking/notifications/send_batch_size50
Max Send Attemptswimakeit_delivery_tracking/notifications/max_send_attempts3

Storefront

SettingPathDefault
Enable "My Parcels" Account Pagewimakeit_delivery_tracking/frontend/account_page_enabled1
Account Link Positionwimakeit_delivery_tracking/frontend/account_link_sort_order68
Invert Account Link Positionwimakeit_delivery_tracking/frontend/account_link_invert_sort0
Show Parcel Status On Order Viewwimakeit_delivery_tracking/frontend/order_view_block_enabled1
Show Parcel Summary On Order Historywimakeit_delivery_tracking/frontend/order_history_summary_enabled1
Enable Guest Tracking Pagewimakeit_delivery_tracking/frontend/guest_page_enabled1
Guest Link Lifetime After Delivery (days)wimakeit_delivery_tracking/frontend/guest_token_lifetime_days30
Guest Page Requests Per Hour Per IPwimakeit_delivery_tracking/frontend/guest_rate_limit_per_hour30
Parcel Detail Links Point Towimakeit_delivery_tracking/frontend/detail_link_targetaccount

Carrier resolution

SettingPathDefault
3. Title Keywords — DPDwimakeit_delivery_tracking/carrier_mapping/title_keywords_dpddpd
3. Title Keywords — UPSwimakeit_delivery_tracking/carrier_mapping/title_keywords_upsups
3. Title Keywords — bpostwimakeit_delivery_tracking/carrier_mapping/title_keywords_bpostbpost, bpack, b-post
3. Title Keywords — Mondial Relaywimakeit_delivery_tracking/carrier_mapping/title_keywords_mondialrelaymondial relay, mondialrelay, point relais
5. Guess From Tracking Number Formatwimakeit_delivery_tracking/carrier_mapping/enable_pattern_fallback1

Data retention

SettingPathDefault
Delete Events After (days)wimakeit_delivery_tracking/retention/events_days180
Delete Notification Log After (days)wimakeit_delivery_tracking/retention/notifications_days365
Delete Parcels After (days)wimakeit_delivery_tracking/retention/parcels_days730

Carrier — DPD

SettingPathDefault
Enabledwimakeit_delivery_tracking/carrier_dpd/enabled0
Sourcewimakeit_delivery_tracking/carrier_dpd/modefeed
Throttle Between Calls (ms)wimakeit_delivery_tracking/carrier_dpd/throttle_ms0
Minimum Interval Per Parcel (minutes)wimakeit_delivery_tracking/carrier_dpd/min_poll_minutes0
Tracking URLwimakeit_delivery_tracking/carrier_dpd/tracking_url_templatehttps://www.dpdgroup.com/be/mydpd/my-parcels/incoming?parcelNumber={{number}}

Carrier — UPS

SettingPathDefault
Enabledwimakeit_delivery_tracking/carrier_ups/enabled0
API URLwimakeit_delivery_tracking/carrier_ups/api_urlhttps://onlinetools.ups.com
Throttle Between Calls (ms)wimakeit_delivery_tracking/carrier_ups/throttle_ms250
Minimum Interval Per Parcel (minutes)wimakeit_delivery_tracking/carrier_ups/min_poll_minutes0
Tracking URLwimakeit_delivery_tracking/carrier_ups/tracking_url_templatehttps://www.ups.com/track?tracknum={{number}}

Carrier — bpost

SettingPathDefault
Enabledwimakeit_delivery_tracking/carrier_bpost/enabled0
Throttle Between Calls (ms)wimakeit_delivery_tracking/carrier_bpost/throttle_ms200
Minimum Interval Per Parcel (minutes)wimakeit_delivery_tracking/carrier_bpost/min_poll_minutes0
Tracking URLwimakeit_delivery_tracking/carrier_bpost/tracking_url_templatehttps://track.bpost.cloud/btr/web/#/search?itemCode={{number}}

Carrier — Mondial Relay

SettingPathDefault
Enabledwimakeit_delivery_tracking/carrier_mondialrelay/enabled0
APIwimakeit_delivery_tracking/carrier_mondialrelay/modesoap
Throttle Between Calls (ms)wimakeit_delivery_tracking/carrier_mondialrelay/throttle_ms300
Minimum Interval Per Parcel (minutes)wimakeit_delivery_tracking/carrier_mondialrelay/min_poll_minutes240
Tracking URLwimakeit_delivery_tracking/carrier_mondialrelay/tracking_url_templatehttps://www.mondialrelay.fr/suivi-de-colis?numeroExpedition={{number}}

Email fragments

SettingPathDefault
timeline_partialwimakeit_delivery_tracking/email/timeline_partialwimakeit_delivery_tracking_partial_timeline
footer_partialwimakeit_delivery_tracking/email/footer_partialwimakeit_delivery_tracking_partial_footer

Storefront placement

The account link is added to the customer account navigation. If it appears at the very top of the menu instead of where you set it, your theme or another module inverts account link sort orders — switch Invert Account Link Position to Yes.

Parcel detail links never point at Magento's native shipment view, because stores that redirect that view elsewhere would drop the customer on a page they cannot open. Use Parcel Detail Links Point To to choose between the account page, the tokenised tracking page and the carrier's own site.

Versie
v1.4.14
Ondersteuning
12 maanden
Last updated
29 aug. 2026
Magento
Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
PHP
PHP 8.1 PHP 8.2 PHP 8.3
Hyvä
Compatibel
Pakket
wimakeit/module-delivery-tracking

Compatibility checker

Pick your stack to see if this module fits.

Changelog

Categories: Security, Feature, Fix, Perf, Admin, Deps.

[1.1.0] - 2026-08-26

Feature

  • Time-based triggers: a trigger can now fire because nothing happened, not only because a carrier scan arrived. Use it to warn a customer before a pickup point returns their parcel — no carrier announces that return, and the shop usually learns of it from the refund request.
  • Ships a "Pickup Reminder" email and a pre-configured 5-day trigger, inactive like every other seeded trigger. Set the threshold against your own carrier agreement: retention runs from seven to fourteen days depending on country and contract.
  • New days_in_status email variable, so a reminder can say how long the parcel has been waiting.
  • Feed profiles can register parcels they do not recognise, taking the address from the file. A replacement parcel dispatched from an ERP produces no Magento shipment, so nothing else would ever create it.
  • New CLI wimakeit:deliverytracking:parcel:import for the same case served differently: a list of parcels rather than a file of scans. Supports --dry-run.
  • Feed profiles gained a store setting, so parcels created without an order render their emails in the right locale and from the right sender.

Security

  • A carrier feed password was redisplayed in clear text when the form failed validation. It is no longer carried back into the page, and the field is masked.

Fix

  • Triggers restricted to a customer group never fired, and left no trace in the notification log because the filtering happened before anything was written. They work now.
  • Time-based triggers honour the repeat delay the form offers; previously it could never take effect.
  • Mass actions on large selections run in batches instead of one statement, so they no longer lock tables the storefront reads.
  • The Email Trigger edit form failed to open at all: it referenced a customer-group source class that does not exist in Magento. Editing a trigger works again.

Admin

  • Trigger form and grid expose the dwell threshold.
  • Two new settings bound the time-based scan: how many parcels each trigger examines per run, and how stale a parcel may be and still earn a reminder.

[1.0.1] - 2026-08-25

Fix

  • Mass actions now respect the filters applied to a grid: selecting every row on a filtered grid no longer acts on rows outside the filter.
  • "Select all" works on the Email Triggers and Status Mapping grids, where it previously did nothing at all.
  • Carrier feeds can only read inside a configurable base directory, so the feed permission can be delegated safely.
  • A polling run now stops on a time budget as well as a parcel count, so an unresponsive carrier cannot make it overrun its schedule.
  • The per-carrier call ceiling was set above the batch size and could never take effect.

Perf

  • Carrier feed files are streamed and processed one at a time, so memory no longer grows with the number of files waiting.
  • Feed ingestion resolves parcels in two queries per file instead of one or two per line.
  • Event ingestion is written in bounded batches, whatever history length a carrier returns.
  • Parcel timelines are capped in the database rather than after reading every stored event.

Admin

  • New health command reporting degraded carriers, stuck notifications, failing feeds and unmapped status codes, with a non-zero exit code for monitoring.

[1.0.0] - 2025-08-25

Feature

  • Parcel tracking for DPD, UPS, bpost and Mondial Relay behind one adapter interface, each carrier enabled independently.
  • Carrier status codes are translated to a canonical set of parcel statuses through an editable mapping table.
  • Unknown carrier codes are captured automatically, counted, and never send an email until confirmed by an operator.
  • Sixteen canonical statuses, keeping "waiting at a pickup point" distinct from "delivered" so the customer gets the right instruction.
  • Generic file ingestion over CSV drops, with the column mapping stored per feed so one carrier's country variants both work.
  • Adaptive polling: parcels out for delivery are checked every 30 minutes, parcels awaiting handover every two hours.
  • Seven email templates with shared header and footer fragments, rendered in the store view's own locale.
  • Customer account page listing every parcel with its progress, timeline and pickup point details.
  • Parcel status shown on the order view page and summarised under the order history.
  • Secure tracking page reachable from the emails without signing in, which guest orders require.
  • Notification preference in the customer account, plus an unsubscribe link in every email.

Admin

  • Tracked Parcels grid with per-row refresh, resend and tracking-link regeneration, plus mass actions.
  • Email Triggers grid and form: one status to one template, with carrier, store view, customer group, delay and frequency conditions.
  • Status Mapping grid with inline editing, so correcting a carrier code is a click rather than a form round trip.
  • Notification log recording every send and every deliberate non-send with its reason.
  • Carrier Feeds grid and form, with a run-now action reporting how many rows matched.
  • CLI commands to poll parcels, run a feed and list carrier codes still awaiting mapping.

Security

  • Guest tracking links use 128 bits of entropy, expire, are rate limited per IP, and expose neither the delivery address nor the order total.
  • Unsubscribing requires a confirmation step, so mail security scanners that pre-fetch links cannot opt customers out.
  • Carrier credentials are stored encrypted and never returned to the admin form.

Perf

  • Re-reading the same carrier response inserts nothing: event ingestion is idempotent through a unique index.
  • Delivered and returned parcels stop being polled; parcels with no activity are abandoned after 45 days.
  • Retention cleanup deletes old events and notifications in bounded chunks, keeping the admin grids responsive.

Deps

  • Requires PHP 8.1 or later, Magento 2.4.6 or later, and wimakeit/module-core 3.0 or later.

Een bug gevonden? Laat het ons weten.

Een kort formulier opent in een nieuw tabblad — de modulenaam en uw taal zijn al ingevuld. Beschrijf wat u probeerde, wat misging, en wij komen binnen één werkdag bij u terug.

Een bug melden voor Delivery Tracking
Module SKU: wimakeit-module-delivery-tracking · Taal: nl_NL

Hulp nodig?

Ons team helpt u graag met de integratie.

Neem contact op
Planifier un appel