Capability matrix
The three couriers don’t all do the same thing. Use this table to pick the one that fits your operation.| Capability | Shiptheory | ShipStation | NovaPost |
|---|---|---|---|
| Label generation | Yes (PDF) | Yes (PDF, PNG, or ZPL) | Yes (PDF) |
| Tracking number captured at booking | Yes | Yes | Yes |
| Void a booked shipment | Yes | Yes | Yes |
| Refresh status from the carrier | Yes, on demand | Yes, on demand | Yes, on demand |
| Saturday delivery auto-swap | Yes | No | No |
| Multi-carrier (one connection, many carriers) | Yes | Yes | No (single carrier) |
| Live service picker on the booking form | Yes | Yes | No |
| Ship-from address per integration | No (uses your account default) | Yes | Uses contract sender |
| Commercial invoice for international parcels | No | Optional, if supplied upstream | Yes, automatic for EU-border parcels |
Shiptheory
Shiptheory is a UK-based carrier aggregator. One connection gives you access to every carrier you’ve set up inside your Shiptheory account (typically a mix of Royal Mail, DPD, ParcelForce, Evri, UPS, FedEx, and DHL), and the booking form pulls the live service list each time you book. Shiptheory is a good fit if you ship mostly UK and EU parcels and want a single account to manage rates and carrier rules. The Saturday delivery override is the one feature unique to Shiptheory here: configure a JSON rule and Digital Florists will swap a weekday service code for its Saturday equivalent when an order’s delivery date falls on a Saturday.Required config
| Field | Required | What goes in it |
|---|---|---|
| API Key | Yes | The API key generated in Shiptheory under Settings > API. |
| Default Service Code | No | A Shiptheory delivery service ID (for example 3300) that’s pre-selected on the booking form. |
| Preferred Service Codes | No | Comma-separated allowlist of service codes. Set this to narrow the courier dropdown to the services you use. Leave blank to show every service. |
| Saturday Delivery Override | No | Guided form for mapping a weekday service to its Saturday counterpart. Applies when the delivery date is a Saturday. |
Setup
Generate an API key in Shiptheory
Paste the key into Digital Florists
Narrow the service list (optional)
Configure Saturday handling (optional)
Notable caveats
- Status updates are pull-only. Shiptheory doesn’t push status into Digital Florists. Refresh the shipment from the order to pull the latest tracking and label.
- Ship-from address comes from Shiptheory. There’s no per-integration sender override; configure the sender inside your Shiptheory account.
- 404 on refresh is normal early on. If you refresh a shipment that Shiptheory hasn’t finalised yet, Digital Florists treats it as “not yet available” rather than an error.
ShipStation
ShipStation (running on the ShipEngine API) is a global multi-carrier platform. Like Shiptheory, one connection gives you every carrier your ShipStation account has connected. The service picker fetches the live list on demand and caches it for an hour per shop, so newly added carriers show up within an hour of being connected on the ShipStation side. ShipStation is the right fit if your carrier mix is international or your ShipEngine account is already the source of truth for rates. Unlike Shiptheory, ShipStation lets you set the ship-from address on the integration itself, which helps if your courier-sender address is different from your shop address.Required config
| Field | Required | What goes in it |
|---|---|---|
| API Key | Yes | Your ShipEngine / ShipStation API key. Sandbox keys begin with TEST_. |
| Default Service Code | No | A compound carrier_code::service_code value (for example stamps_com::usps_priority_mail) pre-selected on the booking form. |
| Default Package Code | No | The carrier-specific package preset to default to. |
| Ship-from address | Recommended | Sender name, line 1, line 2, city, state, postcode, country, email, and phone. Line 1, city, postcode, and country are needed before a label can be booked. |
Setup
Generate an API key in ShipStation
TEST_; switch to a production key when you’re ready to ship for real.Paste the key into Digital Florists
Fill in the Ship-from address
Set a default service (optional)
carrier_code::service_code. Both halves are needed for a label to book.Notable caveats
- Service codes use a compound format. Both the carrier and the service halves are needed:
stamps_com::usps_priority_mail, not justusps_priority_mail. - Service list refreshes once an hour. A carrier you’ve just connected inside ShipStation can take up to an hour to appear in the booking form.
- Re-clicking Book is safe. If the same shipment is sent twice, Digital Florists reuses the existing label rather than creating a duplicate.
- One parcel per shipment. Multi-package shipments aren’t supported; the first parcel on the request is the one that’s booked.
- No Saturday auto-swap. Set Saturday handling inside ShipStation itself if you need it.
- Insurance value is treated as GBP. If you insure non-GBP parcels, the declared value sent to ShipStation will be the number as if it were pounds sterling.
NovaPost
NovaPost is a direct, single-carrier integration. There’s no service picker on the booking form: every parcel goes through NovaPost on the contract you’ve set up with them. Cross-border parcels into or out of the EU automatically attach a commercial invoice with cut flowers (HS code06030000) as the default classification.
NovaPost is a good fit if you’re shipping mostly cross-border into Europe and your contract with them already covers your service mix. It’s the only one of the three couriers that builds the commercial invoice for you.
Required config
| Field | Required | What goes in it |
|---|---|---|
| Company TIN | Yes | Your company tax identification number. Sent as the sender’s company TIN on every shipment. |
| Company Name | Yes | The sender company name used when the ship-from address doesn’t supply one. |
| Contract Number | Yes | Your NovaPost contract number. Sent as the payer contract number on every booking. |
| API Key | Yes | The API key from your NovaPost account. Exchanged for a session token on each call. |
Setup
Collect your NovaPost details
Enter them in Digital Florists
Check your sender and recipient phone numbers
Notable caveats
- No service picker. Every parcel uses your NovaPost contract, with no booking-time service choice.
- A phone number is mandatory. Bookings without a valid sender or recipient phone are rejected with an on-screen error.
- Cross-border parcels get an automatic commercial invoice. Defaults are DAP incoterm, GBP currency, and HS code
06030000(cut flowers). Override these on the shipment if your parcels aren’t flowers. - Single-carrier only. If you also send via Royal Mail, DPD, or another carrier, pair NovaPost with Shiptheory or ShipStation.
- Status is pull-only. As with the other couriers, refresh the shipment to pull the latest tracking.
Common questions
Can I connect more than one courier at the same time?
Can I connect more than one courier at the same time?
Why isn't the tracking status updating?
Why isn't the tracking status updating?
A new carrier I added in ShipStation isn't showing up
A new carrier I added in ShipStation isn't showing up
What does the Saturday delivery override do?
What does the Saturday delivery override do?
Can I rebook a shipment that failed first time?
Can I rebook a shipment that failed first time?
What if I need a carrier none of these support?
What if I need a carrier none of these support?