Summary
Multi-Carrier Shipping books your shipments with the carriers configured in your account and returns the tracking number and shipping label, from the Booking Overview in the portal or through the Booking API. Every booking moves through the same statuses whichever carrier it uses, and failed bookings show the error so you can fix the data and try again.Who it’s for
Logistics and fulfilment teams that ship with several carriers and want one place to assign a carrier, book, print labels and resolve failures, and engineering teams that want one booking integration instead of one per carrier.Key benefits
- One flow for every carrier. Carrier credentials and shipping preferences are set once per carrier reference; bookings then use the same statuses and actions for all of them.
- Book from the portal or the API. Operations teams book and re-book from Booking Overview, including in bulk; systems call the Booking API with a shipment ID.
- Failures are actionable. A failed booking shows the error type, error code and the fields that need correcting; fix them and book again.
- Labels in one place. Download labels from Booking Overview or retrieve them with the labels API.
- Status you can filter on. Booking Overview tracks Unassigned, Assigned, Booked, Shipped and Failed, and Shipment Overview filters shipments by booking outcome.
How it works
Carrier set-up
Bookings use a carrier reference: a configured carrier account under Settings > Carriers. Each carrier in the list shows a booking status:
A carrier reference holds the booking type (outbound or return), the shipping service, the shipping label type, the warehouse address and the carrier account credentials. Warehouses are set up once and reused across carrier references; the warehouse you choose is the return address printed on the label. Credentials are issued by the carrier; Perform.AI does not hold them for you. The same carrier can appear several times with different references, for example two accounts with the same carrier.
Booking statuses
A shipment needs to exist as an Open Shipment before it can be booked: a shipment without a tracking number, created through the API, file upload or SFTP. Its booking status and shipment status move together:Actions by status
When you select shipments with mixed statuses, only the actions common to all of them are enabled. Selecting Unassigned and Assigned shipments together allows Assign Carrier and Archive but not Book.
Booking Overview
Logistics > Booking Overview opens with a dashboard of the bookings created in the last 14 days and their current statuses, followed by the booking list with sortable columns: Status, Shipment ID, Carrier (Reference), Booking UUID, Tracking ID, Time Passed, Date Updated and Date Added. Select several shipments to book or archive them in bulk; a confirmation is shown before booking. Routing tags from Auto Carrier Selection are available as filters.Booking details
Clicking a shipment opens a panel with the Shipment ID, Booking UUID, tracking number, booking status and the actions for that status (Assign Carrier, Book, Download Label, Try Again). A progress tracker shows the stages Unassigned, Assigned, Booked and Shipped, and a timeline lists the booking events with timestamps:- Carrier assignment successful, or Carrier assignment failed
- Booking validation failed (an internal check failed before the request reached the carrier)
- Carrier booking successful, or Carrier booking failed (an error from the carrier)
- Shipment has been shipped (a tracking event shows the parcel moved)
Fixing a failed booking
Correct the data the error names, then book again from Booking Overview or the API:- Update the shipment through the API for the field mentioned in the error.
- Update the shipment in the portal for fields that are editable there.
- Adjust the carrier configuration when the error concerns the carrier account or service.
What a bookable shipment needs
The shipment must carry a validto_address: name, address lines, postal code, city or region and country. Some carriers also require fields such as product weight or unit; your account team can provide the list of mandatory shipment and line item fields per carrier before you integrate. A carrier_reference is best set when the shipment is created; it can also be assigned later in Booking Overview or passed in the booking request.
After booking
A successful booking sets the tracking number on the shipment and moves it to Booked. In Shipment Overview, the Booking filter has three options: No Booking, Successful and Unsuccessful. Labels are downloaded from Booking Overview or the booking panel, or retrieved through the API in the formats the carrier returns, such as PDF, ZPL or PNG.Set up in the portal
Connect a carrier:- Go to Settings > Carriers and open a carrier whose booking status is Active.
- Select Add Booking.
- Fill in the connection details, choose the warehouse and enter the account credentials assigned by the carrier.
- Select Connect. A message confirms the connection.
- Go to Logistics > Booking Overview.
- For Unassigned shipments, select them and choose Assign Carrier.
- Select Assigned or Failed shipments and choose Book, then confirm.
- Once the status is Booked, select Download Label.
For a carrier marked Not Supported, contact Customer Support through the live chat. You will receive a list of the mandatory details for that carrier; once the configuration is done, the status changes to Draft and you can activate the connection.
Use via API and MCP
- Create a Booking (
POST /v5/booking/): book an Open Shipment byshipment_idorshipment_uuid, with an optionalcarrier_reference. - Retrieve shipping labels (
GET /v5/shipments/documents/labels/): fetch the labels of booked shipments. - Retrieve carrier configurations (
GET /v5/carrier-configs/): list the carrier references configured in your account.
list_bookings, get_booking_detail and get_booking_metrics read your bookings and their statuses, and list_carrier_configs lists the carriers configured for your organization. See Tools.
FAQ
Do I have to set the carrier when I create the shipment?
It is recommended, because the booking then needs only the shipment ID. You can also assign the carrier later in Booking Overview, passcarrier_reference in the booking request, or let Auto Carrier Selection assign it.