Zippendo

Real-timeshippingvisibility,andwhatitactuallytakes

Every carrier describes a parcel differently. How we normalise that into nine statuses, where the updates come from, and what we deliberately leave to you.

Zippendo
tutorials

Where is my order is the most expensive email a webshop gets. Not because answering is hard, but because answering means opening the carrier's site, pasting a number, reading a Danish status that means something slightly different from the Norwegian one, and typing it back out in your own words.

The fix is not a nicer email template. It is having the parcel's actual state inside your own system, in a shape that is the same for every carrier you use.

Nine statuses, on purpose

Every carrier invents its own vocabulary. We map all of it onto nine:

  • created, the label exists and the carrier knows about it
  • awaiting_pickup, waiting for the carrier to collect
  • picked_up, the carrier has it
  • in_transit, moving through the network
  • out_for_delivery, on the van
  • ready_for_pickup, at a parcel shop waiting for the recipient
  • delivered
  • returned
  • exception, something went wrong

Delivered and returned are terminal. We stop polling once a parcel reaches one, and nothing can move it back out. A carrier that resends an old event three days later does not un-deliver a parcel. That sounds obvious until you have watched it happen in someone else's system.

Two ways the updates arrive

Carriers fall into two camps and each gets handled on its own terms.

Most expose a tracking API, so we poll them. An hourly job asks about everything not yet terminal and maps whatever comes back.

Some push instead. Bring's Event Cast, and Instabox, Budbee and Porterbuddy, send events as they happen. We subscribe at dispatch and the events land on a callback URL.

Push is better and we use it wherever a carrier offers it. But both paths end in the same place, one service that dedups the event, stores it and updates the shipment, so a timeline looks identical whichever way it was filled. You should not have to know or care which camp a carrier sits in.

What we deliberately do not do

We do not email your customers. There is no Zippendo-branded tracking page putting our name at the bottom of your delivery experience.

What you get instead is a tracking.updated webhook every time a shipment changes state, and the same event available through Klaviyo, Customer.io, Mailchimp, SendGrid, Zapier and Make. The message stays yours: your words, your template, your sending domain, your call on whether out for delivery deserves an SMS.

We think that is the right split. You know your customers. We know where the parcel is.

Where to start

Turn on the tracking.updated webhook and point it at something that logs. Watch real parcels move through the nine statuses for a week before automating anything on top. You will find out quickly which of your carriers are chatty and which go quiet for two days in the middle, and that is worth knowing before you promise a customer a delivery window.

Tags

trackingcarrierswebhookscustomer experience