Webhook Setup

Currently, webhook URL's need to be manually set on your account by one of our team. If you require us to set one for you, just drop complete this request form and we'll get that done for you.

Webhook Security

In order to verify that webhooks are coming from gophr, we'll send you an API-KEY header containing your account API key e.g . API-KEY: sand-2a7df6bd-8ed3-48ad-b801-05093a866e66. Below is an example request:

curl --request POST \
  --url https://api-sandbox.gophr.com/v2-commercial-api/your-status-update-webhook-url \
  --header 'API-KEY: dev-2a7df6bd-8ed3-48ad-b801-05093a866e66' \
  --header 'Content-Type: application/json' \
  --data '{
  "delivery_id": "74afea12-24aa-44c7-a55b-b2dc2a9a02d3",
  "external_id": "12345",
  "pickup_eta": "2019-08-24T14:15:22Z",
  "delivery_eta": "2019-08-24T14:15:22Z",
  "courier_location_lat": 0,
  "courier_location_lng": 0,
  "status": "CANCELED",
  "leg_type": "STANDARD",
  "price_net": 2.95,
  "price_gross": 4.56,
  "meta_data": [
      "key": "string",
      "value": "string"
  "courier_name": "string",
  "courier_notes": "string",
  "courier_mobile_number": "string",
  "cancellation_comment": "string",
  "proof_of_pickup": {
    "type": "Photo",
    "url": "https://test.com"
  "proof_of_delivery": {
    "type": "Photo",
    "url": "string"
  "events": [
      "timestamp": "string",
      "status": "NEW"

Testing Webhooks

Webhooks can be tested using our POST /jobs/{job_id}/deliveries/{delivery_id}/progress endpoint. Hitting this endpoint will progress the delivery to the next status and cause the status update webhook to be fired.

If you wish to receive the webhook locally then we suggest using a tool like ngrok which will allow you to expose a public URL locally for the payload to be sent to. We'll also need to configure this url on your account.