Support
Everything about running ShipPeek: how to reach a human, the questions that come up most about rate quotes and your Easyship token, what to try when a quote request is rejected, and how to report a bug that can actually be fixed.
Email support
One person builds and supports ShipPeek, and that person answers the email. Expect a reply within two business days.
[email protected]Report a bug
Same address, subject line "ShipPeek Bug". What to include is at the bottom of this page; the checklist genuinely decides whether a bug is fixable.
Bug report checklistSupport covers the ShipPeek app itself. Questions about your Easyship account, courier rates, shipment creation, or label purchases are Easyship's territory, and Easyship's own support is the better place for them; ShipPeek is an independent client for their public API and is not affiliated with or operated by Easyship.
Frequently asked questions
Getting started
What does ShipPeek do?
It compares courier shipping rates for a parcel you describe, and shows the status of shipments already on your Easyship account. Rate quotes and the shipments dashboard are the whole app; it does not create shipments, buy labels, or move money.
Do I need an Easyship account?
Yes. ShipPeek has no account or sign-in of its own; it is a client for your own Easyship account. Sign up at easyship.com, then paste an API token from your Easyship dashboard into ShipPeek's Settings tab.
What is Sandbox vs. Production, and which one do I want?
Easyship issues two kinds of API token: a Sandbox token (starts with sand_) for testing against fake data, and a Production token (starts with prod_) for real quotes and your real shipments. Settings holds one of each and uses whichever environment you have selected. If a Sandbox quote looks unrealistic, that is expected: switch to Production with a real token for live rates.
Does ShipPeek cost anything?
No. ShipPeek itself is free, has no in-app purchases, no subscription, and no ads. Any charges for shipping labels or Easyship's own service happen inside Easyship, never inside ShipPeek.
What do I need to run it?
An iPhone or iPad on iOS 17 or later, and an Easyship API token.
Getting a quote
"Get Rates" is greyed out. Why?
The screen always lists exactly what is still missing in a footer under the button, so check there first. The requirements Easyship enforces are: a ship-from address saved in Settings, a destination country, a postal code for countries that use one, the parcel's weight, all three dimensions (length, width, height), and either an HS code or an Easyship item category ID describing what's inside. Declared value is the only parcel field that stays optional.
It says the destination needs a postal code, but the country doesn't look like it should.
ShipPeek requires a postal code for every country that has one, not only the US; a short list of countries with no postal system (Hong Kong, the UAE, Panama, and roughly 60 others) is exempted. If Easyship itself rejects a code ShipPeek didn't think was needed, ShipPeek starts requiring one for that country for the rest of the session. Tap "Find postal code" above the field and search by city, or use the destination's capital as a fallback.
What HS code or item category should I use?
Tap "Find HS code" under What's Inside and describe the contents in plain words; ShipPeek searches the full published HS 2022 nomenclature (over 5,600 subheadings) on the device and picks the matching six-digit code. Customs uses this to set the duty the recipient pays, so describe the actual goods rather than guessing a code from memory.
A quote request failed with an error from Easyship. What does it mean?
ShipPeek translates Easyship's field-level complaints into the control that fixes them wherever it recognises the message, so read the error text on screen rather than dismissing it. If a message ever comes through unrecognised, it is Easyship's own wording with the HTTP status code stripped out; email it in and it will be added to the list ShipPeek understands.
Your token and account
Where do I get an API token?
From your own Easyship account dashboard, under its API or developer settings. ShipPeek does not issue tokens and cannot create an Easyship account for you.
Is my token safe?
It is stored in the iOS Keychain, encrypted by the operating system, and sent only to Easyship in the request's Authorization header. Treat it like a password: an Easyship API token can do whatever your Easyship account permits, even though ShipPeek itself only ever reads. Prefer a Sandbox token while you're just trying the app out. Full detail is in the privacy policy.
Privacy and data
How do I delete my data?
Open ShipPeek, go to the Settings tab, and tap Sign Out. That deletes the stored API token for the selected environment from the Keychain (switch environment and sign out again if you saved both Sandbox and Production tokens). Deleting the app removes the saved ship-from address and every other preference along with it. Full instructions are in the privacy policy.
Does ShipPeek send my data anywhere besides Easyship?
No. It talks to Easyship's API using your token, and separately asks Apple's built-in geocoder to turn a typed postal code into a city name for display. There is no ShipPeek server, no account, no analytics SDK, and no crash reporter. See the privacy policy for the full detail.
Troubleshooting
"Get Rates" won't turn on
- Read the list under the button; it names exactly what's still missing.
- Confirm a ship-from address is saved in Settings, including a postal code if your country needs one.
- Confirm the destination country is picked from the Country list, not left blank.
- Confirm weight and all three dimensions are filled in under Parcel; dimensions are required, not optional.
- Confirm either an HS code or an item category ID has been entered under What's Inside.
A rate request comes back with an error
- Read the on-screen message; ShipPeek rewrites Easyship's complaint to point at the field that needs fixing.
- If it's about a postal code, tap "Find postal code" above the field rather than typing one from memory.
- If it's about the parcel contents, tap "Find HS code" and describe the item again in different words.
- If it names the ship-from address, double check the address saved in Settings, not the destination.
- Still stuck: email the exact error text as a bug report (see below); it is often one field ShipPeek doesn't recognize yet.
"Couldn't reach Easyship"
- Check the device's internet connection and try again.
- Confirm the correct environment is selected in Settings: a Sandbox token will not work against Production and vice versa.
- If it persists with a good connection and a matching token, email the details; that is a bug worth chasing.
The Shipments tab is empty or won't load
- Confirm you're signed in with a token for the environment that actually holds those shipments; a Sandbox token shows only sandbox shipments, a Production token only real ones.
- Confirm the shipment exists in your Easyship account by checking Easyship's own dashboard for the same environment.
- Nothing is cached between sessions; closing and reopening the app always re-fetches, so a stale view means the request itself is failing rather than showing old data.
Reporting a bug
Email [email protected] with the subject "ShipPeek Bug". The more of this you include, the better the odds it gets fixed rather than guessed at:
- What happened, and what you expected instead. One sentence each is plenty.
- Where. Rate Calculator, Shipments, or Settings.
- Sandbox or Production, since the two environments see different data.
- Steps to reproduce, if you can trigger it deliberately.
- The exact error text shown, copied in full rather than paraphrased.
- Device and iOS version (Settings → General → About).
- ShipPeek version, from the App Store or TestFlight listing.
- A screenshot, if it is a display problem.
Never send your Easyship API token, and crop it out of any screenshot of Settings. Nobody supporting this app will ever ask you for it.
Feature requests are welcome at the same address. There is no public issue tracker; the list is short and email reaches the person who writes the code.