This guide will explain what manifests are, why they are important, and how to create them with the EasyPost API.
A shipping manifest is a crucial checklist of packages that are ready for pickup by a carrier. They act as an advance notice of the packages that the driver or carrier agent has to pick up from your premises. Some carriers will require a manifest before their end-of-day pickups. Even if your carrier doesn't, it's still a good idea to manifest your shipments so you can hand the carrier a single form that accounts for all of the shipments being picked up.
In EasyPost, you can create a manifest using the ScanForm object. When you create Shipment or Batch objects for your individual packages, you can include them into the ScanForm object. There are a few rules that you have to follow when creating a ScanForm
- Refunded Shipments cannot be added.
- Each Shipment must have the same origin address.
- Shipments must all be dated (using the label_date option) on or after the date of the form's generation.
- Shipments cannot be added to more than one ScanForm
- Shipments must be provided in the form of an array.
There are eleven attributes in the ScanForm object that provide all the information regarding your manifest:
id: The ID number of the ScanForm, you should record this for documentation purposes
object: The object, which in this case, should always read "ScanForm".
status: Status of the ScanForm. Possible values include "creating", "created", and "failed".
message: The field where we explain any possible errors.
address: The origin address of the shipments.
tracking_codes: Tracking codes associated with all shipments in the ScanForm
form_url: URL of the document.
form_file_type: File format of the document.
batch_id: The ID of the associated Batch, if you decided to Batch your shipments before inserting them into the ScanForm. To learn more about Batches, see our Related Links.
created_at: Timestamp of the ScanForm creation.
updated_at: Timestamp of the latest ScanForm update.
Here is an example of creating a ScanForm and listening for when the asynchronous job is complete using webhooks: