2,000 Shipments Across 70+ Countries in Year One

We rebuilt UrShipper, a multi-carrier shipping SaaS for Indonesian eCommerce, replacing a fragile platform with stable Aramex, FedEx, DHL, and UPS integrations, Shopify automation, and three distinct portals for customers, staff, and admins.

See all work

This project

Result 01

Shipments processed successfully across 70+ countries in the first year

2k+

Result 02

Existing customers migrated to the new platform without service disruption

200+

Result 03

New business signups within the first two months of launch

92
4.9 / 5 on ClutchSee all work
Platform
Responsive Web App
Duration
14 weeks
Industry
Shipping and logistics
Read time
6 min read
UrShipper Logo

Gil Nugraha built UrShipper because he ran an eCommerce brand himself and spent too much time calling courier offices, manually comparing rates across FedEx, DHL, and UPS, and chasing shipment updates. He knew other small eCommerce operators had the same problem. The first version of the platform he built with earlier vendors had carrier API integrations that broke silently, returned wrong rates, and gave customers no visibility once a parcel left the warehouse.

He came to us to rebuild it properly. We rebuilt UrShipper from a fragile first version into a production-ready multi-carrier SaaS: stable API integrations for FedEx, DHL, UPS, and Aramex, a Shopify connector that automates order import and tracking fulfilment, and three distinct portals for customers, staff, and admins. 200 existing customers migrated without a service disruption. 92 new businesses signed up in the first two months. 2,000+ shipments processed across 70+ countries in year one.

UrShipper multi-carrier shipping SaaS for Shopify eCommerce businesses in Indonesia

I definitely recommend RaftLabs, especially to solo founders like me. Their clear communication and detailed discussions have always helped me make better decisions.

Gil Nugraha, Founder at UrShipper

before & after

What changed

Before
  • Carrier API integrations broke silently: FedEx, DHL, and UPS connections returned wrong rates or missing insurance details without surfacing an error, so customers made bookings on incorrect pricing
  • No unified portal existed: customers created shipments in one interface, staff managed them in another, and admins operated in a third with no shared data view and no way to see a complete shipment record in one place
  • Shopify orders imported manually: staff copied order details one by one before shipping could begin, which made fulfilment volume a direct function of staff hours
  • Customers received no proactive updates on delays or tracking changes; every status question became a support email or phone call
  • Label generation, parcel re-measurement, and product grouping for delayed dispatches required manual work for every affected shipment
After
  • Aramex, FedEx, DHL, and UPS rates surface in real time for every shipment with accurate insurance details; API failures are caught and retried before the user sees a result
  • Customer, staff, and admin portals share the same data layer: each role sees the information relevant to their function without duplicating work across separate systems
  • Shopify stores connect directly: orders import automatically, and tracking numbers are fulfilled back to Shopify once a label is created, with no manual data entry
  • Delay alerts and tracking status updates push to customers automatically; staff handle exceptions rather than fielding routine status questions
  • Label generation, parcel grouping, and re-measurement are automated; staff time moves from routine processing to operations that actually need judgment

What we had to solve

  • 01

    Making carrier API integrations resilient when FedEx, DHL, and UPS return inconsistent or delayed responses

    Carrier APIs, especially for international shipments, time out, return partial data, and occasionally change response schema without notice. A rate comparison that silently fails or returns an incorrect rate is worse than no rate at all; it erodes trust in a tool merchants are relying on to make cost decisions. The architecture used AWS SQS to queue carrier requests and Lambda to process them asynchronously, so slow or failed carrier calls could retry without blocking the user's interface. Response validation caught schema inconsistencies before they reached the rate display.

  • 02

    Migrating 200 active customers to the new platform without interrupting live shipments

    A SaaS migration where customers experience downtime loses accounts. UrShipper had 200 live customers when we started the rebuild, merchants running active shipments who could not afford a gap in tracking access, label generation, or carrier booking. The migration ran in phases with account-level transitions, so each customer's data, history, and carrier account connections moved to the new platform before their access switched. Zero shipments were interrupted during the cutover.

outcomes

What we achieved

2,000+
shipments across 70+ countries in year one
Previously

The previous platform's carrier API failures meant bookings had to be recalculated manually and customers could not rely on rates being accurate for international shipments.

200+
existing customers migrated without service disruption
Previously

A fragile platform with no unified view across customer, staff, and admin roles created operational blind spots that grew harder to manage as shipment volume increased.

92
new business signups in the first 2 months
Previously

The old platform's poor UX and unreliable carrier rates prevented UrShipper from attracting new business customers at the pace the Indonesian eCommerce market demanded.

What clients say

What Our Client Say About Us

Three-year average engagement. Founders and operators describing the work in their own words. No marketing varnish.

Gil Nugraha
Gil Nugraha
Indonesia flagIndonesia
Founder at UrShipper

I definitely recommend RaftLabs, especially to solo founders like me. Their clear communication and detailed discussions have always helped me make better decisions.

Your shipping platform has carrier integration failures and customers are noticing?

the build

What we built

