SpreeUberDirect
Dispatches completed Spree Commerce orders as Uber Direct deliveries — live delivery-fee quoting during checkout, dispatch on order completion, and delivery status synced back via webhooks.
A second, independent delivery provider alongside spree_doordash
— both extensions add their own Spree::ShippingMethod, so a store can offer either, both, or
neither, with zero coupling between them.
Status
M1–M5 built and verified against a real Uber Direct Sandbox account end to end — real OAuth token,
real quotes, a real dispatched delivery driven through Uber's "Robo Courier" test simulator from
pending through delivered, both admin pages confirmed loading against real Postgres data. See
CHANGELOG.md for the full milestone-by-milestone verification detail, including what
was not live-tested (inbound webhook receiving — no public tunnel was set up). M6 (final spec
polish/docs) and M7 (production go-live, gated on Uber's own approval) haven't started. Not yet
tagged, pushed to a remote, or released.
Installation
Add to your Gemfile:
gem 'spree_uber_direct', git: 'https://github.com/amitkssolanki/spree_uber_direct.git', tag: 'v0.1.0'
Then:
bundle install
bin/rails spree_uber_direct:install:migrations
bin/rails db:migrate
Setup
- Create a Direct account at direct.uber.com and log in with your Uber account. Sandbox credentials (Client ID, Client Secret, Customer ID) are available immediately under the Developer tab in Management — no approval needed for sandbox.
- In your Spree admin, go to Uber Direct Connection and paste the three sandbox values.
- Register a webhook endpoint in the Direct dashboard pointing at
https://your-store.example.com/spree_uber_direct/webhooks/uber_direct, then copy its signing key into the same admin form.
Production access requires providing billing information and Uber's approval — see developer.uber.com/docs/deliveries/get-started. No fixed timeline is published for that approval; sandbox has none of that restriction.
Environment variables (alternative to the admin form, useful for scripting/rake tasks)
UBER_DIRECT_CLIENT_ID=
UBER_DIRECT_CLIENT_SECRET=
UBER_DIRECT_CUSTOMER_ID=
UBER_DIRECT_ENVIRONMENT=sandbox
Testing
bundle install
bundle exec rake test_app
bundle exec rspec
Contributing
See CONTRIBUTING.md.
License
MIT — see LICENSE.md.