Route Planner for Field Sales, Service, Deliveries

Plan routes weeks ahead for groups of field sales reps, technicians or vehicle fleet

Understanding Route Planner’s Concept

Mapsly Route Planner is a powerful and flexible tool for planning optimal daily routes for a group of traveling professionals or fleet of vehicles that need to visit a group of locations with the given constraints. The tool can be used to plan:

  • visits to leads and accounts for field sales reps;
  • pickups and deliveries for a fleet of vehicles;
  • field jobs for technicians, surveyors and similar traveling workers;

Those are special cases of the Vehicle Routing Problem and differ only in terminology and applicable case-specific parameters.

The tool uses the following object types and parameters:


A Mapsly user traveling by car or truck. Supported parameters (constraints):


A Shift is a time window when the Vehicle is allowed to fulfill Jobs. In its simplest case, it’s a working day of a sales rep. The set of Shifts define the planning horizon for a Vehicle. A Shift contains

  • start time,
  • start location (start of the route),
  • end time,
  • [optional] end location (end of the route),
  • [optional] time window for the break; [optionally,] you may indicate the location of the break.

The following optional parameters may be set for a Vehicle, which mostly make sense in case of a car/truck, that will influence the planning:


A multi-dimensional metric showing Vehicle’s payload at the start of a Shift, which are then consumed by delivery-type Jobs based on their Demand metric. A Vehicle will be scheduled for a Job only if its unused Capacity >= the Job’s Demand.


A Vehicle may have any combination of the 3 types of cost:

  • fixed cost per shift,
  • cost per minute of travel,
  • cost per mile/km of travel.

When cost(s) are defined, the Planner will be aiming to minimize the total cost the all routes in the Planning session.


A Skill is a tag on the Vehicle indicating that the Vehicle is allowed to do a Job that requires this Skill. If a Job requires multiple Skills, a Vehicle must have all these Skills to be “compatible” with the Job.

Max distance

Maximum distance a Vehicle is allowed to travel in one Shift.

Max time

Maximum time per one Shift: a time span between the actual start time of the route to the finish time of the route.

Truck profile

A set of parameters defining hazardous materials shipped by the trucks, such as explosives, gas and materials harmful to water, as well as physical attributes of the truck such as weight limit, weight per axle, height, width and length; and the tunnel category option which can be used to avoid certain types of tunnels.


A visit to a location, or several visits all or none of which must be scheduled within the same Shift (in case of pickup-delivery pair). In its simplest case, a Job is a Lead or Account to be visited by a sales rep. Supported parameters (constraints):

Job Type

Can be delivery, pickup, pickup-delivery pair of locations, or a complex sequence of pickup locations followed by delivery locations.


A Place is a location that must be visited. In case of a sales rep route, it can be addresses of Leads or Accounts to be visited; in case of a delivery service, it can be a pickup or a delivery location(s). Each Place represents one location. All Places within a Job will be scheduled for visit within the same Shift (“along the same route”), or none of them.


Date/time windows when a Vehicle is allow to visit Job’s location(s).


Used in conjunction with the Capacity parameter in Vehicles. Determines how much the unused Capacity of a Vehicle will be reduction after a delivery-type Job is done; or what the unused Capacity of a Vehicle must be in order to fulfill a pickup-delivery-type Job.


A Skill is a tab on the Job indicating that only a Vehicle with this Skill can do this Job. A Job may require multiple Skills at once, in which case only Vehicles that have all these Skills can be assigned to this Job.

Planning Routes

Planning routes for the logged in Mapsly user

Planning a route for the logged in Mapsly user is as simple as

  • circling a group of map markers with a Lasso,
  • clicking Add to Route planner
  • and clicking Plan routes in the Planner.

Planner will:

  • build routes for each day using historic traffic information,
  • save them as draft routes named “{Name from the Planner}: {route date}”,
  • show them in the map with a different color per day.

When you click Save routes, Planner will save the routes so they become available for loading into the Route pane.

Default parameters that influence route planning

When building routes, the Planner will use the following default setting:

  • user is available for travel Monday-Friday 8 am – 5 pm (for the current day: from now to 5 pm), with a 12 pm – 1 pm (1-hour) break, and travels by car;
  • routes will start and end at the user’s current location (if the current position cannot be determined, the user will be prompted to enter the starting address or point it on the map);
  • all jobs (records of any objects added to the Planner) have one Place each, which can be visited at any time;
  • no additional restrictions (like car/truck Capacity, user Skills and Cost metrics).

These default settings can be changes in the Mapsly user profile. Mapsly admins can also change these parameters for all Mapsly users.

Methods of adding points to Route Planner

Just as with Express routes, you have multiple ways of adding records to the Planner apart from Lasso:

  • bulk-add records from the table by selecting them and clicking Add to Route Planner in Group actions (or add all records from the table with this action without pre-selecting records),
  • click Add to Route planner in the table record’s context menu,
  • click Add to route and then selecting Route planner in the record’s map pop-up or full-page record viewer.

Route statistics

Mapsly offers statistics about the cost, distance and travel time per route and for the entire planning session.

Adding route points to user’s calendar

For integrations that support Single Sign-On (like Zoho CRM, SalesForce), route points can be bulk-added to the CRM as calendar events linked to appropriate records (Lead, Account, Contact or Deal/Opportunity).

Planning routes for multiple Mapsly users

Building routes for multiple users is as easy as adding required Mapsly users in the Planner before clicking Build routes. You can add users one by one, of bulk-add them by user role. Planner will be using their personal Vehicle settings when building routes.

After the routes are build, you may check the Notify users of new routes checkbox to send users notification emails with the list of their new routes.

Handling complex scenarios using constraints

