Uber Direct Shipping

Summary

↑ Back to top

Uber Direct Shipping for WooCommerce is a powerful integration that enables WooCommerce store owners to offer Uber Direct delivery services to their customers for food and non-food related deliveries. This plugin seamlessly connects your WooCommerce store with Uber’s delivery network, allowing you to provide fast and reliable delivery options to your customers.

Key Features

↑ Back to top
  • Real-time shipping rates from Uber Direct
  • Automated order fulfillment
  • Live delivery tracking
  • Support for multiple delivery zones
  • Customizable delivery options
  • Integration with WooCommerce order management

Requirements

↑ Back to top
  • WordPress 6.0 or higher
  • WooCommerce 6.3 or higher
  • PHP 7.4 or higher
  • SSL certificate (required for secure API communication)
  • Active Uber Direct account
  • An eligible country/area where Uber Direct delivery is available
  • A store address (configured under WooCommerce > Settings > General) that inside this country/area.

Setup & Installation

↑ Back to top

Installation

↑ Back to top
  1. Download the plugin zip file
  2. Log in to your WordPress admin panel
  3. Navigate to Plugins > Add New
  4. Click “Upload Plugin” and select the downloaded zip file
  5. Click “Install Now” and then “Activate”

How to get Uber Direct API keys

↑ Back to top
  1. Visit the Uber Direct Developer Portal
  2. Create a new account or log in to your existing account
  3. Navigate to the Developer section
  4. Select between Product credentials (Used on a live website), or Testing credentials (Used on a testing or staging website)
  5. Create a new application
  6. On the API Keys tab, generate your API credentials:
    • Application name
    • Customer ID
    • Client ID
    • Client Secret
  7. On the Webhooks tab, create a new Webhook using the information provided on your Uber Direct settings page (e.g. https://mywebsite.com/wc-api/uber-shipping-webhook/)

For more information on how to create an Uber Direct account with API keys, please refer to the official documentation.

Important: Please note that you must define your store address at WooCommerce > Settings > General and the Site Title in Settings > General Settings – Those WordPress/WooCommerce core settings are used for the pickup location request sent to the Uber API.

Configuring Settings

↑ Back to top

Store Settings

To ensure Uber Direct Shipping works, your WooCommerce store / WordPress site must include the following:

  • The store must have a valid address
  • The WordPress site must have a name
  • The phone number on the checkout page must be set to required
  • The products to be shipped via Uber Direct must be enabled at the product level
  • Uber Direct has a maximum weight limit of 50 lbs (22.65 kg / 22,650 grams / 800 oz) per delivery. Products (or total cart weight) exceeding this limit cannot be shipped via Uber Direct.

Please note that Uber Direct can only deliver in a range of ±16km or 10 miles.

Adding the Shipping Method

  1. In your WordPress admin panel, navigate to WooCommerce > Settings > Shipping
  2. Click on the “Shipping Zones” tab
  3. Either create a new shipping zone or edit an existing one
  4. Click “Add shipping method”
  5. Select “Uber Direct” from the dropdown menu
  6. Click “Add”

General Settings

  1. In your WordPress admin panel, go to WooCommerce > Settings > Shipping > Uber Direct
  2. Select whether to use Test mode (Required Testing API keys) or Live mode (Reqires Product API keys)
  3. Enter your API credentials:
    • Customer ID
    • Client ID
    • Client Secret
    • Store Phone Number

How to create the webhook signature key

  1. Log in at https://direct.uber.com/
  2. Click on Developer in the menu to the left
  3. Click the Webhooks tab in the main window
  4. Then click on Create a webhook
  5. For the URL, use https://yourwebsite.com/wc-api/uber-shipping-webhook/ (replace with your site URL or use the one generated automatically in the plugin settings)
  6. For the event types, check event.delivery_status
  7. Click the Save button
  8. The endpoint will appear in the webhooks list
  9. Click the three dots at the end of the line, and click Update
  10. You should now see a new field Webhook signature key
  11. Click the Copy button and paste it in the Uber Direct Shipping settings

Store Hours

The Store Hours setting allows you to specify the hours during which your store is open and Uber Direct deliveries are available. When enabled, this feature ensures that the Uber Direct shipping method only appears on the checkout page if the purchase is made during your configured store opening hours.

Extra Settings

  1. Configure general settings:
    • [Optional] Add specific store opening hours (When enabled, Uber shipping will only be available during your store opening hours.)
    • Add the webhook signature key from Uber Direct (found under Developer > Webhooks).
    • [Optional] Add an extra fee on top of the Uber delivery cost.
  2. Configure advanced settings:
    • Enable Debug Mode: This allows each step of the Uber Delivery process to be logged. All debug logs are found at WooCommerce > Status > Log.

Usage

↑ Back to top

The Uber Direct Delivery shipping method will be visible on the frontend checkout page. Please note that the following conditions need to be met in order for the shipping method to be shown:

  1. The product needs to have weight and dimensions configured
  2. The product type needs to be eligible for Uber Direct Delivery (e.g. Simple or Variable)
  3. Uber Delivery should be enabled for each product in the cart
  4. The Uber Shipping API connection needs to be properly configured & active
  5. The shop address should be located in an area where Uber Direct Delivery is available
  6. The customer’s delivery address should be located within the delivery limits of the store

Privacy Policy Integration

↑ Back to top

Overview

↑ Back to top

The plugin automatically registers privacy policy content through WordPress’s privacy API. This content is accessible in the WordPress admin under Settings → Privacy.

Implementation

↑ Back to top

The content includes:

  • Data collection points
  • Data sharing with Uber
  • Types of information collected
  • Purpose of data collection

How to Access

↑ Back to top
  1. Navigate to WordPress admin
  2. Go to Settings → Privacy
  3. Click “Policy guide”
  4. Locate the “Uber Shipping” section

Customization

↑ Back to top

To modify the privacy policy content:

add_filter( 'uber_shipping_privacy_content', function( $content ) {
return 'Your custom privacy content';
});

Default Content

↑ Back to top

The default privacy notice includes:

  • Delivery address collection
  • Contact information handling
  • Order details processing
  • Link to Uber’s privacy policy

Best Practices

↑ Back to top
  • Review the privacy content after plugin installation
  • Update your privacy policy when upgrading the plugin
  • Ensure the content aligns with your local privacy laws
  • Keep your privacy policy up to date with any changes in data handling

Uber Direct Customer ID Region Issue

↑ Back to top

Problem Summary

↑ Back to top

The main issue: in some cases, Uber Direct customer IDs are tied to the geographic region where the account was created. If you created your Uber Direct account while located outside your business’s pickup region, Uber’s system will use your account’s registration location instead of the pickup address you send in API requests.

Example: If you created your account in Germany but your business operates in Belgium, Uber will calculate delivery distances from Germany, causing errors like:

“The dropoff location is outside the delivery radius of the pickup location (Max Radius: 10 miles, Calculated Distance: xxx miles).”

Root Cause

↑ Back to top

Customer ID Region Binding: Uber Direct customer IDs are permanently tied to the geographic region where the account was created, regardless of what pickup addresses you send in API requests.

Solution

↑ Back to top

Simple Fix: Create New Account from Correct Location

The solution is straightforward – create a new Uber Direct customer account from your actual business pickup location:

Step 1: Create a New Customer Account

  1. Physically be in the pickup location (or use a VPN) when creating the account (this is extremely important since you’ll be geolocalized when creating the account)
  2. Go to Uber Developer Dashboard
  3. Create a new organization/app for your operations
  4. Set your business address to your actual pickup location
  5. Get your new credentials:
  • Customer ID
  • Client ID
  • Client Secret

Step 2: Update Plugin Settings

  1. In WordPress admin, go to Uber Shipping settings
  2. Replace your credentials with the new ones
  3. Test a delivery quote – distances should now calculate correctly

Step 3: Verify Store Address

Ensure your WooCommerce store address matches your pickup location:

  • Go to WooCommerce > Settings > General
  • Verify all address fields are correct for your location

Alternative Options

↑ Back to top

Contact Uber Support

↑ Back to top

You can try contacting Uber Direct Support to:

  • Ask if they can migrate your existing account to the US region
  • Get guidance on multi-region setup
  • Understand their account region policies

Troubleshooting

↑ Back to top

“Scope is invalid”

↑ Back to top

It can happen that when our plugin connects to the Uber API, you get an error mentioning that “scope is invalid”? Our plugin already defines high-level scope (see scope as permissions), so if the issue persists you will have to contact the Uber Direct team at uberdirect@uber.com to fix this issue.

Phone number isn’t required

↑ Back to top

For the API request to be valid, the phone number on the checkout page must be set to required. You can easily set it as required when using the WooCommerce Checkout Block, however if you are using an FSE (Full site Editing) theme in conjunction with the classic checkout (the shortcode version of the checkout), you will not be able to set the phone number as required (with a non FSE theme, this can be done from the Appearance menu, in the Customize > WooCommerce section).

You have two options to fix this:

  1. Enable the checkout block
    – edit the checkout page
    – click “transform into block”
    – click on the “shipping address” block
    – mark phone field as required
  2. Update the option in the database (be careful, do this only if you know what you’re doing, this can damage your site if done incorrectly)
    – using a FTP software, edit the functions.php file of your theme and add this line and save
    update_option( 'woocommerce_checkout_phone_field', 'required' );
    – refresh the page
    – delete the line
    – this a temporary code, you can also add it temporarily with a plugin like “Code Snippets”

Lastly you can force the field to be required with a plugin like “Checkout field editor” available on WooCommerce.com

FAQ

↑ Back to top

Q: What is the difference between the Uber Direct API and Uber Eats API in WooCommerce? A: The Uber Direct API empowers merchants to deliver their goods using Uber Direct order delivery system. Once your an order is placed, a dedicated Uber courier will be dispatched to collect the order from the store and deliver it to the customer.

Uber Eats API on the other hand, provides merchants with more control over the store details (e.g. menu items & discounts) that customers can see on the Uber Eats app.

Note: This plugin is only focused on the Uber Direct delivery network that provides real-time shipping costs and tracking information as packages are picked up by couriers and delivered.

Q: Do I need an SSL certificate? A: Yes, an SSL certificate is required for secure communication with Uber’s API. This ensures that sensitive data like API keys and customer information are transmitted securely.

Q: What happens if the Uber Direct API is unavailable? A: In the unlikely event that the Uber Direct API is unavailable, alternative shipping methods configured alongside Uber Direct will be shown on the checkout page.

Q: I am having an error with “scopes”? A: The plugin defines scopes by default, those are eats.deliveries and direct.organizations. Those should be sufficient to make all API requests, so if you are experiencing any issues related to scopes, we recommend that you contact the Uber Direct support team at uberdirect@uber.com so that they can manually activate scopes tied to your account.

Q: Why aren’t shipping rates showing up? A: Common reasons include:

  • Invalid API credentials
  • No delivery zones configured
  • Address validation issues
  • API rate limits reached
  • Customer is outside the delivery limits.

Related Products

Offer add-ons like gift wrapping, special messages or other special options for your products.

Add shipment tracking information to your orders.