Shipping
Sendify: live rates, pickup points, labels and tracking
Connect Sendify, test a quote, book on shipping, print labels, follow tracking and set up return labels.
Sendify gives live rates, pickup points, booking, labels and tracking with several carriers.
Where: Stack › Sendify. The shipping methods: Settings › Shipping.
Connect
- Create an API key in Sendify under Settings › API. Sandbox and production have different keys.
- Open Stack › Sendify.
- Paste the key into Sandbox API key or Live API key, or both. Under Environment in use, choose which environment to use, and fill in the fields in the table.
- Press Connect Sendify.
- Add shipping methods with Carrier Sendify under Settings › Shipping. See Shipping methods, delivery countries and prices.
Sandbox and Live each have their own key. When you switch environment the other key stays, so you never have to paste it again.
BunStack stores the keys encrypted and checks each one against its environment. If Sendify accepts a key, the page shows VERIFIED next to Sandbox key or Live key. If Sendify rejects one, BunStack stores it anyway, with UNVERIFIED and "Saved, but Sendify did not accept every key."
| Setting | What it does | Default | Limits |
|---|---|---|---|
| Environment in use | Sandbox · test or Live · production. New quotes and bookings go there | Sandbox · test | The environment must have a saved key |
| Sandbox API key | The sandbox key. Leave empty to keep the stored one | – | Works against the sandbox only |
| Live API key | The production key. Leave empty to keep the stored one | – | Works against production only |
| Production base URL override | Another address for Live. Otherwise BunStack uses https://app.sendify.se/external/v1 | Empty | Live only. https on a Sendify domain |
| System name (shown in Sendify) | The name your shipments get in Sendify | BunStack | – |
| Label layout | Label format, see the next table | 1x2 | – |
| Pickup time (Europe/Stockholm) | Time the carrier collects | 12:00 | – |
| Pickup lead days | Same business day, Next business day or In two business days | Next business day | – |
| Format | Suits |
|---|---|
| printer | Thermal printers, one 4×6 label per page |
| 1x2 | A4 with two labels |
| 3x1 | Three labels per sheet |
| A4 | One label per A4 sheet |
A connected Sendify has the tabs Overview, Settings and Test quote. Change the settings under Settings and press Update connection.
Switching environment
- Open Settings.
- Choose Sandbox · test or Live · production under Environment in use.
- Press Save and switch to Live or Save and switch to Sandbox.
If the environment has no key, BunStack does not switch and shows Live has no API key yet …. Paste the key and save again. Shipments already booked are tracked and get their labels in the environment they were booked in, also after the switch.
To switch every integration at once, use Test mode on Stack. See Test mode.
Test
- Test connection shows Sendify's answer and a request id. Put the request id in the email if you contact api@sendify.com.
- Test quote fetches rates for a storefront, a product with a quantity and an address. Parcel override replaces the product with a parcel of your own. Press Run test quote.
The test quote books nothing. It appears on Sendify's import page as QUOTE-<storefront>-<key>.
What happens when
| Moment | What BunStack does |
|---|---|
| The customer enters the postal code | Asks Sendify for rates for at most 20 seconds. The checkout shows "Getting prices from the carriers…" meanwhile. The method's policy works out the customer's price |
| The customer picks a pickup-point method | Shows pickup points near the postal code with the quoted carrier. If none match, it shows the whole list |
| You ship the order | Books the shipment, fetches the label and stores the tracking number and cost on the order |
| Every 15 minutes | Fetches tracking for booked shipments |
Book on shipping
- Open the order and press Fulfill order.
- Choose lines and quantities. Press Ship order, or Ship these lines for a partial delivery.
BunStack books with Sendify using the customer's address, the shipping method and the pickup point. The customer gets the email that the order has shipped.
- BunStack reuses the quote from the checkout when the address is complete and unchanged and the quote has more than 2 minutes left.
- Otherwise BunStack makes a new quote. It picks the same product, then the same carrier and class, then the cheapest in the class, then the cheapest. The order logs the choice.
- The pickup point is the one the customer chose. If there is none, BunStack picks the nearest one with the carrier.
- If BunStack cannot fetch the label, it keeps the booking anyway.
The printer icon on the shipment (Print shipping label) and Shipping labels in the order's actions menu fetch the stored label. If the label is missing, BunStack fetches it from Sendify. You cannot change the format afterwards.
Tracking
- Every 15 minutes BunStack fetches tracking for shipments booked in the last 21 days.
- BunStack fetches each shipment at most every 30 minutes. One run fetches at most 50 shipments.
- BunStack stops fetching a shipment that still shows as booked 5 days after booking. The carrier has not scanned it.
- Refresh tracking on the order fetches tracking now, even for such a shipment.
- A delivery sets the delivery date on the order and a line in Timeline. The customer gets no email.
The tracking link is on the order and in the shipped email.
Return labels
Sendify's API books no returns. BunStack therefore books no return label.
- Book an ordinary shipment in Sendify's web app. The customer is the sender and the return address the recipient.
- Enter the return number as reference, for example R-1001.
- Download the PDF.
- Press Send return label on the return and upload the PDF.
The customer gets the label as an attachment in an email. DHL's Service Point Return needs the original shipment to have been booked in Sendify. See Returns.
Errors
| Message | Cause | What to do |
|---|---|---|
| "Live rates are unavailable right now — standard prices are shown." | Sendify did not answer, or the checkout reached a rate limit. The checkout shows the fallback price | If it persists: press Test connection |
| Sendify refused the booking | The address is incomplete, phone or email is missing, or the sender's postal code is missing | Correct it and book again. Nothing was booked |
| "Sendify did not answer the booking …" | Sendify never answered. The booking may have gone through | Check in Sendify. The next attempt asks Sendify first and does not book a second parcel |
| The label could not be fetched | The shipment was booked without a label | Press Print shipping label later |
| HTTP 401 or 403 in Test connection | The key is wrong or belongs to the other environment | Paste the right key into the right field: the sandbox key in Sandbox API key, the production key in Live API key |
Limits
- Live rates: 20 calls per minute per IP address and storefront, and 300 per hour per storefront. Stored quotes do not count.
- Pickup points: 30 searches per minute per IP address, and 300 per hour per storefront.
- At the limit the checkout shows the fallback price and no pickup points until the time has passed.
Disconnect
Disconnect asks Disconnect Sendify? and then removes both API keys. Live rates, booking and tracking stop, and the checkout shows the fallback prices. Shipping methods, policies and booked shipments stay. Enter the keys again to reconnect.
Go live
The Sendify environment check stops go-live when Sendify is on the sandbox and an active method of the storefront books through Sendify. The sandbox books no real shipments. Switch to Live · production with the production key.