UrShipper is built for the operational reality of a small eCommerce team: one or two people processing dozens of shipments a day who need the platform to do the routine work without margin for error.

01

Merchants see final rates across all carriers before committing

Merchants compare rates from FedEx, DHL, UPS, and Aramex in real time for each shipment, with final prices shown upfront including insurance and no hidden fees. Merchants can use UrShipper's negotiated rates or connect their own carrier accounts. A consolidated invoice covers all carriers, so billing does not require reconciliation across separate carrier statements.

Multi-carrier rate comparison for FedEx DHL UPS and Aramex in UrShipper
02

Order received to label generated — manual steps removed from the workflow

Merchants connect their Shopify stores and orders sync automatically, with no manual import. Once a shipment is created and a label is generated, the tracking number fulfils back to Shopify automatically. Live carrier rates display at checkout based on the buyer's address. The manual steps that previously consumed staff time between "order received" and "label generated" are removed from the workflow.

Shopify integration and fulfilment automation in UrShipper shipping platform
03

Customers, staff, and admins all work from the same data

The dashboard shows total shipments, spend by carrier, countries served, average delivery time, and monthly volume trends. Filters drill down by carrier, service type, or date range. Customers, staff, and admins each see the same underlying data through their role-appropriate view: no duplicated records, no version mismatches between what the customer sees and what operations is working from.

All-in-one shipping dashboard with carrier analytics and shipment management in UrShipper
04

Shipping costs fall as volume grows — merchants move up automatically

Shipping costs decrease as volume grows through a four-tier discount structure. Merchants move up to the next tier automatically when they hit a spend threshold, and a grace period prevents them from losing their discount if one month falls short. The mechanic gives growing merchants a concrete commercial reason to consolidate their shipping volume through UrShipper rather than splitting across carriers directly.

Tier-based shipping discount program for high-volume merchants in UrShipper

Engagement

How we worked together

  1. 01Weeks 1–2

    Discovery and scoping

    We map the problem before writing code. Two weeks of technical audit, stakeholder interviews, and prototype — so both teams align on scope and risk before sprint one.

  2. 02Ongoing

    Two-week Agile sprints

    Each sprint ends with working software, not a status update. You review a real build, request changes, and approve before we move forward. No surprises at handover.

  3. 03Ongoing

    Daily async updates

    Slack for daily progress, Asana for task visibility, weekly video calls for decisions. You have full visibility without needing to attend every meeting.

  4. 04Final

    Handover and warranty

    Full code handover with deployment runbooks and documentation. Thirty-day warranty period for production issues at no extra cost.

Common questions about UrShipper

When a merchant creates a shipment, they enter the parcel dimensions, weight, origin, and destination. UrShipper queries the connected carriers (FedEx, DHL, UPS, Aramex) simultaneously and returns their rates in a comparison view. Each rate shows the final price including insurance and surcharges with no hidden line items added at checkout. Merchants select the rate that fits their delivery requirement and cost preference; the platform books directly with the chosen carrier and generates the label. The merchant can also set rules to auto-select the cheapest or fastest option for specific routes without manual review.

Before the integration, staff manually copied order details from Shopify into the shipping platform for every order, a step that consumed significant time at scale and introduced entry errors. After integration, orders sync automatically from the connected Shopify store. Staff review the imported order, confirm dimensions if needed, and create the shipment. Once the label is generated, the tracking number fulfils back to Shopify automatically and the customer receives the shipping confirmation from their store. The manual data transfer step is eliminated entirely.

Zero shipments were interrupted. The migration ran in account-level phases: each customer's data, shipment history, and carrier account connections were transferred to the new platform and verified before their access switched. We did not cut over all accounts simultaneously: the phased approach meant any issue with a specific account's migration could be resolved without affecting other accounts. Customers received clear communication before and during their transition. The migration was completed with no service disruption across 200 accounts.

Yes. Merchants who already have negotiated rates with specific carriers can connect their own carrier accounts and have those rates displayed alongside UrShipper's rates in the comparison view. Merchants choose which rate to book against on a per-shipment basis. For merchants who do not have existing carrier accounts or whose volume does not qualify for negotiated rates, UrShipper's consolidated rates apply automatically.

We rebuilt UrShipper (stable API integrations for four carriers, Shopify connector with automatic fulfilment, three role-specific portals for customer, staff, and admin, tier-based discount engine, consolidated invoicing, and real-time tracking) in 14 weeks. The phased migration of 200 live accounts happened in parallel with the final build and launch. A platform covering fewer carriers or without the three-portal architecture would be faster. Adding carrier integrations for markets with less standardized APIs (some regional carriers in Southeast Asia) extends the timeline. Contact us to scope based on the carriers, markets, and portal structure your platform requires.

Next step

Recognise this problem in your business?

Tell us what's broken. We'll diagnose it and show you where the leverage is before you commit to anything.

  • Scope and cost agreed before work starts. No surprises. No obligation.
  • Working prototype within 3 weeks of kickoff.
  • Pay by milestone. You see progress before each invoice.
  • 60-day post-launch warranty. Bug fixes, UI tweaks, and deployment support. No retainer.
  • All conversations are NDA-protected.