Overriding Vehicles’ Shifts, Capacity and Skills

To override a Mapsly user’s working day (travel availability) for particular days, create a custom CRM object with an API name VehicleParamOverrides and make sure it’s imported into Mapsly. The object must have the following fields:

Required fields (cannot be absent or contain null values):

  • UserID (text; lookup: User)
  • DateFrom (required)
  • DateTo (required)

Overriding fields (can be absent or contain null or empty text values)

  • ShiftStartTime (text: “HH:mm”)
  • ShiftEndTime (text: “HH:mm”)
  • ShiftStartAddress (text)
  • ShiftStartLatitude (text)
  • ShiftStartLongitude (text)
  • ShiftStartAddress (text)
  • ShiftStartLatitude (text)
  • ShiftStartLongitude (text)
  • BreakStartTime (text: “HH:mm”)
  • BreakEndTime (text: “HH:mm”)
  • BreakAddress (text)
  • BreakLatitude (text)
  • BreakLongitude (text)
  • Skills (multi-select lookup)
  • Capacity (text)
  • CostFixed (float)
  • CostKm (float)
  • CostHour (float)

Override a user’s Vehicle default profile settings for a certain period of dates by creating records with appropriate DateFrom/DateTo/User and filling in the relevant overriding fields. Fields that do not need to be overridden can be absent or contain null values or empty text values.

API names of SalesForce fields may contain __c at the end (like DateFrom__c).

At least one overriding field must exist.

At least one non-empty/non-null value must be defined in a record.

If you need to have multiple Shifts per day, create several records with the same or overlapping DateFrom-DateTo periods.

To check if Mapsly recognized the object and to confirm that it’s field structure is correct, make sure the Route Planner settings shows Vehicle param overrides: Enabled.

Setting and overriding Jobs’ Demand, Times and Skills

By default, a record added to the Route planner is assumed to be a delivery-type Job with a Demand of 1 and location at the object’s pin address, can be visited at any time and does not not require any Skills.

You can override Job type, Demand, availability window, pickup and delivery location and required Skills for a record of any object by adding custom fields with these constraints to the object in your CRM and selecting them for the given object in the Object constraints section of the Route Planner settings. Overriding fields must meet the following requirements:

  • Job type: text or picklist containing one of the following values: pickup, delivery, pickup-delivery
  • Demand: text containing one or multiple metrics separated by a comma: “10,200”
  • Skills: picklist or multi-picklist
  • Available From: start of the availability interval; text “HH:mm” (usually used for objects like Accounts that can be visited multiple times) or datetime (usually used for objects like Order that are visited only once). Must be present if Availability To is present.
  • Available To: end of the availability interval. Must be present if Availability From is present.
  • Pickup at: text or Mapsly address field overriding the pickup location for pickup– and pickup-delivery-types of Jobs. 
  • Delivery at: text or Mapsly address field overriding the delivery location for delivery– and pickup-delivery-types of Jobs. 

For objects that are visited regularly (like Accounts) Availability window, Skills and Demand can be overridden for a certain periods of dates. To do this, create a custom CRM object with the API name JobParamOverrides (make sure it’s imported into Mapsly). The object must have the following fields:

Required fields (cannot be absent or contain null values):

  • ObjectApiName (text; references the object this record overrides)
  • RecordID (text; references the record it overrides)
  • DateFrom (datetime; first date of the overridden period)
  • DateTo (datetime; last date of the overridden period)

Optional fields (can be absent or contain null or empty text values)

  • AvailableFrom (text: “HH:mm”)
  • AvailableTo (text: “HH:mm”)
  • Demand (text containing one or multiple metrics separated by a comma: “10,200”)
  • Skills (picklist or multi-picklist)

If you need to have multiple availability time windows for a particular record of an object, create several records with the same ObjectApiName/RecordsID, and the same or overlapping DateFrom-DateTo periods, and indicate the required availability in their TimeFrom/TimeTo fields. Please note that Demand and Skills values cannot be different for the same ObjectApiName/RecordsID within a day.

To check if Mapsly recognized the object and to confirm that it’s field structure is correct, make sure the Route Planner settings shows Job param overrides: Enabled.

Jobs with multiple pickups and deliveries (coming soon)

Currently, Jobs that require more than one pickup or delivery are not supported but this feature is coming soon. Please contact us to inquiry about the timing and join the Early Access program, and we’ll notify you once the feature is available.

Planning session limitations

Truck profiles. While you may have any number of Truck profiles in Mapsly, the Planner can use not more than 35 in one planning session.

Jobs. The Planner can plan not more than 250 Jobs in one planning session.

Related Features

View positions of Mapsly users on map

Mapsly admins can view real-time positions of Mapsly users on the map (for users who enabled location tracking in their Mapsly profiles) and check them against their current (today’s) routes.

Open records in CRM mobile app from Mapsly

For CRMs that support deep linking (like Zoho CRM), you can open your CRM records in its mobile app by clicking Open in {CRM name} button in the record’s view screen, map pop-up and context menu in the Table view.

Trigger custom actions from the map

Using Mapsly’s two-way deep native API integration with CRMs, a variety of custom actions, like SMS notifications upon delivery, can be implemented using custom fields in objects on route.

Custom fields automatically become available for viewing and editing in Mapsly. Updating them in Mapsly can be used to trigger OnUpdate events/workflows in the CRM and provide necessary input data to the action.

For example, to enable an SMS to be sent upon a delivery from Mapsly, add a Send SMS checkbox field to your CRM’s Order  object and implement an OnUpdate workflow/trigger invoked when an Order’s Send SMS switches from unchecked to the checked state and your CRM’s scripting environment (Deluge, Apex) to send the SMS to the Order’s phone number via your SMS provider’s API.