{"id":359822,"date":"2026-09-06T11:23:17","date_gmt":"2026-09-06T11:23:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/darb-delivery\/"},"modified":"2026-09-06T11:23:07","modified_gmt":"2026-09-06T11:23:07","slug":"darb-delivery","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/darb-delivery\/","author":23556122,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Darb Delivery","header_author":"Darb Om","header_description":"Send delivery orders from any WordPress site to the Darb delivery marketplace \u2014 from a front-end request form, from the admin, or from your own code. WooCommerce is not required.","assets_banners_color":"314044","last_updated":"2026-09-06 11:23:07","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/darbarise.com\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":77,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"sulimanalsalmi","date":"2026-09-06 11:23:07","revision":3683360}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3683371,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3683371,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3683371,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3683371,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The deliveries list, showing what was sent and what failed.","2":"Creating a delivery by hand.","3":"Settings, with the connection test."}},"plugin_section":[],"plugin_tags":[5567,13827,24151,254339,3546],"plugin_category":[45],"plugin_contributors":[279388],"plugin_business_model":[],"class_list":["post-359822","plugin","type-plugin","status-publish","hentry","plugin_tags-courier","plugin_tags-delivery","plugin_tags-logistics","plugin_tags-oman","plugin_tags-shipping","plugin_category-ecommerce","plugin_contributors-sulimanalsalmi","plugin_committers-sulimanalsalmi"],"banners":{"banner":"https:\/\/ps.w.org\/darb-delivery\/assets\/banner-772x250.png?rev=3683371","banner_2x":"https:\/\/ps.w.org\/darb-delivery\/assets\/banner-1544x500.png?rev=3683371","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/darb-delivery\/assets\/icon-128x128.png?rev=3683371","icon_2x":"https:\/\/ps.w.org\/darb-delivery\/assets\/icon-256x256.png?rev=3683371","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Darb is a delivery marketplace in Oman. This plugin connects your WordPress site\nto it: you hand Darb a customer and a destination, Darb prices the delivery,\ncharges your Darb credit and assigns a courier.<\/p>\n\n<p>It does not need WooCommerce. Deliveries can start from three places:<\/p>\n\n<ul>\n<li><strong>A front-end form.<\/strong> Put <code>[darb_delivery_form]<\/code> on a page and customers can\nrequest a delivery themselves.<\/li>\n<li><strong>The admin.<\/strong> <em>Darb Delivery \u2192 New delivery<\/em> \u2014 for orders taken by phone,\nWhatsApp or over the counter.<\/li>\n<li><strong>Your own code.<\/strong> Call <code>darb_send_delivery()<\/code> from a theme, a form plugin, or\nany other integration.<\/li>\n<\/ul>\n\n<p>Every request is written down locally before it is sent, so an order Darb\nrejected \u2014 or one that never reached Darb at all \u2014 is visible under\n<em>Darb Delivery \u2192 Deliveries<\/em> instead of disappearing.<\/p>\n\n<p>Already selling with WooCommerce? Install <strong>Darb Delivery for WooCommerce<\/strong>\ninstead, which pushes orders automatically as their status changes. The two\nplugins are designed to run side by side if you need both.<\/p>\n\n<h4>Where the delivery goes<\/h4>\n\n<p>Darb needs a map pin, not a street address. If the request carries a Google Maps\nlink the courier is dispatched straight away. Without one, Darb texts the\ncustomer a link and asks them to share their location \u2014 the delivery waits until\nthey do. The wilaya is used in the meantime for the delivery-zone check, so set\na default under <em>Settings<\/em> even if you collect map links.<\/p>\n\n<p>The wilaya is chosen from a list of the sixty wilayat Darb recognises, never\ntyped. Darb matches its delivery zones on the Arabic name, so a customer typing\n\"Al Seeb\" or misspelling a wilaya would have had their delivery refused for a\nreason nobody could see. Deliveries sent from code may use either spelling \u2014\n\"Seeb\", \"As Seeb\" and \"Al Seeb\" all resolve to \u0627\u0644\u0633\u064a\u0628 \u2014 and anything\nunrecognised is passed through for Darb itself to judge.<\/p>\n\n<h4>Sending from your own code<\/h4>\n\n<pre><code>$result = darb_send_delivery( array(\n    'name'        =&gt; 'Ahmed',\n    'phone'       =&gt; '91234567',\n    'wilaya'      =&gt; '\u0627\u0644\u0633\u064a\u0628',\n    'maps_url'    =&gt; 'https:\/\/www.google.com\/maps?q=23.6100,58.5450',  \/\/ optional\n    'notes'       =&gt; 'Villa 5, second gate',\n    'description' =&gt; 'Two cakes',\n    'value'       =&gt; 12.500,                          \/\/ value of the goods\n) );\n\nif ( ! $result['sent'] ) {\n    error_log( 'Darb: ' . $result['message'] );\n}\n<\/code><\/pre>\n\n<p>Accepted keys: <code>name<\/code>, <code>phone<\/code> (required), <code>wilaya<\/code>, <code>maps_url<\/code>, <code>notes<\/code>,\n    description, <code>value<\/code>, <code>items<\/code>, <code>external_ref<\/code>.<\/p>\n\n<pre><code>items is an array of `array( 'name' =&gt; ..., 'qty' =&gt; ..., 'price' =&gt; ... )`.\n<\/code><\/pre>\n\n<p>When every item carries a price, the goods value is worked out for you.<\/p>\n\n<p>To adjust the request just before it is signed \u2014 for example to add exact\ncoordinates your site already knows:<\/p>\n\n<pre><code>add_filter( 'darb_wp_delivery_payload', function ( $payload, $record ) {\n    $payload['dropoff']['lat'] = 23.6100;\n    $payload['dropoff']['lng'] = 58.5450;\n    return $payload;\n}, 10, 2 );\n<\/code><\/pre>\n\n<h4>Wiring up a form plugin<\/h4>\n\n<p>Any form plugin that fires an action on submit can feed Darb. With Contact\nForm 7, for instance:<\/p>\n\n<pre><code>add_action( 'wpcf7_mail_sent', function ( $form ) {\n    $data = WPCF7_Submission::get_instance()-&gt;get_posted_data();\n    darb_send_delivery( array(\n        'name'  =&gt; $data['your-name'],\n        'phone' =&gt; $data['your-phone'],\n        'notes' =&gt; $data['your-address'],\n    ) );\n} );\n<\/code><\/pre>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Darb delivery marketplace to create delivery\norders. Sending deliveries to Darb is what the plugin is for, so it cannot work\nwithout contacting the service.<\/p>\n\n<p>Only when you send a delivery -- from the form after you approve it, from the\nadmin, or from your own code -- does the plugin transmit to Darb's API the\ndetails needed to fulfil it: the customer's name and phone number, the delivery\nwilaya and, if provided, a map location or Google Maps link, order notes, and\nitem descriptions and values. Each request is signed with the secret key Darb\nissued you. Nothing is sent until you enter your credentials, and the plugin\ndoes not track usage or contact any other service.<\/p>\n\n<ul>\n<li>Service: Darb delivery marketplace -- https:\/\/darbarise.com\/<\/li>\n<li>API endpoint: https:\/\/us-central1-darb-42eca.cloudfunctions.net\/shopApi\n(test mode uses https:\/\/us-central1-darbdev.cloudfunctions.net\/shopApi)<\/li>\n<li>Terms of Service: https:\/\/darbarise.com\/terms-of-use\/<\/li>\n<li>Privacy Policy: https:\/\/darbarise.com\/privacy-policy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>darb-delivery<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the\nzip from <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>.<\/li>\n<li>Activate it.<\/li>\n<li>Go to <em>Darb Delivery \u2192 Settings<\/em> and enter the Shop ID and secret key Darb\nissued you. Leave <strong>Environment<\/strong> on <em>Test<\/em> to begin with.<\/li>\n<li>Press <strong>Test connection<\/strong>. It verifies the credentials without creating a\ndelivery or spending credit.<\/li>\n<li>Tick <strong>Send orders to Darb<\/strong>, then create one delivery from\n<em>Darb Delivery \u2192 New delivery<\/em> and confirm it appears in your Darb account.<\/li>\n<li>Switch <strong>Environment<\/strong> to <em>Production<\/em> when you are satisfied. Nothing else\nin the setup changes \u2014 but the credentials do, so enter the production pair.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20need%20woocommerce%3F\"><h3>Does this need WooCommerce?<\/h3><\/dt>\n<dd><p>No. Use <em>Darb Delivery for WooCommerce<\/em> if you want WooCommerce orders pushed\nautomatically; this plugin is for everything else.<\/p><\/dd>\n<dt id=\"is%20the%20front-end%20form%20safe%20to%20make%20public%3F\"><h3>Is the front-end form safe to make public?<\/h3><\/dt>\n<dd><p>Every delivery sent to Darb is charged to your Darb credit, so an open form is a\nway to spend money. The form ships switched off, and when you switch it on it\nholds requests for review by default \u2014 nothing reaches Darb until you press\n<strong>Send to Darb<\/strong>. Choose <em>Send to Darb immediately<\/em> only if you understand that\neach submission bills you.<\/p>\n\n<p>The form also carries a nonce, a honeypot, a minimum fill-in time and a limit of\nfive submissions per IP address every ten minutes. Those raise the cost of abuse\nbut do not remove it; review mode is what actually protects the credit.<\/p>\n\n<p>Logged-in administrators are exempt from the limit and the timing check, so\ntesting your own form does not lock you out of it.<\/p><\/dd>\n<dt id=\"my%20customers%20share%20one%20ip%20address%20and%20keep%20getting%20blocked\"><h3>My customers share one IP address and keep getting blocked<\/h3><\/dt>\n<dd><p>That happens with office networks and with mobile carriers, which put many\ncustomers behind a single address. Raise the cap:<\/p>\n\n<pre><code>add_filter( 'darb_wp_form_max_per_ip', function () { return 30; } );\n<\/code><\/pre>\n\n<p>Return <code>0<\/code> to switch the limit off. <code>darb_wp_form_rate_window<\/code> changes the\nwindow, in seconds.<\/p><\/dd>\n<dt id=\"where%20is%20my%20secret%20key%20stored%3F\"><h3>Where is my secret key stored?<\/h3><\/dt>\n<dd><p>In the WordPress options table, like every other plugin setting. It is never\nprinted back into the settings page and never sent to Darb \u2014 it only signs\nrequests. Anyone with administrator access or database access can read it, so\ntreat it as you would a payment gateway key, and ask Darb to rotate it if a site\nis compromised.<\/p><\/dd>\n<dt id=\"a%20delivery%20says%20%22failed%22.%20what%20now%3F\"><h3>A delivery says \"Failed\". What now?<\/h3><\/dt>\n<dd><p>The reason is shown next to it. Fix what it names \u2014 most often a missing phone\nnumber, an unrecognised wilaya, or Darb credit that has run out \u2014 and press\n<strong>Send to Darb<\/strong> again. Nothing is charged for a failed attempt.<\/p><\/dd>\n<dt id=\"can%20i%20cancel%20a%20delivery%20from%20here%3F\"><h3>Can I cancel a delivery from here?<\/h3><\/dt>\n<dd><p>No. Once Darb has accepted an order, cancel it in Darb. Trashing the local\nrecord only removes your copy; the courier is still on the way.<\/p><\/dd>\n<dt id=\"why%20does%20the%20same%20delivery%20not%20send%20twice%3F\"><h3>Why does the same delivery not send twice?<\/h3><\/dt>\n<dd><p>Each record carries a reference that is unique to it, and Darb treats a repeat\nof that reference as the same order. Pressing <strong>Send to Darb<\/strong> twice cannot\ncreate two deliveries or charge you twice.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: front-end request form, manual entry, <code>darb_send_delivery()<\/code>,\nsigned (HMAC) requests, connection test, local record of every request.<\/li>\n<\/ul>","raw_excerpt":"Send delivery orders from any WordPress site to the Darb delivery marketplace. No WooCommerce required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359822"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sulimanalsalmi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359822"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359822"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359822"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359822"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359822"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}