Descrição
RiderX Delivery Sync connects your WooCommerce store to the RiderX delivery platform. It quotes live delivery rates at checkout and dispatches paid orders to RiderX for fulfilment, keeping order delivery status in sync.
Features:
- Live delivery rate quotes shown as a WooCommerce shipping method (classic and block checkout).
- Rate breakdown displayed in the shipping label (distance, estimated time, net price, VAT).
- Automatic dispatch of orders to RiderX when payment is received.
- Configurable restaurant / pickup location and credentials.
- Works with WooCommerce High-Performance Order Storage (HPOS).
This plugin communicates with the RiderX delivery service to obtain rates and create deliveries. A RiderX account and API credentials are required.
External services
This plugin uses external services for delivery orchestration and optional admin map visualization:
-
RiderX API (required for core functionality)
- Service URL: https://riderx.me
- Purpose: Request delivery rate quotes, dispatch deliveries, and read live delivery status.
- Data sent: Pickup and delivery addresses, customer phone, customer email, order total, currency, item count, and optional pickup schedule.
- Terms: https://riderx.me
-
OpenStreetMap tile service (optional, admin delivery-history maps)
- Service URL: https://tile.openstreetmap.org
- Purpose: Render map tiles in the plugin admin delivery history detail view.
- Activation: Used only when “Enable external map services” is enabled in plugin settings.
- Data sent: Map tile coordinates requested by the browser while rendering the admin map.
- Terms: https://operations.osmfoundation.org/policies/tiles/
-
OSRM demo routing service (optional, admin delivery-history route line)
- Service URL: https://router.project-osrm.org
- Purpose: Draw pickup-to-customer route geometry in the admin delivery history detail view.
- Activation: Used only when “Enable external map services” is enabled in plugin settings.
- Data sent: Pickup and customer latitude/longitude coordinates.
- Terms: https://project-osrm.org/
Instalação
- Upload the plugin folder to the
/wp-content/plugins/directory, or install it through the WordPress plugins screen. - Activate the plugin through the “Plugins” screen in WordPress.
- Go to WooCommerce settings and enter the unique Store Middleware Key issued for this store, your RiderX Client ID and Client Secret from the RiderX Developer Console, and this store’s sender contact and pickup location.
- Enable the RiderX delivery shipping method in your shipping zones.
- Copy the Inbound Webhook URL from the RiderX settings screen and register it in your RiderX partner panel.
- Paste the webhook signing secret that RiderX returns back into the Webhook Signing Secret field, so delivery status callbacks can be verified.
Perguntas frequentes
-
Do I need a RiderX account?
-
Yes. You need RiderX API credentials to request rates and dispatch deliveries.
-
Does it work with block checkout?
-
Yes. The delivery rate and its breakdown are shown in both classic and block (React) checkout.
Avaliações
Não há avaliações para este plugin.
Colaboradores e desenvolvedores
“RiderX Delivery Sync” é um programa de código aberto. As seguintes pessoas contribuíram para este plugin.
ColaboradoresTraduzir o “RiderX Delivery Sync” para seu idioma.
Interessado no desenvolvimento?
Navegue pelo código, consulte o repositório SVN ou assine o registro de desenvolvimento por RSS.
Registro de alterações
1.0.58
- Stopped quoting a delivery price before the customer has entered a street address. A postcode and city alone geocode to the middle of the district, so the cart showed a distance and a price that had nothing to do with the real destination and changed once the address was completed. The RiderX rate now appears only once a street line with a house number is present.
- Other plugins’ licence reminders and upsells are no longer rendered on the RiderX settings screen. WordPress, WooCommerce and this plugin’s own notices are untouched, and every other admin page is left exactly as before.
1.0.57
- Fixed the Preferred Delivery Time field being invisible to most customers. It was registered in the shipping fieldset, which WooCommerce keeps hidden unless the shopper ticks “Ship to a different address”, so a normal order could never choose a delivery time. It now sits with the order notes, where it is always shown.
- Fixed Test Middleware Connection always reporting a 404. It sent a GET to the rate endpoint, which only accepts POST, so a perfectly healthy service looked broken. It now checks /health and explains what the result means.
- Removed the Dispatch Endpoint preview that showed api.riderx.me, a host that was decommissioned and never used for dispatch. The field now shows the real endpoint, derived from the Middleware Base URL.
- The Environment switch no longer implies it changes servers. Which RiderX environment is used is decided by the middleware; the setting is now documented as a label.
1.0.56
- Clarified that the Store Middleware Key is unique per store and issued by the middleware administrator. It is not a shared environment key, Mapbox token, or RiderX credential.
1.0.55
- Normalizes sender phone country codes to digits only before sending them to the middleware and RiderX (for example,
43instead of+43).
1.0.54
- Added required per-store sender contact fields (full name, email, and phone) and sends them with every delivery request. WooCommerce orders no longer inherit middleware or kiosk sender defaults.
- Treats missing RiderX Client ID, Client Secret, or sender contact as incomplete configuration so a store cannot silently dispatch under shared or placeholder identity.
1.0.53
- Fixed the same order being dispatched to RiderX more than once. The sync ran on every transition into processing without checking whether a delivery already existed, so an order that went back and forth — on-hold and back, a gateway re-firing the status, or an admin changing it by hand — created a second delivery for the same order. Orders that already carry a delivery ID are now skipped, and a short lock prevents two concurrent transitions from both dispatching.
1.0.52
- Added RiderX Client ID and Client Secret fields. Deliveries are now created against your own RiderX account, using the credentials you generate in the RiderX Developer Console under API credentials.
- Renamed the “RiderX API Key” field to “Middleware API Key” and documented it. It authenticates your store to the RiderX middleware and is not a RiderX account credential, which was easy to confuse.
- Consolidated the outbound request headers so every middleware call carries the same authentication.
1.0.51
- Fixed a regression in 1.0.50 that could silently drop delivery status updates. The delivery ID is only stored on the order once the dispatch request returns, so an early callback can arrive before the order is matchable; 1.0.50 acknowledged those with a 200 and RiderX never retried them, leaving the order stuck. Unmatched status callbacks now return 404 again so RiderX retries them.
- Unmatched delivery.vehicle.location pings are still acknowledged with 200, since those are frequent, disposable, and not worth quadrupling with retries.
- A “shipment_destroyed” delivery no longer returns the goods to stock when it cancels the order, because a destroyed parcel is never coming back. An ordinary “cancel” still restocks as before.
- Added the riderx_woo_sync_non_restocking_statuses filter to control which delivery statuses cancel an order without restocking.
1.0.50
- Fixed a fatal error that could take down the whole site: the shipping method installer ran on plugins_loaded and dereferenced WooCommerce country data before WooCommerce had initialised it. It now runs on woocommerce_init.
- Fixed orders never completing automatically: the plugin looked for a “delivered” delivery status, which RiderX does not send. Orders are now completed on the documented “completed” and “late_completed” statuses (“delivered” is still accepted as an alias).
- Orders are now cancelled when RiderX reports “cancel” or “shipment_destroyed”.
- delivery.vehicle.location events now only record the courier position instead of adding an order note for every periodic ping.
- Webhooks that cannot be matched to an order are acknowledged with 200 instead of 404, so RiderX no longer burns its three-attempt retry budget on deliveries this store does not own.
- Added the riderx_woo_sync_completed_delivery_statuses and riderx_woo_sync_failed_delivery_statuses filters for stores that need custom status mapping.
- Fixed inbound status webhooks being rejected: signature verification required a t= timestamp component that RiderX does not send, so every genuine signed callback failed with a 401.
- Signature verification now accepts the plain hex digest RiderX sends, as well as the sha256=, v1= and base64 digest formats, and reads the timestamp from X-Service-Timestamp when it is not embedded in the signature. The replay window is only enforced when a timestamp is actually supplied.
- Signature verification also accepts the X-RiderX-Signature, X-Webhook-Signature and X-Hub-Signature-256 headers in addition to X-Service-Signature.
- Clarified on the settings screen that the webhook signing secret comes from the RiderX partner panel after you register the inbound webhook URL there.
- Fixed the Show/Hide toggle only working on the first secret field on the settings screen.
1.0.49
- Declared compatibility with WooCommerce High-Performance Order Storage (HPOS / custom order tables).
- Declared compatibility with the WooCommerce Cart & Checkout Blocks.
- Resolves the “incompatible with currently enabled WooCommerce features” admin notice.
1.0.48
- Fixed local Docker middleware URL handling: settings now accept private IP and host.docker.internal base URLs.
- Normalized middleware URL input so pasted endpoint paths like /health or /api/integrations/woocommerce/calculate-rate are reduced to the proper base URL.
- Added local auto-detection fallback for middleware base URL when the field is left empty.
1.0.47
- Synced readme Stable tag with plugin header version (1.0.47).
- Excluded wordpress-org-assets directory from distributable plugin ZIP.
1.0.46
- Added per-day opening schedule with multiple time ranges (example: 09:00-14:00,16:00-22:00).
- Added support for same-day close/reopen windows and overnight ranges.
- Opening-hours status now evaluates current day plus overnight spill from previous day.
- Reduced noise on RiderX settings page by hiding unrelated admin notices from other plugins.
1.0.45
- Added translators comments to all translatable strings with placeholders.
- Hardened input sanitization and nonce verification in admin and checkout handlers.
- Fixed release archive to use POSIX path separators for reliable extraction on all platforms.
1.0.44
- Updated readme Tested up to to WordPress 7.0 for directory compatibility checks.
1.0.43
- Updated plugin text domain to riderx-delivery-sync to match the plugin slug.
- Replaced inline admin output with wp_add_inline_style() to comply with enqueue best practices.
- Updated readme Tested up to value to WordPress 6.9.
1.0.42
- Removed UTF-8 BOM from all PHP source files to satisfy WordPress.org automated scanner checks.
- Rebuilt release archive after encoding cleanup.
1.0.41
- Removed UTF-8 BOM bytes from PHP files flagged by WordPress.org automated checks.
- Repackaged release artifact with the corrected file encoding.
1.0.40
- Renamed plugin display name to RiderX Delivery Sync to comply with WordPress.org naming policy.
- Updated release packaging slug to riderx-delivery-sync.
1.0.39
- Packaging cleanup: removed markdown release notes from the distributable plugin ZIP.
- Build script now excludes all .md files from release archives.
1.0.38
- Hardened inbound webhook authorization: signed requests now require a configured signing secret or a valid API key.
- Added signed webhook replay-window checks using the RiderX signature timestamp.
- Switched Leaflet admin assets to bundled local files for WordPress.org packaging compliance.
- Added release packaging assets and WordPress.org submission/release guide.
1.0.37
- Inbound status webhook now understands the real RiderX delivery payload (event + delivery object) and resolves the WooCommerce order by stored delivery id or the “WooCommerce order N” description, in addition to the legacy flat payload.
- Added support for RiderX’s X-Service-Signature (HMAC-SHA256) webhook authentication, with an optional “Webhook Signing Secret” setting to verify the signature. Signed RiderX requests are accepted and bound to an existing order when no secret is configured.
- Webhook updates now backfill the RiderX delivery id and sender/receiver coordinates onto orders that were dispatched before this metadata was stored.
1.0.36
- Inbound status webhook now also reads the API key from the HTTP_AUTHORIZATION / REDIRECT_HTTP_AUTHORIZATION server variables, so the Authorization: Bearer header keeps working on Apache/FastCGI stacks that strip it.
1.0.35
- Delivery history now shows a separate, expandable detail panel per order with its own map.
- Detail map draws the pickup-to-customer direction (road route with straight-line fallback).
- Added real-time delivery status (current status, timeline, rider, vehicle, ETAs) fetched live from the RiderX API with a refresh button.
1.0.34
- Display the delivery rate breakdown directly in the shipping method label so it appears in block checkout.
1.0.33
- Added delivery rate breakdown (distance, estimated time, net price, VAT) to the shipping rate.
