# Parcelizer user and dev docs

Track your fleet, connect with customers and document deliveries, all with a beautifully designed delivery management platform and API.

For *last mile logistics operators*, the [Parcelizer web app](https://www.parcelizer.com/) is a modern delivery management platform that gives you everything you need to run a last mile delivery or courier business. It provides:

* live tracking,&#x20;
* route optimization,&#x20;
* customer notifications,
* proof of delivery and,&#x20;
* the option to white label the app with your branding and corporate style

For *developers*, the [Parcelizer](https://www.parcelizer.com/) Application Programming Interface (API) gives you the tools needed to build a full featured delivery management system. It allows you to create routes and dispatch them to the [Parcelizer web app](https://www.parcelizer.com/) where you can access the same route optimization, customer notifications and photo proof of delivery features from within the  app to provide an efficient and timely delivery experience to your customers.


# How to add orders (bulk upload)

Adding orders to your route plan by uploading a CSV file

{% embed url="<https://www.loom.com/share/a69128f498134c2fa37b091ffd7578ba?sid=7d6e4779-c5ed-4f7a-b588-6ba5e8f5a798>" %}

The most common way to add orders (pickup and delivery jobs) to your route plan is to import them using a CSV (comma separated values) file. A CSV file is simply a spreadsheet that has a filename ending with .csv. Like any spreadsheet, it can be opened in Excel (MS Windows) or Numbers (macOS). In order to correctly create a route plan, Parcelizer can only accept CSV files in a specific format - you can [download a sample file](https://parcelizer.s3.amazonaws.com/sample.csv?v=4) to see what that looks like.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FasdscXYf42bJkjuGQIo0%2Fimage.png?alt=media&amp;token=a922e99c-8afc-486a-8b36-caf41da42bbc" alt=""><figcaption></figcaption></figure>

To import your spreadsheet and add orders to a route plan, follow these steps:

### Create a Route Plan <a href="#h_c4da38327e" id="h_c4da38327e"></a>

Log in, and navigate to the Route Plans Listing page (<https://dashboard.parcelizer.com/route-plans>). Click the \[New Route Plan] button on the top right.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F8VmT1YpQ1U1cuaAhMfeF%2Fimage.png?alt=media&amp;token=4bcbefce-225b-4a08-b4f1-ff3e6f917630" alt=""><figcaption></figcaption></figure>

After that, the app will prompt you to choose a name (use something descriptive e.g. "Daily Courier Delivery - Tuesday") and delivery date (the actual day that you are going to be making those deliveries).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FsskSNJW3AfQDqq9fcspy%2Fimage.png?alt=media&amp;token=dc10e8c6-ef36-4abf-ba38-999d5bb157ae" alt=""><figcaption></figcaption></figure>

You are now in the Route Plan module. On the next page, click ( 1 ) \[Add Orders] followed by ( 2 ) \[New Order] > \[Upload] to enter the Upload New Orders screen. Download ( 3 ) \[sample.csv] at the bottom left to see what the data upload file looks like.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FG4Nxz2VyKe0Y1Ck0f9Kk%2Fimage.png?alt=media&amp;token=d0222c84-b50e-401c-90a2-3dfa71c4ff3b" alt=""><figcaption></figcaption></figure>

The sample.csv template comes with the following fields (below) by default. Each row contains information for an individual order (most commonly a package that needs to be picked up and dropped off e.g. an item to be collected from a retail store or warehouse and delivered to the customer's home address, but it could be anything really - flowers, hot food or even cannabis delivery).

| order\_ref                   | Unique reference number (typically an invoice number) that you use to identify the package. If you leave it blank, Parcelizer will automatically generate one for you.                                                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| user\_group                  | The name of the user group that can view this order. Users belonging to a user group can log in with their email address to view details of all orders tagged with the user\_group name.                                                                                              |
| pickup\_name                 | Name of the customer you are picking up the order from. If you are picking up this order from a warehouse, use "Warehouse" as the pickup name.                                                                                                                                        |
| pickup\_from                 | The earliest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it only opens at 9 am, put "09:00" in this field.                                                                                                       |
| pickup\_to                   | The latest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it closes at 5 pm, put "17:00" in this field.                                                                                                             |
| pickup\_address (required)   | The address of the customer you are picking up the order from. Make sure to use a full address that includes a zip code e.g. "111 E 2nd Ave, Vancouver, BC V5T 1B4, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field). |
| pickup\_phone                | Phone number of the customer you are picking up this order from. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.                                                                                     |
| delivery\_name               | Name of the customer you are delivering the order to e.g. "Helen Mckenzie".                                                                                                                                                                                                           |
| delivery\_from               | The earliest time in hh:mm format you need to deliver this order. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "15:00" in this field.                                                                                       |
| delivery\_to                 | The latest time in hh:mm format you need to deliver this order by. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "17:00" in this field.                                                                                      |
| delivery\_address (required) | The address of the customer you are delivering this order to. Make sure to use a full address that includes a zip code e.g. "198 W 18th Ave, Vancouver, BC V5Y 2A5, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field). |
| delivery\_notes              | Extra information that might be helpful to the driver e.g. apartment address, customer preference etc go here.                                                                                                                                                                        |
| delivery\_phone              | Phone number of the customer you are delivering this order to. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.                                                                                       |

### Upload Spreadsheet <a href="#h_c69f217121" id="h_c69f217121"></a>

Drag and drop your spreadsheet onto the shaded area. On the next screen, you'll get to match your spreadsheet's column names with Parcelizer's data fields. If you used the sample.csv as a template, most of the columns should already be correctly matched. If not, look for the field name ( 1) on the left. Click ( 2 ) \[Add Attribute] on the right and click the ( 3 ) \[Add] button to the right of the column name you want to match the data field to. Click anywhere outside the popup to dismiss it.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FOZMfHMS763I2dyUQkIlX%2Fimage.png?alt=media&amp;token=38b0ac9a-5cb8-417d-828e-3f655892d708" alt=""><figcaption></figcaption></figure>

Once you are done, hit \[done] to upload your data. If everything was parsed correctly (no geocoding or validation errors), the orders should show up highlighted with the status `draft` . Click \[Add to Route] on the bottom right to add the orders to the route plan.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FI1bPfLiAq8MCDmSanYA5%2Fimage.png?alt=media&amp;token=0a05478e-85c6-4e07-bd14-3b4dad981c6a" alt=""><figcaption></figcaption></figure>

### View Stops on Map <a href="#h_888b23f086" id="h_888b23f086"></a>

If these steps were followed correctly you should see the orders (pickups are shown as circles, deliveries as squares) on the map.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FMtZvUDTULmcOyi6BeFAj%2Fimage.png?alt=media&amp;token=d9d1bcc5-c500-469d-9d4c-f0beb5997441" alt=""><figcaption></figcaption></figure>

And that's how you add orders to a route plan using the bulk upload feature! If you have any questions about how to make Parcelizer work for you, don't hesitate to contact <support@parcelizer.com>.


# How to add orders (single order)

Adding orders to your route plan one by one is a good option if you have less than 10 orders or if you need to add a last minute order to the route after it has been dispatched. Here's how to do it.

### Adding a new Order <a href="#h_109f4e59a8" id="h_109f4e59a8"></a>

On the Route Plans Listing page (<https://dashboard.parcelizer.com/route-plans>), click on the name of the route plan you want to add the order to. Once the route plan is loaded, click on the \[Orders] button on the left (don't click on the identically named link on the top navigation bar - this will bring you to the orders listing page).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FPCS0gvCmtVNm1zd8E4eJ%2Fimage.png?alt=media&amp;token=d0386c0f-409f-4382-8ec2-f0763dd20e1c" alt=""><figcaption></figcaption></figure>

Next, select \[Add Orders] followed by \[New Order] > \[Single Order].

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FF1FfE8JTjgm7927rSBoO%2Fimage.png?alt=media&amp;token=dd21ff70-afa0-433e-a182-133440c880f1" alt=""><figcaption></figcaption></figure>

This brings you to the Add Single Order page, where you can fill in information about the order. The only required fields are Pickup Address and Delivery Address, but it's helpful to enter as much information as you can.

| Order Ref           | Unique reference number (typically an invoice number) that you use to identify the package. If you leave it blank, Parcelizer will automatically generate one for you.                                                                                                                |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User Group          | The name of the user group that can view this order. Users belonging to a user group can log in with their email address to view details of all orders tagged with the user\_group name.                                                                                              |
| Pickup Name         | Name of the customer you are picking up the order from. If you are picking up this order from a warehouse, use "Warehouse" as the pickup name.                                                                                                                                        |
| Pickup From         | The earliest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it only opens at 9 am, put "09:00" in this field.                                                                                                       |
| Pickup To           | The latest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it closes at 5 pm, put "17:00" in this field.                                                                                                             |
| Pickup Address      | The address of the customer you are picking up the order from. Make sure to use a full address that includes a zip code e.g. "111 E 2nd Ave, Vancouver, BC V5T 1B4, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field). |
| Pickup Phone Number | Phone number of the customer you are picking up this order from. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.                                                                                     |
| Delivery Name       | Name of the customer you are delivering the order to e.g. "Helen Mckenzie".                                                                                                                                                                                                           |
| Delivery From       | The earliest time in hh:mm format you need to deliver this order. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "15:00" in this field.                                                                                       |
| Delivery To         | The latest time in hh:mm format you need to deliver this order by. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "17:00" in this field.                                                                                      |
| Delivery Address    | The address of the customer you are delivering this order to. Make sure to use a full address that includes a zip code e.g. "198 W 18th Ave, Vancouver, BC V5Y 2A5, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field). |
| Delivery Notes      | Extra information that might be helpful to the driver e.g. apartment address, customer preference etc go here.                                                                                                                                                                        |
| Delivery Phone      | Phone number of the customer you are delivering this order to. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.                                                                                       |

Once you're done, scroll down, click \[Create] and \[Add to Route] on the next page.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FJdL7Nrfpk1A8AGZ91C3n%2Fimage.png?alt=media&amp;token=fefdb00e-fc4b-46a8-a6fd-2e18bd6b7f1c" alt=""><figcaption></figcaption></figure>

### Add to Route Plan <a href="#h_ed372a37c3" id="h_ed372a37c3"></a>

Your new order appears in the list of orders. already added to the route plan. Click \[Continue to Route] in the bottom right. Because it has not yet been assigned to a driver, your new order shows up in the Unscheduled panel just above the gantt chart.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F0TwXz3mW6yyOpOfnIHLc%2Fimage.png?alt=media&amp;token=c6c29e9b-f233-4c2d-a68f-641dcccc65c1" alt=""><figcaption></figcaption></figure>

### Optimize Route <a href="#h_21db4f4474" id="h_21db4f4474"></a>

Click on \[Optimize Route] to have the order assigned to a driver automatically or drag it to the gantt chart to assign it to a driver manually. Alternatively, if you know which driver you want the order to be assigned to, you can drag the order to the left of the driver icon on the gantt chart and let the optimization engine find the best way to add that order to the driver's route.

And that's how you add orders to a route plan one at a time! If you have any questions about how to use Parcelizer (or if you have suggestions for new features), please contact me at <support@parcelizer.com>.


# How much does Parcelizer cost?

Pricing and Volume Discounts

Parcelizer is distributed as software as a service (SaaS), which means that as a customer, you pay a set price every month based on usage. The software runs on our dedicated servers, so you don't have to worry about web hosting costs or recurring fees for location services (e.g. [Google Maps](https://developers.google.com/maps/documentation/directions/overview)) and customer notifications ([Twilio](https://www.twilio.com/pricing)).

Pricing is based on the number of [orders](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload) (pickup and delivery jobs) dispatched to drivers each month. You can choose from three plans - starter, growth and enterprise (see our [pricing page](https://www.parcelizer.com/pricing) for more details).

| Starter    | Up to 2,000  | USD $300   |
| ---------- | ------------ | ---------- |
| Growth     | Up to 5,000  | USD $600   |
| Enterprise | Up to 10,000 | USD $1,000 |

If you exceed your quota each month, you'll be charged $0.15 per additional order e.g. if you dispatch 2,100 order last month and are on the starter plan, you will be billed $300 + $0.15 x 100 = $315.

Please contact <support@parcelizer.com> if you'd like to speak to someone or need custom pricing. For customers with more than 10,000 orders a month we provide volume discounts and additional support options / service level agreements.


# How do I move orders from one driver to another?

Transferring orders from one driver to another

Once you've [created a route plan](https://docs.packagelytics.com/quickstart-guide/how-to-create-a-route-plan), you can still manually move orders from one driver to another. The Route Plan view is divided into two halves. The top half shows a map with your orders pinned on it while the bottom half displays a gantt chart with those same orders displayed chronologically on a timeline (circles are pickups, squares are dropoffs).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FLFRR4v5wXF7hVww7ez02%2Fimage.png?alt=media&amp;token=0b93e5ea-be59-4a5f-bb4f-ed906944ce9e" alt=""><figcaption></figcaption></figure>

Each row (and color) represents the orders to be fulfilled by a single driver. The scheduled arrival time at each pickup and delivery can be found by clicking on the order icon. This brings up an information window showing the order ID, status, customer name and predicted ETA (estimated time of arrival).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FUbWW4JkukvrGX4qF2kDc%2Fimage.png?alt=media&amp;token=10a1a667-db0e-4a4a-93d2-da4c6bb15b18" alt=""><figcaption></figcaption></figure>

Dragging the order icon from one row to another will override the route optimization algorithm and transfer an order from one driver to another. You can make as many transfers as you want.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FXiOaeQQ6Oui7EoDLY9WJ%2Fimage.png?alt=media&amp;token=3b11fddb-a0e6-4651-be53-0c744b9f8809" alt=""><figcaption></figcaption></figure>

To save your changes, simply press the \[Apply] button on the bottom right. If you want to return the order assignment to what it was before, simply click \[Optimize Route].


# How to add drivers

Adding drivers to a route plan

Before you can create an optimized route plan, you need to add drivers. Adding drivers to a route plan is as easy as[ adding orders](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload). Here's how.

### Adding Drivers to Parcelizer <a href="#h_3a24caaa41" id="h_3a24caaa41"></a>

Click on the \[Drivers] tab on the top navigation bar. This brings you to the Drivers Listing page. Next, click the \[New Driver] button on the right.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F41wthuldijlTve0AtLtO%2Fimage.png?alt=media&amp;token=57e591ad-5da5-44d5-acdf-860f61f8eac3" alt=""><figcaption></figcaption></figure>

This brings up the New Driver Modal, where you can fill in information describing the driver. Only the Driver Name and Phone Number fields are required, but it's helpful to enter as much information as you can.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FcBd3OaToem4WQ2r1XyjA%2Fimage.png?alt=media&amp;token=cbf796dd-63f4-4128-ac61-7eb33e61465d" alt=""><figcaption></figcaption></figure>

Here's what each field represents:

| Driver Name (required)    | The name used to identify your driver. This could be his actual name e.g. "Bill" or the license plate of his vehicle e.g. "CA762X".                                                                                                                                                                                                         |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Email                     | Email address of the driver, if he has one.                                                                                                                                                                                                                                                                                                 |
| Phone Number (required)   | Your driver's phone number. It's important that you get this right because we'll use this number to send the route to the driver's phone. Remember to add the country code and plus sign e.g. +17781234567.                                                                                                                                 |
| Capacity                  | The maximum number of packages that your driver can carry at a single time. For example, if he can only fit 10 packages in his vehicle, put 10. It can also represent the maximum weight of his vehicle e.g. 100 kg. This information is used by the routing algorithm to make sure the driver's load never exceeds his vehicle's capacity. |
| Shift Start               | The time in hh:mm format that the driver starts work. This is the earliest time that he can start picking up and delivering orders.                                                                                                                                                                                                         |
| Shift End                 | The time in hh:mm format that the driver ends work. This is the latest time that he can start picking up and delivering orders.                                                                                                                                                                                                             |
| Start Location (required) | The start location of the driver. Typically this is the driver's home or the warehouse where orders are consolidated.                                                                                                                                                                                                                       |
| Driver Skills             | Use this field to match specific orders with drivers that are equipped to do those orders e.g. a driver with the "VIP" skill can pickup and deliver "VIP" orders.                                                                                                                                                                           |

You can also select a color for each driver using the built in color picker (next to the Driver Name field). The color remains the same for every route plan the driver is added to.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FRmjULw7JANVikr7jrLaS%2Fimage.png?alt=media&amp;token=80928b58-1b88-46d2-9dd2-964e30808847" alt=""><figcaption></figcaption></figure>

### Add Driver to Route Plan <a href="#h_83bbc6a3be" id="h_83bbc6a3be"></a>

Now it's time to add your newly created driver to a route plan. Click on the \[Route Plans] tab on the top navigation bar to return to the Route Plans Listing page. Next, click the \[New Route Plan] and enter a Name and Date for the route plan. Add your orders ([Single Order](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-single-order) / [Bulk Upload](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload)) and then hit \[Add Drivers] on the bottom right. Select the driver you just added by clicking the checkbox next to his name.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FUgwSCEesbcvQ1Ijj6neY%2Fimage.png?alt=media&amp;token=1d97cd4f-8836-4fb6-a8e6-9d5ab3c4ffd0" alt=""><figcaption></figcaption></figure>

Finally, click \[Add to Route] and \[Optimize Route] to add the driver and have him assigned optimally to the route plan. If you need to change the driver's start and end locations or shift times, you can click on the \[Drivers] tab on the left and edit the fields directly by clicking on the pencil icon that appears when you hover your mouse pointer over the field you want to change.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FLQIEuWjfKBZsyoiqkN62%2Fimage.png?alt=media&amp;token=dc83767b-6c9d-4f01-9c9d-767e248866ab" alt=""><figcaption></figcaption></figure>

And that's how to add drivers to a route plan! If you have any questions or feature requests, please reach out at <support@parcelizer.com>.


# How to create a route plan

Using route optimization to plan driver schedules

The goal of any delivery management platform is to help logistics companies organize and plan their routes so that drivers know exactly what tasks they are assigned to each day, and the order in which they are supposed to do them.

In Parcelizer, tasks are called orders, each having an associated pickup and delivery location. After you [add orders](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload) and [drivers](https://docs.packagelytics.com/quickstart-guide/how-to-add-drivers) to a route plan, Parcelizer uses a [route optimization algorithm](https://en.wikipedia.org/wiki/Vehicle_routing_problem) to efficiently assign orders to drivers so as to minimize overall driving time, while respecting time windows, driver shift times, vehicle capacities, and other constraints.

Route optimization ensures that your drivers drive as efficiently (taking the shortest route possible) by making stops in the optimal order. This both saves fuel and provides your customers with definitive estimated arrival times (ETAs) they can use to plan their day around your deliveries e.g. they might want to be at home to receive an important package. Parcelizer's route optimization feature lets you do all this in a few simple steps.

### Creating a Route Plan <a href="#h_5b7b20df5b" id="h_5b7b20df5b"></a>

Log in, and navigate to the Route Plans Listing page (<https://dashboard.parcelizer.com/route-plans>). Click the \[New Route Plan] button on the top right.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FK9OAowXmgz2dpHfxd9nq%2Fimage.png?alt=media&amp;token=60e3d8da-e57e-4f5d-9232-769eaa748c7c" alt=""><figcaption></figcaption></figure>

After that, the app will prompt you to choose a name (use something descriptive e.g. "Daily Courier Delivery - Tuesday") and delivery date (the actual day that you are going to be making those deliveries).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FQopIpvjRadEWnA71JOpS%2Fimage.png?alt=media&amp;token=df17ce05-086b-4e6e-b67a-df6239df0a09" alt=""><figcaption></figcaption></figure>

### Add Orders and Drivers <a href="#h_c61c05ff8a" id="h_c61c05ff8a"></a>

You are now in the Route Plan module. Add [orders](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload), [drivers](https://docs.packagelytics.com/quickstart-guide/how-to-add-drivers) and press the \[Optimize Route] button on the bottom right and you're done! You'll see the optimal route, together with stops and your driver start locations on the map.

### View Routes on Map <a href="#h_8f799e7c3f" id="h_8f799e7c3f"></a>

The route for each driver is shown in a separate color and the numbers on each marker give you the sequence in which the driver is supposed to do each stop. Pickups are represented by round markers while deliveries are represented by square ones. A gantt chart below the map shows both the order as well as the ETA of the driver at each stop. You can drag the stops on the gannt chart horizontally to change the order in which they are done, or vertically to move stops from one driver to another.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FXAbBsTRzS3QGxNUE1Cd2%2Fimage.png?alt=media&amp;token=90a443c4-9883-4bc5-a034-8cc35f1dde63" alt=""><figcaption></figcaption></figure>

Next step: [How do I dispatch routes to my drivers?](https://docs.packagelytics.com/driver-app/how-do-i-dispatch-routes-to-my-drivers)

If you have any questions about how to make Parcelizer work for you, don't hesitate to contact <support@parcelizer.com>.


# How do I complete a route?

Completing stops using the Parcelizer driver app

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FcGai8sq8GWoqrNcMKSwP%2Fparcelizer_complete_stop.gif?alt=media&amp;token=1122a3dd-d39b-425f-82fe-6437d11c8ea7" alt=""><figcaption></figcaption></figure>

Once your route shows up on your driver app ([how do I dispatch routes to my drivers?](https://docs.packagelytics.com/driver-app/how-do-i-dispatch-routes-to-my-drivers)), the next step is to use it to complete stops.

On the Stop Listing screen, click on the stop you'd like to complete (Parcelizer allows you to complete stops out of order so long as the pickup is completed before the delivery). This brings you to the Stop Detail screen which shows you:

1. The customer's address on a map (pickups are shown as round markers, deliveries as square ones) with your real time location (blue dot).
2. The customer's name and address.
3. The estimated arrival time (ETA) at the address as calculated by Parcelizer's route optimization engine.
4. Any pickup or delivery notes (e.g. unit number) associated with the customer.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2Fd5K1vFq9Q6RXabZe0UyE%2Fimage.png?alt=media&amp;token=61bc32e1-d945-4739-b301-4e610a700a4e" alt=""><figcaption></figcaption></figure>

You can also press the \[Going Next] button to send your customer an ETA notification or tap the \[Call/Text] button to give the customer a call on his phone number or Whatsapp. The \[Navigate] button gives you turn by turn directions on Waze, Google Maps or Apple Maps.

Once you've arrived at the customer's address, hit the \[Arrive] button. This logs the timestamp and your GPS coordinates, which allows Parcelizer company admins to track the time and exact location you arrived at the stop.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FkFXQambgXRov6g0EZ210%2Fimage.png?alt=media&amp;token=47e243c6-adf2-42c0-8a89-9eddd4986e4b" alt=""><figcaption></figcaption></figure>

After you press \[Arrive], if the stop is a delivery, you'll have the option to mark it as `Received by Person` or `Safe Dropped`. On the next screen, you'll be asked to optionally upload (1) proof of delivery (either a picture or an image file saved on your phone), (2) customer signature as well as any notes you might want to add e.g. "package was left with the doorman". This information is now saved to the Parcelizer admin portal and available on the Order Detail screen (todo).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2Fmdijt5ergampQzzwrprI%2Fimage.png?alt=media&amp;token=64e21c7f-50ee-4c41-a02a-b4455a166513" alt=""><figcaption></figcaption></figure>

To mark the delivery as complete, hit \[Complete Delivery] which takes you back to the Stop Detail screen. You can now hit \[Next Stop] to view details of the next stop on your route.

If you have any questions about the Parcelizer driver app, don't hesitate to contact <support@parcelizer.com>.


# How can I view photo and signature proof of delivery?

Saving photo and signature proof of delivery to the Parcelizer dashboard

One of the most common requests clients ask from their couriers and last mile delivery partners is proof of delivery. They want to be able to verify that their products were delivered safely and on time. Here's how proof of delivery in Parcelizer works.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FXe4g4itv1GaClJ19u4UT%2Fimage.png?alt=media&amp;token=4a99fe53-1a15-41ea-8c5c-bf4960201a3a" alt=""><figcaption></figcaption></figure>

When a driver hits the \[Complete] button on the Stop detail screen of a delivery stop ([how do I complete a route?](https://docs.packagelytics.com/driver-app/how-do-i-complete-a-route)), he will be given the option to include proof of delivery by either taking one or more photos (he can also add them from his photo album) or asking the customer to sign on the screen. He can then include notes e.g. "Left package at customer's doorstep" to describe how the package was delivered. Once he confirms the delivery by pressing \[Complete Delivery], the proof of delivery is saved to the Parcelizer admin portal.

To retrieve the proof of delivery, log into Parcelizer (<https://dashboard.parcelizer.com/login>) and click on the \[Orders] tab on the top navigation bar. This brings you to the Orders Listing page. Use the \[Filter] dropdown to search for the delivery you are looking for (some combination of delivery name i.e. the customer name, delivery date and `status`: completed is helpful). Once you've found the correct order, click the Order ID link on the leftmost column of the order to enter the Order Detail screen.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FsOljMXXk87XoXniOMJ2D%2Fimage.png?alt=media&amp;token=eb79bb28-ab03-4f08-a4b1-b5b3f7d96d8d" alt=""><figcaption></figcaption></figure>

In the Order Detail screen, you'll find (1) Proof of delivery - photos, (2) Customer signature and (3) Driver notes on the bottom right panel.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2Fja6JD2Pm1mydllx02llx%2Fimage.png?alt=media&amp;token=2eb9d203-bd36-4063-bd09-e81f4084bd01" alt=""><figcaption></figcaption></figure>

That's how you can view photo proof of delivery in Parcelizer. If you have any questions about Parcelizer or would like to suggest a feature, don't hesitate to contact <support@parcelizer.com>.<br>


# How do I dispatch routes to my drivers?

Pushing routes to the Parcelizer driver app

Once you've [created a route plan](https://docs.packagelytics.com/quickstart-guide/how-to-create-a-route-plan) and are happy with it, the next step is to dispatch routes to your drivers so that they know what to do. In Parcelizer, routes are dispatched via text message. When you click the \[Dispatch to Drivers] button on the bottom right of the Route Plan, Parcelizer sends a text message to your drivers (the driver's phone number is saved when you [create a new driver](https://docs.packagelytics.com/quickstart-guide/how-to-add-drivers)).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FyLGJjU9v3KZUmcs7hWJc%2Fimage.png?alt=media&amp;token=63edad9c-768c-4f44-b94e-b67a5378cf5f" alt=""><figcaption></figcaption></figure>

The text message contains a link that loads the Parcelizer driver app (available on the [Apple App Store](https://apps.apple.com/ca/app/parcelizer/id1598804058) and [Google Play Store](https://play.google.com/store/apps/details?id=com.afilabs.parcelizer)) when you click it. If the previous route is still showing, try closing the app and clicking the link again.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FpSP3F2pVXvDPWFCqj48q%2Fimage.png?alt=media&amp;token=89eb3a71-e1a4-4bcc-975b-2af19c7b33a4" alt=""><figcaption></figcaption></figure>

The first screen you'll see is the Stop Listing screen, which shows the order of stops (the pickup or delivery part of each order) on the driver's route with pickups in blue and deliveries in green. Each stop shows the customer's name, address and the estimated arrival time (ETA) calculated from Parcelizer's route optimization engine.

Clicking the \[Map] icon on the top right brings you to a map based interface that shows you the physical locations of each stop. Pickup stops are shown as round markers while delivery stops are shown as square ones. The number on each marker indicates their sequence on the route.

If you have any questions about the Parcelizer driver app, don't hesitate to contact <support@parcelizer.com>.


# How do I add custom fields to my notifications?

Personalizing customer notifications by adding custom fields

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FQOPOGqIf1lSsbSqZwdXS%2Fparcelizer_custom_fields_notifications.gif?alt=media&amp;token=5ddcfc6d-752b-4424-9563-6536bee87a8d" alt=""><figcaption></figcaption></figure>

One of the most useful things you can do to personalize the [customer notifications](https://docs.packagelytics.com/customer-notifications/how-do-i-let-customers-know-when-their-deliveries-will-arrive) sent out by Parcelizer is to add custom fields to it.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FUPHdF2MGatidg2krgwY5%2Fimage.png?alt=media&amp;token=0d7768a7-7ec0-4713-8dcf-f84d6e2070c7" alt=""><figcaption></figcaption></figure>

For example, suppose you are delivering flowers to a customer called "Amy", and want to send her a notification when the driver is on the way to make the delivery. You would first find the Going Next notification text box (above) on the \[Notification Settings] screen of the Settings page. Next, you would replace the default text with the following:

```
Hello {delivery_name}, your delivery of {package_contents} is on the way and will be there at {eta}! Please contact our customer support hotline at (604) 123-4567 if you have any questions.
```

The custom field {delivery\_name} is automatically created with the order (provided you've given it a value). There are two ways to make sure that it is included. When you upload a spreadsheet to a route plan, check to see that you've matched the correct column to the Delivery Name field.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FP1YGvHuohlcvVxhKSoEd%2Fimage.png?alt=media&amp;token=871daead-1503-4d4e-b6fb-be819cdd6729" alt=""><figcaption></figcaption></figure>

The next custom field, {package\_contents}, is not found in Parcelizer. You need to add that to the order manually, either by clicking \[Add Header] on the order spreadsheet upload module and selecting the appropriate column (below) or

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F5xGsXZwHAumiAhSx4p5X%2Fimage.png?alt=media&amp;token=b129f69d-71f0-4ebc-8b40-220d40f1934f" alt=""><figcaption></figcaption></figure>

by clicking \[Add Custom Field] when adding a single order and specifying the name of the field (package\_contents) and the value (flowers).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FGxNibbzSsjmmRK0y3h9Z%2Fimage.png?alt=media&amp;token=62a892cc-8099-4ace-bc06-33ff8881e11d" alt=""><figcaption></figcaption></figure>

The last custom field in the example above is {eta}, which is generated automatically by Parcelizer and displays the value of the estimate arrival time generated by Google Maps based on the driver's real time location and distance from the delivery address.

Note: If you specify a custom field that does not exist it will show up as N/A on the customer notification.

If you have any questions about Parcelizer's customer notifications, don't hesitate to contact <support@parcelizer.com>.


# How do I let customers know when their deliveries will arrive?

Using customer notifications to keep customers in the loop

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F6IQJkJcBsx3gFYNuvxD9%2Fparcelizer_customer_notifications.gif?alt=media&amp;token=b7e1523e-fe6c-490b-ac54-9683035c8dd5" alt=""><figcaption></figcaption></figure>

Answering calls and replying to emails from customers asking where their packages are is boring and time consuming. Parcelizer does this for you automatically by sending your customers an email and/or text notification whenever there is an update to their delivery. Here's how it works.

### User Settings <a href="#h_56c0d59af1" id="h_56c0d59af1"></a>

Click on your email address on the top right of the navigation bar and click on \[Settings]. This opens the Settings menu. Choose \[Notification Settings] on the right.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FiizOVsW8TV1C2CLJNWIk%2Fimage.png?alt=media&amp;token=7ccb9241-fc82-4986-88fa-9d559f35a1da" alt=""><figcaption></figcaption></figure>

Notifications can be sent at three stages in the delivery life cycle. The first is when an [order added to a route plan](https://intercom.help/parcelizer/en/articles/6018914-how-to-add-orders-single-order) is assigned to a driver and [dispatched](https://intercom.help/parcelizer/en/articles/6090397-how-do-i-dispatch-routes-to-my-drivers).

<div data-full-width="true"><figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FSIu3erDRKQvjcKoh7Ijg%2Fimage.png?alt=media&amp;token=5b36abba-4959-4ee7-8cdf-1294e49c46dd" alt=""><figcaption></figcaption></figure></div>

The second is when the driver is about to complete a stop and presses the \[Going Next] button on the driver app.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FJ9zzUqsc8yIbYQ1zgdi2%2Fimage.png?alt=media&amp;token=4873b1aa-7ea5-4da3-8163-376667088536" alt=""><figcaption></figcaption></figure>

And the third is when he completes the stop by hitting \[Complete Delivery] on the driver app.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F43ciD0uMp5y1roiBpnWv%2Fimage.png?alt=media&amp;token=d251a674-2210-483d-8ea3-903587cea3a9" alt=""><figcaption></figcaption></figure>

### Notification Method <a href="#h_c54b6427be" id="h_c54b6427be"></a>

The first thing to decide on is how your notification will be sent. You have three options - by text message, email or both.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FHOP3a69x69gGp77y4hAn%2Fimage.png?alt=media&amp;token=2bb8609f-519c-4315-8876-f2909ccda669" alt=""><figcaption></figcaption></figure>

If you select text message, you must ensure that the delivery phone number (which includes the country code e.g. +17781234567) is included on the order. Text messages are sent out using a third party service called [Twilio](https://www.twilio.com/), which means that they will appear as being sent from a local US number.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FdBePMTLxFpdg5TaYD5sB%2Fimage.png?alt=media&amp;token=f626efd1-3257-4327-ab83-36de4cc59613" alt=""><figcaption></figcaption></figure>

If you want to send the notification by email, remember to specify the delivery email address on the order. Emails are sent using [Sendgrid](https://sendgrid.com/). If your customers don't receive the notification email, there's a good chance it ended up in their spam folder.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FFqH8uyiQcYqRh1FysQeM%2Fimage.png?alt=media&amp;token=b57d6463-2725-4098-b121-7e2fb5dabc30" alt=""><figcaption></figcaption></figure>

### Customizing the Notification Message <a href="#h_3deaf62cef" id="h_3deaf62cef"></a>

Parcelizer lets you edit the contents of each notification message however you want. You can also toggle each notification (dispatch, going next and order complete) on or off as needed.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F5YHFOOngSWINtpFSrXxm%2Fimage.png?alt=media&amp;token=657fe7d6-5b60-4e61-9974-b7991d7c4139" alt=""><figcaption></figcaption></figure>

What makes the custom notifications feature extremely powerful is the ability to use custom fields to add variables to your message. For example, suppose you are delivering flowers to a customer called "Amy", and want to send her a notification when the driver is on the way to make the delivery. You would enter:

```
Hello {delivery_name}, your delivery of {package_contents} is on the way and will be there at {eta}! Please contact our customer support hotline at (604) 123-4567 if you have any questions.
```

in the Going Next section. The custom field {delivery\_name} is automatically created with the order (provided you've given it a value).

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2Feb0jM64zlnlf35H5Ki3c%2Fimage.png?alt=media&amp;token=39aa2518-960d-400f-8d7b-c8abe1173568" alt=""><figcaption></figcaption></figure>

What about {package\_contents}? This custom field isn't among one of the default ones that come with Parcelizer so you have to add it yourself when you create the order.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FJz2vNusgX5MTqqw0GqRd%2Fimage.png?alt=media&amp;token=ba3f7926-7f1a-4846-81a9-16e295bbdcdc" alt=""><figcaption></figcaption></figure>

{eta} is special custom field that automatically takes the value of the estimate arrival time generated by Google Maps based on the driver's real time location and distance from the delivery address.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FmktA8Lpq5h6yDeCRilkM%2Fimage.png?alt=media&amp;token=f70b68d1-66d3-4e6c-82b9-05ae5e2628dc" alt=""><figcaption></figcaption></figure>

If you have any questions about Parcelizer's customer notifications, don't hesitate to contact <support@parcelizer.com>.


# Create new order (API)

Use the Parcelizer API to create new orders (without CSV import)

If you want to send customer orders directly to Parcelizer without uploading a CSV file or spreadsheet, you can use Parcelizer's Create New Order endpoint. Here's how it works.

First, retrieve your Parcelizer API key by logging into Parcelizer and clicking your username on the top right of your screen. Go to Settings > General Settings (<https://dashboard.parcelizer.com/settings>) and copy the API token shown there. Each account in Parcelizer has a unique token, which is used to correctly send orders created with the API to your account.

<figure><img src="https://downloads.intercomcdn.com/i/o/680860835/7aed5215f018a1c2af2aca13/image.png?expires=1756987200&#x26;signature=6fdb0a4968fb0bdb174b9897c55eedb5b7040c3fdd077f54d0c9ba0a641c0eb6&#x26;req=cignHs9%2BlYJaFb4V1XW4gSPDzvlxhxs3IfPSkFuUVv917mMbjarIAy%2B4nzVy%0AlT7hbquhAoS7MNmbc1DUipqTBA%3D%3D%0A" alt=""><figcaption></figcaption></figure>

After that, make an API request to the Create New Order endpoint:

**Create New Order**

Method: `POST`\
URL: <https://api.parcelizer.com/orders/create-orders>

**Headers**

api\_key: YOUR\_API\_KEY\
Content-Type: application/json

**Body**

```
[
    {
        "orderRef": "qwe1235",
        "email": "test@parcelizer.com",
        "load": 3,
        "deliveryDate": "2023-07-01",
        "pickupName": "Warehouse",
        "pickupAddress": "605 Expo Blvd, Vancouver, BC V6B 1V4, Canada",
        "pickupPhone": "+84362856329",
        "deliveryName": "Brian David Wilkie",
        "deliveryAddress": "55 Dunlevy Ave, Vancouver, BC V6A 1G7, Canada",
        "deliveryPhone": "+84362856329",
        "notes": "Please leave on porch",
        "status": "DRAFT",
        "timeStart": "09:00",
        "timeEnd": "12:00",
        "deliveryTimeStart": "09:00",
        "deliveryTimeEnd": "16:00",
        "labelNames": ["paid", "unpaid"],
        "fields": {
            "custom-1": "This is a custom field",
            "custom-2": "This is a custom field"
        },
        "requiredSkills": [
            "skill-1",
            "skill-2"
        ]
    }
]
```

The body is an array of `order` objects. Each `order` object contains all the information needed to enable a successful pickup and delivery. Once the request successfully goes through, you'll see the new order in your order listing page (<https://dashboard.parcelizer.com/orders>).

#### Order Object Attributes <a href="#h_9a7e50f0f1" id="h_9a7e50f0f1"></a>

**orderRef\*** (string)

A (hopefully) unique reference number (typically an invoice number) that you use to identify the order. If you leave it blank, Parcelizer will automatically generate one for you.

***

**email** (string)

The email address of the customer (used for customer notifications).

***

**load** (number)

An integer representing the size or weight of the package.

***

**deliveryDate\*** (string)

The date the order (e.g. package) will be routed and delivered to the customer in YYYY-MM-DD format e.g. 2023-02-24.

***

**pickupName\*** (string)

Name of the customer you are picking up the order from. If you are picking up this order from a warehouse, use "Warehouse" as the pickup name.

***

**pickupAddress\*** (string)

The address of the customer you are picking up the order from. Make sure to use a full address that includes a zip code e.g. "111 E 2nd Ave, Vancouver, BC V5T 1B4, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field).

***

**pickupPhone** (string)

Phone number of the customer you are picking up this order from. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.

***

**deliveryName\*** (string)

Name of the customer you are delivering the order to e.g. "Helen Mckenzie".

***

**deliveryAddress\*** (string)

The address of the customer you are delivering this order to. Make sure to use a full address that includes a zip code e.g. "198 W 18th Ave, Vancouver, BC V5Y 2A5, Canada". Do not put the unit number or any other information in this field (you can put this in the notes field).

***

**deliveryPhone** (string)

Phone number of the customer you are delivering this order to. Remember to include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.

***

**notes** (string)

Extra information that might be helpful to the driver e.g. apartment address, customer preference etc go here. Shows up on the driver app.

***

**status\*** (string)

The status of the order. All orders sent via API should use status "draft" so that it can be added to a route plan later on.

***

**timeStart** (string)

The earliest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it only opens at 9 am, put "09:00" in this field.

***

**timeEnd** (string)

The latest time in hh:mm format you need to pick up this order. For example, if you are picking up an item from a store and it closes at 5 pm, put "17:00" in this field.

***

**deliveryTimeStart** (string)

The earliest time in hh:mm format you need to deliver this order. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "15:00" in this field.

***

**deliveryTimeEnd** (string)

The latest time in hh:mm format you need to deliver this order by. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "17:00" in this field.

***

**labelNames** (array)

An array of strings with the names of the [labels](https://intercom.help/parcelizer/en/articles/7217843-how-do-i-add-labels-to-my-orders) you want to add to your order. If you specify a label that does not exist on your Parcelizer account, the API will create one and add it to the order.

***

**fields** (object)

A hash of [custom fields](https://intercom.help/parcelizer/en/articles/6090451-how-do-i-add-custom-fields-to-my-notifications) and their attributes e.g. "company\_name": "pantagonia" that you'd like to associate with this order.

***

**requiredSkills** (array)

An array of driver skills (fields that let you match specific orders with drivers that are equipped to do those orders e.g. a driver with the "VIP" skill can pickup and deliver "VIP" orders) that you'd like to add to this order.

<br>


# Get order (API)

Use the Parcelizer API to retrieve information about a specific order

In Parcelizer, an order is a specific request to have an item picked up from one location and delivered to another (in the case of single stop orders, only the delivery location is used).

To retrieve an order by specifying its ID, you can use the Get Orders API:

**Endpoint** `GET` [https://api.parcelizer.com/ex/orders/{orderId}](https://api.parcelizer.com/ex/orders/%7BorderId%7D)

**Headers**\
api\_key: *YOUR\_API\_KEY* (taken from Settings > General Settings)

**Response**

```
{
    "routePlanType": "VRP",
    "orderCode": "PM2GAHZDN9Z",
    "orderRef": "PM2GAHZDN9Z",
    "requiredSkills": ["vip", "on-demand"],
    "deliveryDate": "2023-07-29T00:00:00.000Z",
    "deliveryTimeStart": "9:00",
    "deliveryTimeEnd": "11:00",
    "status": "COMPLETED",
    "errorDetails": [],
    "notes": "weight:  / time_window:  / door_code:",
    "driverNotes": "Delivered safely ",
    "packageWas": "Received by Person",
    "pickupEta": null,
    "pickupStatus": "ASSIGNED",
    "deliveryName": "Irma Henry",
    "deliveryAddress": "766 Calverhall St, North Vancouver, BC V7L 1X6, Canada",
    "deliveryLat": 49.3137055,
    "deliveryLng": -123.0513728,
    "deliveryPhone": "+6593654527",
    "deliveryEta": "22:48",
    "deliveryDuration": 15,
    "deliveryNotes": "pls leave package in lobby",
    "fields": {},
    "pods": [
        "https://parcelizer.s3.us-east-1.amazonaws.com/60e5c88f502c618b521d2565/ZRVLfZAJze0wZU2lOc3eQ.jpg"
    ],
    "signature": "https://api.parcelizer.com/ex/orders/64c3564336d82c1e3c709834/signature.jpg",
    "logs": [
        {
            "status": "ASSIGNED",
            "notes": "",
            "createdAt": "2023-07-28T05:46:59.684Z"
        },
        {
            "status": "DELIVERY_ARRIVED",
            "notes": null,
            "createdAt": "2023-07-28T05:48:43.063Z"
        },
        {
            "status": "COMPLETED",
            "notes": "Received by Person",
            "createdAt": "2023-07-28T05:49:42.021Z"
        }
    ],
    "company": "60e5c88f502c618b521d2565",
    "routePlan": "64c3563136d82c1e3c709802",
    "createdAt": "2023-07-28T05:46:43.276Z",
    "updatedAt": "2023-07-28T05:49:42.026Z",
    "labels": [],
    "_id": "64c3564336d82c1e3c709834",
    "driver": {
        "companies": [
            {
                "roles": [
                    "driver"
                ],
                "company": "60e5c88f502c618b521d2565"
            }
        ],
        "groups": [],
        "partnerNames": [],
        "name": "will-yvr",
        "email": "delivery.driver@afi.io",
        "startAddress": "1132 E Hastings St, Vancouver, BC V6A 1S2, Canada",
        "startLat": 49.2806937,
        "startLng": -123.080293,
        "skills": [],
        "phone": "+18077098998",
        "color": "00a2b9",
        "shiftStart": "08:00",
        "shiftEnd": "12:00",
        "speed": "NORMAL",
        "status": true,
        "createdAt": "2021-12-07T07:18:33.880Z",
        "updatedAt": "2023-07-28T23:07:59.383Z",
        "_id": "61af0ac95c292adbb74829c0"
    }
}
```

Note: The above JSON is representative of a single stop order. Pickup and delivery orders have a similar structure but have additional fields that describe the pickup stop.

### Order Object Attributes <a href="#h_a549b3cb3d" id="h_a549b3cb3d"></a>

**routePlanType** (string)

The type of route plan this order can be added to.

* VRP: for single stop orders that are routed with the Vehicle Routing Problem algorithm.
* PDP: for pickup and delivery orders that are routed with the Pickup and Delivery Problem algorithm.

***

**orderCode** (string)

The unique 11 digit alphanumeric code used to uniquely identify this order.

***

**orderRef** (string)

A (hopefully) unique reference number (typically an invoice number) that you can use to identify the order. If none is supplied, Parcelizer will set its value to be the same as `orderCode`.

***

**requiredSkills** (array)

An array of driver skills (fields that let you match specific orders with drivers that are equipped to do those orders e.g. a driver with the "VIP" skill can pickup and deliver "VIP" orders) that is associated with this order.

***

**deliveryDate** (string `ISO 8601`)

The date and time the order is scheduled to be delivered.

***

**deliveryTimeStart** (string)

The earliest time in hh:mm format you need to deliver this order. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "15:00" in this field.

***

**deliveryTimeEnd** (string)

The latest time in hh:mm format you need to deliver this order by. For example, if the customer specified that he wanted his package delivered between 3 pm and 5 pm, put "17:00" in this field.

***

**status** (string)

The status of the order. It can be one of:

* DRAFT: The order has not yet been added to a route plan.
* ERROR: There is missing or bad data associated with the order e.g. "pickup lat must be a latitude string or number" and the order cannot be added to a route plan
* GEOCODING: The order is being geocoded (Parcelizer uses the Google Maps API for this)
* UNASSIGNED: The order has been added to a route plan but has not been added to a route plan.
* ASSIGNED: The order has been assigned to a driver (either manually or via route optimization.
* UNSCHEDULED: Parcelizer tried to optimize routes and assign this order to a driver, but could not do so.
* GONG\_NEXT: The driver has marked on the app that he is heading directly to this order's pickup or delivery.
* SKIPPED: The driver has skipped a pickup or delivery on this order.
* PICKUP\_ARRIVED: The driver has arrived at the pickup location.
* PICKUP\_FAILED: The driver marked the pickup as failed.
* COLLECTED: The driver has successfully collected a package from the pickup location.
* IN\_TRANSIT: The driver has collected a package from the pickup location and has started heading to the next stop (he clicked "next stop" on the app).
* DELIVERY\_ARRIVED: The driver has arrived at the delivery location
* DELIVERY\_FAILED: The driver has marked the delivery as failed.
* COMPLETED: The driver has successfully completed both the pickup and delivery.

***

**errorDetails** (array)

An array of error message strings that explain why the order has a status of ERROR e.g. "pickup lat must be a latitude string or number".

***

**notes** (string)

Notes shown on the driver app to help your drivers complete the delivery successfully. These are typically instructions from customers e.g. "please leave the package in the lobby".

***

**driverNotes** (string)

Notes entered by the driver (on the app) when completing a delivery.

***

**packageWas** (string)

The delivery option selected by the driver. It can be one of:

* Received by person: Handed to a customer.
* Safe dropped: Placed somewhere safe where it can be retrieved by the customer later.

***

**pickupEta** (string)

The estimated arrival time at the pickup location.

***

**pickupStatus** (string)

The status of the pickup e.g. "PICKUP\_ARRIVED" (see the `status` field for a list of valid statuses.

***

**deliveryName** (string)

Name of the customer receiving the delivery.

***

**deliveryAddress** (string)

The address of the customer you are delivering this order to. Ideally, it includes a zip code e.g. "198 W 18th Ave, Vancouver, BC V5Y 2A5, Canada".

***

**deliveryLat** (number)

The geocoded (Parcelizer uses the Google Maps API) latitude of the delivery address.

***

**deliveryLng** (number)

The geocoded (Parcelizer uses the Google Maps API) longitude of the delivery address.

***

**deliveryPhone** (string)

Phone number of the customer you are delivering this order to. Ideally this will include the country code and plus sign e.g. +17789123456 for US/Canada numbers or +6593456789 for Singapore numbers.

***

**deliveryEta** (string)

The estimated arrival time at the delivery location.

***

**deliveryDuration** (number)

The service time at the delivery location (note: this is not the actual time spent by the driver at the location - this can be calculated by going to the `logs` object and taking the difference between the `DELIVERY_ARRIVED` and `COMPLETED` time stamps).

***

**deliveryNotes** (string)

Notes shown on the driver app to help your drivers complete the delivery successfully. These are typically instructions from customers e.g. "please leave the package in the lobby". This is a duplicate of the `notes` field.

***

**fields** (object)

A hash of [custom fields](https://intercom.help/parcelizer/en/articles/6090451-how-do-i-add-custom-fields-to-my-notifications) and their attributes e.g. "company\_name": "pantagonia" that you'd like to associate with this order.

***

**pods** (array)

An array of URL strings that link to the compressed proof of delivery ("pods") images e.g. <https://parcelizer.s3.us-east-1.amazonaws.com/60e5c88f502c618b521d2565/ZRVLfZAJze0wZU2lOc3eQ.jpg> used for photo and/or signature proof of delivery.

***

logs (array)

An array of `log` objects that describe events such as completion of a delivery.

*log object properties*

* `status` : the order status e.g. "COMPLETED" associated with the event.
* `notes` : any notes captured during the event e.g. the driver marks that a delivery was "received by person".
* `createdAt` : the ISO 8601 timestamp of the event.

***

**company** (string)

The uuid of the company that created this order (for internal Parcelizer use only).

***

**routePlan** (string)

The uuid of the route plan that this order is associated with (you can use this to retrieve information about the route plan using the Get Routeplan API.

***

**createdAt** (string `ISO 8601`)

The date and time that the order was created.

***

**updatedAt** (string `ISO 8601`)

The date and time that the order was last modified.

***

**labels** (array)

An array of strings with the names of the [labels](https://intercom.help/parcelizer/en/articles/7217843-how-do-i-add-labels-to-my-orders) associated with this order.

***

**\_id** (string)

The unique ID of the order. This is different from the `orderRef` property, which is the ID used by the customer. The underscore in "\_id" indicates that it serves as a primary key.

***

**driver** (object)

The driver associated with this order (if one is assigned).

driver object properties:

* `companies` : an array with a single object inside it that contains information about the company this driver belongs to.
* `groups` : not applicable to drivers.
* `partnerNames` : not applicable to drivers.
* `name` : the name of the driver.
* `email` : the email address of the driver.
* `startAddress` : the driver's start location (used in route optimization).
* `endAddress` : the driver's end location (used in route optimization).
* `startLat` / `startLng` : the starting location coordinates.
* `endLat` / `endLng` : the ending location coordinates.
* `skills` : an array of driver skills (used to match specific drivers with orders).
* `phone` : the phone number of the driver (used to dispatch routes via text message).
* `color` : the assigned color of the driver (used to color the driver's route).
* `shiftStart` : the driver's start time.
* `shiftEnd` : the driver's end time.
* `speed` : the relative speed of the driver (used to calculate ETAs)
* `status` : not applicable to drivers.
* `createdAt` : the date and time the driver was created.
* `updatedAt` : the date and time the driver was last modified.
* `_id` : the unique ID of the driver.

<br>


# Configure webhooks

Use webhooks to get real time updates from your Parcelizer account

Web hooks are one way to send automated messages or information to other apps. Parcelizer uses webhooks to notify your application whenever an important event (like a driver completing a stop) happens in your account. They are particularly useful for logging asynchronous events like when a customer’s delivery is completed, a route is dispatched, or when tracking driver activity.

### Why use Webhooks? <a href="#h_bc00967b7a" id="h_bc00967b7a"></a>

Suppose you pay your drivers at the end of each day for the number of completed deliveries they made. A webhook between Parcelizer and your payments system is triggered when a delivery is completed (`order.delivery.completed`). The JSON payload that is sent to your backend looks like this:

```
{
  "eventName": "order.delivery.completed",
  "eventData": {
    "orderId": "64c3564336d82c1e3c709834"
  }
}
```

Using the `orderId` field retrieved from the webhook payload, you can now call the Get Order API to find out which driver completed the order and credit his account for payment.

Endpoint `GET` [https://api.parcelizer.com/ex/orders/{orderId}](https://api.parcelizer.com/ex/orders/%7BorderId%7D)

Headers\
Content-Type: *application/json*\
api\_key: *YOUR\_API\_KEY* (taken from Settings > General Settings)

Response

```
{
    "routePlanType": "VRP",
    "orderCode": "PM2GAHZDN9Z",
    "orderRef": "PM2GAHZDN9Z",
    "requiredSkills": [],
    "deliveryDate": "2023-07-29T00:00:00.000Z",
    "deliveryTimeStart": "9:00",
    "deliveryTimeEnd": "11:00",
    "status": "COMPLETED",
    "errorDetails": [],
    "notes": "weight:  / time_window:  / door_code:",
    "driverNotes": "Delivered safely ",
    "packageWas": "Received by Person",
    "pickupEta": null,
    "pickupStatus": "ASSIGNED",
    "deliveryName": "Irma Henry",
    "deliveryAddress": "766 Calverhall St, North Vancouver, BC V7L 1X6, Canada",
    "deliveryLat": 49.3137055,
    "deliveryLng": -123.0513728,
    "deliveryPhone": "+6593654527",
    "deliveryEta": "22:48",
    "deliveryDuration": 15,
    "deliveryNotes": "weight:  / time_window:  / door_code:",
    "fields": {},
    "pods": [
        "https://parcelizer.s3.us-east-1.amazonaws.com/60e5c88f502c618b521d2565/ZRVLfZAJze0wZU2lOc3eQ.jpg"
    ],
    "signature": "https://api.parcelizer.com/ex/orders/64c3564336d82c1e3c709834/signature.jpg",
    "logs": [
        {
            "status": "ASSIGNED",
            "notes": "",
            "createdAt": "2023-07-28T05:46:59.684Z"
        },
        {
            "status": "DELIVERY_ARRIVED",
            "notes": null,
            "createdAt": "2023-07-28T05:48:43.063Z"
        },
        {
            "status": "COMPLETED",
            "notes": "Received by Person",
            "createdAt": "2023-07-28T05:49:42.021Z"
        }
    ],
    "company": "60e5c88f502c618b521d2565",
    "routePlan": "64c3563136d82c1e3c709802",
    "createdAt": "2023-07-28T05:46:43.276Z",
    "updatedAt": "2023-07-28T05:49:42.026Z",
    "labels": [],
    "_id": "64c3564336d82c1e3c709834",
    "driver": {
        "companies": [
            {
                "roles": [
                    "driver"
                ],
                "company": "60e5c88f502c618b521d2565"
            }
        ],
        "groups": [],
        "partnerNames": [],
        "name": "will-yvr",
        "email": "delivery.driver@afi.io",
        "startAddress": "1132 E Hastings St, Vancouver, BC V6A 1S2, Canada",
        "startLat": 49.2806937,
        "startLng": -123.080293,
        "skills": [],
        "phone": "+18077098998",
        "color": "00a2b9",
        "shiftStart": "08:00",
        "shiftEnd": "12:00",
        "speed": "NORMAL",
        "status": true,
        "createdAt": "2021-12-07T07:18:33.880Z",
        "updatedAt": "2023-07-28T05:48:34.195Z",
        "_id": "61af0ac95c292adbb74829c0"
    }
}
```

Your backend will then parse this data and credit the driver "will-yvr" (taken from the `driver.name` field with email address "<delivery.driver@afi.io>" for the completed delivery.

### Configuring your Webhook <a href="#h_70bf4b15e7" id="h_70bf4b15e7"></a>

To get started, head to Settings > Webhook Configuration and enter the url of the endpoint on your app that will listen to webhooks from Parcelizer. You can add an optional description e.g. "This endpoint triggers payments to drivers for completed stops") if you'd like.

[![](https://downloads.intercomcdn.com/i/o/764971129/748a7dc8938e255a58d8ade5/Settings+%283%29.jpg?expires=1757505600\&signature=83dc2b4b0a005ca3196489f901895f0203260103e2d467b329f884fa8e6b3e8a\&req=cyYjH85%2FnINWFb4V1XW4gWv9pXRDxXjrLkDkMBe40mL1b8oTDTh2dDEmL5fr%0API%2BWaoDwuQOc31ZUZIUL3uoO3w%3D%3D%0A)](https://downloads.intercomcdn.com/i/o/764971129/748a7dc8938e255a58d8ade5/Settings+%283%29.jpg?expires=1757505600\&signature=83dc2b4b0a005ca3196489f901895f0203260103e2d467b329f884fa8e6b3e8a\&req=cyYjH85%2FnINWFb4V1XW4gWv9pXRDxXjrLkDkMBe40mL1b8oTDTh2dDEmL5fr%0API%2BWaoDwuQOc31ZUZIUL3uoO3w%3D%3D%0A)

Hit \[Update] and your webhook is all set up. [Create a route plan](https://intercom.help/parcelizer/en/articles/5974503-how-to-create-a-route-plan) and start completing some stops to check if the webhook is firing correctly (a tool like [ngrok](https://ngrok.com/) or [RequestBin](https://pipedream.com/requestbin) is perfect for setting up a temporary webhook endpoint for testing).

### Supported Events <a href="#h_3ba298f155" id="h_3ba298f155"></a>

Parcelizer supports the following events with webhooks:

| Event Name                 | Trigger                                                             |
| -------------------------- | ------------------------------------------------------------------- |
| `routeplan.dispatch`       | When the user dispatches a route to drivers for the first time.     |
| `routeplan.dispatchUpdate` | When the user updates a route and dispatches it again.              |
| `order.pickup.arrived`     | When the driver presses the \[Arrive] button on a pickup stop.      |
| `order.pickup.completed`   | When the driver presses the \[Completed] button on a pickup stop.   |
| `order.pickup.failed`      | When the driver presses the \[Failed] button on a pickup stop.      |
| `order.delivery.arrived`   | When the driver presses the \[Arrive] button on a delivery stop.    |
| `order.delivery.completed` | When the driver presses the \[Completed] button on a delivery stop. |
| `order.delivery.failed`    | When the driver presses the \[Failed] button on a delivery stop.    |

If there is an event that you need to capture that is not listed here, please reach out to <support@parcelizer.com> and we'll try to support your use case.

<br>


# How do I change my default language?

Use Parcelizer in the language you are most comfortable with

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F7pexX4cYlTQmVMDLqTFz%2Fparcelizer_translation_dashboard.gif?alt=media&amp;token=411c3d12-c74e-43aa-8424-f0c1d60ede21" alt=""><figcaption></figcaption></figure>

Logistics is a business that operates on an international scale, involving the coordination and transportation of goods and services across different countries and regions, so its very possible that English is not your first language.

<figure><img src="https://downloads.intercomcdn.com/i/o/702628353/ff92efdec232b86caaf2c868/Parcelizer-Portal__3_.png?expires=1757505600&#x26;signature=10bc93ce853afef88ada001e048c8799a3942997819f7f2999f3d6bb996d71d1&#x26;req=cyAlEMt2noRcFb4V1XW4gWB4%2BIgS5mzMi2DD1ZIRB4g5fIkQEEoUTsMljpay%0AhFVLxLDfS2%2FbxczDiH95AcdExw%3D%3D%0A" alt=""><figcaption></figcaption></figure>

To change your default language, you need to get to the Settings page. click on your email address on the top right of the navigation bar and click on \[Settings]. This opens the Settings menu. Choose \[Language] on the left.

Next, use the dropdown menu to change your System Language from English to something else e.g. Dutch.

In the Translation panel, the left panel shows the English word used in Parcelizer e.g. "Route Plans" and in the right panel, the translation ,e.g. "Routeplannen". We use the [Google Translate API](https://cloud.google.com/translate/?utm_source=google\&utm_medium=cpc\&utm_campaign=japac-SG-all-en-dr-BKWS-all-super-trial-EXA-dr-1605216\&utm_content=text-ad-none-none-DEV_c-CRE_649077439811-ADGP_Hybrid%20%7C%20BKWS%20-%20EXA%20%7C%20Txt%20~%20AI%20%26%20ML_Translation%20AI_google%20translate%20api_main-KWID_43700075285325237-kwd-14329410560\&userloc_9062530-network_g\&utm_term=KW_google%20translate%20api\&gclid=CjwKCAjw5pShBhB_EiwAvmnNV60KuPP1jZ6LXRq5VWpUw1GETGOeHpadF7N9jYpqOdbkOK_8spLtRRoC2fcQAvD_BwE\&gclsrc=aw.ds) to generate these translations automatically, so they might not be good enough for a native speaker. To add your own translation, simply edit the translated word on the right and click \[Update] on the bottom right. To reset your translation, click \[Reset Default Translation].


# How do I add labels to my orders?

Organize your orders by tagging them with labels

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2Fw9zgmq8aNwLtgZAOivEJ%2Fparcelizer_add_label.gif?alt=media&amp;token=55e6f76f-c767-499f-bbb5-e98f94b1d540" alt=""><figcaption></figcaption></figure>

Labels can help you organize orders you've imported into Parcelizer. They are similar to folders in your favorite email client, but they allow for more flexibility since a single order may be associated with multiple label.

For example, say you have an order for a delivery to a customer that has not yet paid. You could mark the order as `unpaid`. A few days later, the customer makes payment so you then remove the `unpaid` label from the label and add the `paid` label instead. The next day, you plan to make deliveries for all the `paid` orders. You then use the search feature on the Orders Listing to filter for `paid` orders and add them to a new route plan. Here's how the above scenario works, step by step.

**Create a new label**

On the Orders Listing page (<https://dashboard.parcelizer.com/orders>), create a new order by clicking on the \[New Order] button on the top right and choose \[Single Order]. In the Order Info section, click the \[+] button under the Labels heading followed by \[Create New Label].

<figure><img src="https://downloads.intercomcdn.com/i/o/703373740/155a4e7815067134b7d69b73/Screen+Shot+2023-04-01+at+1.07.35+PM.png?expires=1757505600&#x26;signature=f6bc76fcdd329c427a9d91efe2a45034366666166d4da69d27007a895720bbd4&#x26;req=cyAkFc59moVfFb4V1XW4gUpNMWw%2BIOfwM8Mbt0urUd4LmnZCz0qgRakZCVMC%0AEcm%2BKyEYkqz%2FlAJpQ5edIC4nVw%3D%3D%0A" alt=""><figcaption></figcaption></figure>

**Give your label a name and color**

Next, choose a name for your label e.g. `unpaid` and a color. Click \[Create] to add the new label to the list. The new label will automatically be attached to your order.

<figure><img src="https://downloads.intercomcdn.com/i/o/703377661/4c055312b8c44a20195cab6f/image.png?expires=1757505600&#x26;signature=53c9d45f3f3218b209cea48afb44c7fe352ccedf331601dc2f950d27a6e0c925&#x26;req=cyAkFc55m4deFb4V1XW4gaxqdDqxrc0D%2FO2QMnO27OwxBZ27XIXTnM3ekipi%0A%2B703R76RgkcglVTYPaEFBTARlA%3D%3D%0A" alt=""><figcaption></figcaption></figure>

**Search by label name**

To search for an order with a specific label e.g. `paid` or combination of labels, click the \[Filter] button on the Orders Listing page (<https://dashboard.parcelizer.com/orders>) and select the \[+] button under Labels, followed by \[Apply].

<figure><img src="https://downloads.intercomcdn.com/i/o/703378975/645ab8e8acb77aea6b440307/image.png?expires=1757505600&#x26;signature=94d3fd696b907ecc4d7f926a5c6787ececf75924db1314d2bfc79544a8d2b003&#x26;req=cyAkFc52lIZaFb4V1XW4gUK14%2BQd69kbx%2Fyr1Ikmu7FGFG04Fhm%2BLYdAZPmT%0AFN5zGLfbkU9Oq8K6RFj9EcqW7g%3D%3D%0A" alt=""><figcaption></figcaption></figure>

This will bring up a list of all orders with that label. Do note that the the labels filter looks for unique label combinations e.g. searching for `paid` labels only brings up orders marked with a single `paid` label, while searching for `paid` `VIP` brings up orders with both `paid` and `VIP` labels attached.


# White labeling Parcelizer

How to add your own branding to the Parcelizer web app

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F1tPXaCCk5lHKD8k0h7mj%2Fparcelizer_white_label.gif?alt=media&amp;token=4d73e4d1-2c16-49ab-8936-27cdbc7a5fa6" alt=""><figcaption></figcaption></figure>

Here's how you can add your own logo and color scheme to the Parcelizer web app. Click on your email address on the top right of the navigation bar and click on \[Settings]. This opens the Settings menu. Choose \[Brand Settings] on the left.

<figure><img src="https://downloads.intercomcdn.com/i/o/703421073/db7076a1566dcfd9664c3cc6/image.png?expires=1757505600&#x26;signature=9dfe552ebacd4408bf35a9ada4098ff8da0016476b7a114d8cda8a10adf3a551&#x26;req=cyAkEst%2FnYZcFb4V1XW4gZvdm8P0XVzp3NsEAmcyAgqichHAks9ezy8XnNaG%0AJkyrvE7b%2FbXCja%2BCkS%2BlUwJyhw%3D%3D%0A" alt=""><figcaption></figcaption></figure>

On the Brand Settings page you'll be able to replace the Parcelizer logo with you own (a 400 x 100 pixel png file works best) and change the color scheme from the default purple.

<figure><img src="https://downloads.intercomcdn.com/i/o/703423566/420474d8ced9f03dd807f8d6/Screen+Shot+2023-04-01+at+3.49.23+PM.png?expires=1757505600&#x26;signature=0ca7a9918445460ffe49c6f1e6e4055f99625632a24a89bcc100363a67b1afcc&#x26;req=cyAkEst9mIdZFb4V1XW4gbhr17lRPVL3JJLgq52oTd16iSIsCbNDYbTdul4N%0AYVXcAEPN8CvKqn0%2BiZRB5YuWKw%3D%3D%0A" alt=""><figcaption></figcaption></figure>

Resetting the color scheme back to Parcelizer's defaults is easy - simply click the \[Remove Logo] button at the bottom of the Company Logo section of Brand Settings and revert the Primary Color to #7732EF (deep purple).

Note: Parcelizer's white label feature is only available to use on our [enterprise plan](https://www.parcelizer.com/pricing). Please contact <support@parcelizer.com> for access.


# How do I add additional orders to a driver's route?

Adding more orders to a driver's route that has already been optimized

Sometimes you might need to add an order to a route that has already been optimized. This is particularly common when dealing with last minute requests that come in after your routes have been planned. Here's how you can work these orders into an existing route plan.

The first thing to do is [add the order to your route plan](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-single-order). You'll see the order show up in the Unscheduled section at the top of the gannt chart. If you already know which driver you want to give the order to but want to make sure that Parcelizer's optimization engine fits the new order into his route in the most efficient way possible:

1. Drag the order to the left of the driver icon on the gantt chart
2. Lock the other drivers by clicking the padlock icon on the right of the driver's name
3. Hit the \[Optimize Route] button.

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2F7r4TWUn16FAI4YzPJyfs%2Fparcelizer_drag_drop_optimize.gif?alt=media&amp;token=cc761393-d4b6-4b8d-ad4e-b99a291a85aa" alt=""><figcaption></figcaption></figure>

Alternatively, if you know exactly where on the route you want your new order to go, drag the new order to the driver's route on the gantt chart and press \[Apply].

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FfVCCMwvAFewVIwDwz9ki%2Fparcelizer_gantt_chart_move%20(1).gif?alt=media&amp;token=8abf88e4-1f45-4e37-9249-334562cd8c08" alt=""><figcaption></figcaption></figure>

The route produced after you hit \[Apply] might not be optimal but it will follow the sequence of pickups and dropoffs you've set.<br>


# How do I search for a specific order?

Using Parcelizer's search feature to find orders that match certain attributes

<figure><img src="https://516589187-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5_c369XWfLdmAxhRGo%2Fuploads%2FaSp0p6vEsoWVGkOZ3LtB%2Fparcelizer_search_filter.gif?alt=media&amp;token=2974f015-1a3c-493d-b629-198825e00a88" alt=""><figcaption></figcaption></figure>

Parcelizer's search feature allows you to quickly find specific orders without having to sift through a long list of transactions, saving you valuable time and keeping you organized.

[![](https://downloads.intercomcdn.com/i/o/704642642/6149131d4255d261cd48300e/Screen+Shot+2023-04-04+at+12.22.34+AM.png?expires=1757505600\&signature=dd2b4a082aeb04e270130fe1150c6cbbf8a849e103a565444a1f55d06bd2e8f5\&req=cyAjEM18m4VdFb4V1XW4gYftE%2B2utL72x45sM29ISQCFRNbv%2Fy2o3Y8%2FzgJU%0AzdJ6DzgKkohTihUexaBn3Q6XPw%3D%3D%0A)](https://downloads.intercomcdn.com/i/o/704642642/6149131d4255d261cd48300e/Screen+Shot+2023-04-04+at+12.22.34+AM.png?expires=1757505600\&signature=dd2b4a082aeb04e270130fe1150c6cbbf8a849e103a565444a1f55d06bd2e8f5\&req=cyAjEM18m4VdFb4V1XW4gYftE%2B2utL72x45sM29ISQCFRNbv%2Fy2o3Y8%2FzgJU%0AzdJ6DzgKkohTihUexaBn3Q6XPw%3D%3D%0A)

Clicking on the \[Filter] button on the Orders Listing page (<https://dashboard.parcelizer.com/orders>) lets you filter for orders that match these search criteria:

| Field    | Notes                                                                                                                                                                                                                                    |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Type     | Single stop or pickup and delivery.                                                                                                                                                                                                      |
| Order ID | Order reference number automatically assigned when the order is created.                                                                                                                                                                 |
| Status   | One of: `draft`, `error`, `geocoding`, `unassigned`, `assigned`, `unscheduled`, `going next`, `skipped`, `pickup arrived`, `pickup completed`, `pickup failed`, `collected`, `in transit`, `delivery arrived`, `completed` and `failed`. |
| Pickup   | Name, address, date and phone fields.                                                                                                                                                                                                    |
| Delivery | Name, address, date and phone fields.                                                                                                                                                                                                    |
| Labels   | User generated [labels](https://intercom.help/parcelizer/en/articles/7217843-how-do-i-add-labels-to-my-orders) tagged to the order.                                                                                                      |

After pressing \[Apply], all orders that match your selected criteria are shown below.

<figure><img src="https://downloads.intercomcdn.com/i/o/704653412/5f3b304297c244f6bb34c88e/Screen+Shot+2023-04-04+at+12.35.06+AM.png?expires=1757505600&#x26;signature=da12ccfa6086a81b2480aee26c6a461efa8026318870358474d4c6bab9e69171&#x26;req=cyAjEMx9mYBdFb4V1XW4gRKZwNp8afxgEhbh1Fici%2F%2F%2Fij%2F931dLPfnNCwiw%0AeiWIHw710TluJTQFn%2B%2FMnfKnPA%3D%3D%0A" alt=""><figcaption></figcaption></figure>

Clicking \[Reset] clears your selection and returns you to the default view that shows all orders saved to your account.


# How can I include custom fields in my delivery notes?

Customizing delivery notes for your drivers

In this article, I'll explain how to add custom fields (also known as *variables*) to your delivery notes so that they show up on the driver app. This is particularly helpful if you need to add special instructions such as door codes or additional information such as package weight to each order.

Here's what the process look like:

<figure><img src="https://downloads.intercomcdn.com/i/o/765795269/8ed67b77c0534ade98065443/Screen+Shot+2023-06-17+at+6.52.37+AM.png?expires=1757505600&#x26;signature=85d3987ed31fb6ae32fefffb23ca004d42150c241d8c07c4e4c40f24062c6c42&#x26;req=cyYiEcB7n4dWFb4V1XW4gZBAzYxt22OYLzhu4OdQ67WUMcjRLW2lO6qcpBbR%0AsugXX97U1fsiviLVmc70YSe9gA%3D%3D%0A" alt=""><figcaption></figcaption></figure>

Suppose your drivers need to be able to see the door code at each delivery so that they can enter the building and safely leave their package inside the lobby, together with the weight and expected delivery time window. You've stored this information in a separate column on your CSV or XLS file under the column names `weight`, `time_window` and `door_code` ([parcelizer\_yvr\_sample-vrp\_custom\_fields.csv](https://downloads.intercomcdn.com/i/o/765796140/aeab207f0eb8f8ad0545af36/parcelizer_yvr_sample-vrp_custom_fields.csv?expires=1757484000\&signature=0bf38027eadfefcf6a45cf23c5f6b3a32a58dcd27cc9bb5569937c03a81de23f\&req=cyYiEcB4nIVfFb4X1HO4gYFCi3HWdQ1EmSKLucHikgSJfXulRyCcLMGW%2FkZz%0A)).

<figure><img src="https://downloads.intercomcdn.com/i/o/765796004/f657e15c876648e707223ec2/Screen+Shot+2023-06-17+at+6.42.06+AM.png?expires=1757505600&#x26;signature=7c6d2a5826eeb5c2bb19853e89860e5b7433a76118cdd7912274311648b7342d&#x26;req=cyYiEcB4nYFbFb4V1XW4gcolfmyRR38JY1We%2FPs5Hp1Ufdu1KQrFVeAUhf5S%0AVXhRRpDT3Qmd%2BSzsBXDtWiJlzQ%3D%3D%0A" alt=""><figcaption></figcaption></figure>

To add these fields to the delivery notes, first [create a route plan and import the spreadsheet](https://docs.packagelytics.com/quickstart-guide/how-to-add-orders-bulk-upload). Next, in the Delivery Notes row, type "weight:" and then click \[Add Attribute] to select the weight column. Repeat with "time\_window" and "door\_code". This dynamically adds these columns into the Delivery Notes field.

<figure><img src="https://downloads.intercomcdn.com/i/o/765805373/7de6e12e1fe97d2dcd212f71/Screen+Shot+2023-06-14+at+3.35.04+AM.png?expires=1757505600&#x26;signature=a1d0203c0dd177ad6e2e21c2a8696c5f9402718559bfd39dee2a784865a48a52&#x26;req=cyYiHsl7noZcFb4V1XW4gdH3kQX8MYmzrwPJq1gAPwUm4VfPxQFV4oYPHaN2%0AMaHpdazwTu9C5XGygAfmZeaC5g%3D%3D%0A" alt=""><figcaption></figcaption></figure>

Hit \[Done] on the bottom right to add the orders to your route plan. Now, when you look at the Order Detail View, you'll see your weight, time window and door code information included in the Delivery Notes field.

<figure><img src="https://downloads.intercomcdn.com/i/o/765807616/986306b517873eecffcf66c5/image.png?expires=1757505600&#x26;signature=f6cedf37a75fa2e4a96391863961a941672ad5b6c815a841913774080e3ecf88&#x26;req=cyYiHsl5m4BZFb4V1XW4gXgxd61%2FNzvbwxyIh9fzEpo%2FPUJ95AIcA0PvL8KZ%0ATbDTaEmsNJy8vUTE%2F%2Bbm0lVMZQ%3D%3D%0A" alt=""><figcaption></figcaption></figure>

These fields will also show up on the driver app once the order is dispatched to a driver. The next time you upload a spreadsheet, Parcelizer will remember the text and custom fields you added to driver notes so you won't need to repeat the process again.

{% file src="/files/ZUYX0IuuaAKV9LVqL1Vk" %}


