Start a Project
All guides

Shipping

Bob Go Shopify Integration for South African Ecommerce.

A Bob Go Shopify integration lets a South African store rate-shop across Courier Guy, PUDO, Aramex, Fastway and other couriers from one dashboard, one API, and one invoice. Bob Go (formerly Shiplogic) is the aggregator most SA Shopify stores reach for once they outgrow a single-courier setup. This guide covers the account setup, API key generation, the Bob Go Shopify app install, webhook registration for collections and tracking, label and commercial invoice generation, and the fallback logic you need when an upstream courier's rates API goes stale. Expect a working multi-courier checkout inside an afternoon.

Updated 15 April 2026 · 10 min read · Shopify · Joshua Kaplan

Prerequisites

  • Bob Go account at bobgo.co.za with verified business details
  • At least one courier account already linked in Bob Go (Courier Guy is the usual starting point)
  • Shopify store on any plan
  • Bob Go API key (generated in Settings > Integrations > API)
  • VAT number on your Bob Go account if you are VAT-registered — invoices are issued accordingly

Step 1. Connect your courier accounts inside Bob Go

Open Settings > Channels and link Courier Guy, PUDO, Aramex or any other supported courier by pasting each account number and API key. Bob Go can also resell its own rate-card if you have no direct courier contract yet — useful for new stores negotiating volumes.

Step 2. Install the Bob Go Shopify app

Install from the Shopify App Store. Authorize access to orders, fulfillments and shipping. The app will auto-register a Carrier Service endpoint so live rates show at checkout.

Step 3. Configure rate rules

In Bob Go, go to Shipping Rules and set which services appear for which cart values, postcodes and weights. Typical SA rule set: show Overnight Courier Guy for Gauteng and Western Cape, show Economy for outlying postcodes, show PUDO for carts under 5 kg, hide international above a weight threshold.

Step 4. Generate an API key for server-side calls

Use the API key for direct calls when the Shopify app is not enough — for example, generating labels from a Cloudflare Worker, or triggering collection bookings from an ERP.

create-shipment.sh
curl -X POST https://api.bobgo.co.za/v2/shipments \
  -H "Authorization: Bearer $BOBGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "collection_address": { "company": "EcomSolve", "suburb": "Cape Farms", "code": "7441" },
    "delivery_address":   { "company": "Customer",  "suburb": "Sandton",   "code": "2196" },
    "parcels": [{ "length_cm": 30, "width_cm": 20, "height_cm": 10, "weight_kg": 1.5 }],
    "service_level_code": "CGOVN",
    "reference": "SO-10234"
  }'

Step 5. Register webhooks for tracking events

Subscribe to shipment.collected, shipment.out_for_delivery, shipment.delivered, shipment.failed. Bob Go posts a JSON payload to your endpoint; relay to Shopify fulfillment updates and customer notifications.

bobgo-webhook.ts
export default {
  async fetch(req, env) {
    const evt = await req.json();
    // Verify HMAC header
    const sig = req.headers.get('x-bobgo-signature');
    if (!verifyHmac(sig, await req.clone().text(), env.BOBGO_WEBHOOK_SECRET)) {
      return new Response('bad sig', { status: 401 });
    }
    if (evt.event === 'shipment.delivered') {
      await markShopifyFulfilled(evt.shipment.reference, evt.shipment.tracking_reference);
    }
    return new Response('ok');
  },
};

Step 6. Generate labels and commercial invoices

The shipment response includes label_url and (for international) a commercial_invoice_url. Print A6 thermal labels if you ship over 20 parcels a day — A4 sheets waste time.

Step 7. Book collections from your warehouse

Use the Bob Go collections endpoint to book a daily recurring collection window — 14h00 to 17h00 is the usual ecommerce slot. Missed collections are the most common shipping failure in SA, so trigger a Slack alert if no driver has scanned your parcels by 17h30.

Step 8. Add fallback rates for upstream outages

Bob Go can return stale or empty rates when an upstream courier API is down. Your Shopify checkout must show something — code a try/catch around the rate call and return a flat fallback rate so the basket is not abandoned.

SA gotchas

  • Rates can go stale silently when upstream couriers fail. Log when the fallback fires and alert if the fallback rate is hit more than 2 percent of the time — that usually means Bob Go lost a courier integration.
  • Bob Go VAT invoices default to monthly. If your accountant wants per-shipment invoices, enable that in billing settings or reconciliation becomes painful.
  • Shopify native fulfillment emails can fire twice when Bob Go and the app both push fulfillment updates. Disable Shopify notifications for Bob Go fulfillments, not both.
  • API keys issued before November 2023 still work but do not include V2 endpoints. Regenerate keys for the new label and tracking APIs.
  • Free shipping rules apply at cart level, but Bob Go does not automatically zero-out the actual shipping cost you pay the courier. Build a margin buffer.

Frequently asked questions

What is the difference between Bob Go and Shiplogic?

Bob Go is the rebranded consumer-facing product of Shiplogic, the same company. The API is the same platform, migrations were transparent, and existing API keys continue to work.

Does Bob Go replace my Courier Guy account?

No. Bob Go sits on top of your Courier Guy account — it routes your shipments through your negotiated rates. You keep one set of Courier Guy invoices and Bob Go adds a small aggregator fee.

Can Bob Go handle international shipping from South Africa?

Yes, via Aramex, DHL and Fastway international services. You supply an HS code per product and Bob Go renders the commercial invoice PDF for you.

Is Bob Go compatible with WooCommerce and Magento?

Yes. Bob Go has official plugins for WooCommerce and Magento in addition to Shopify, plus a REST API for custom carts.