Pendo Tracking for Itinerary Planning
What's Being Tracked
The implementation captures user behavior across the entire Itinerary Planning workflow. Here's what PMs can analyze in Pendo:
1. Plan Execution (IP_Plan_Run)
When: User clicks "Run" to generate optimized plans
What you can answer:
-
How many users run On-Demand vs Routed planning?
-
How many shipments/routes are being optimized? (for usage metering/billing)
-
What % use Enhanced Routing (Google) vs Standard (VROOM)?
-
How many rely on placeholder drivers/routes vs real assignments?
-
What's the typical max shipments per driver setting?
-
Are users enabling workload balancing?
|
Property |
Meaning |
|---|---|
|
subFeature |
'on-demand' or 'routed' |
|
numShipmentsInput |
Count of shipments being optimized (billing metric) |
|
numRoutesInput |
Count of routes selected (routed mode only) |
|
enhancedRouting |
'OFF' (VROOM), or 'ON' (Google) |
|
numPlaceholders |
Count of placeholder drivers/routes |
|
numRealDriversOrRoutes |
Count of actual assigned resources |
|
usesPlaceholdersOnly |
true if only using placeholders |
|
goal |
Optimization goal selected |
💡 Billing Insight: Use
numShipmentsInputto track optimization volume per customer. This maps directly to Fleet Optimization API usage and can be used to calculate credits consumed.
2. Plan Saved (IP_Plan_Saved)
When: User saves their finalized plan
What you can answer:
-
What's the save rate after running plans?
-
How many shipments are typically planned per session?
-
Are users re-running plans before saving? (wasRerun)
-
How many shipments end up in Exceptions? (couldn't be planned)
|
Property |
Meaning |
|---|---|
|
subFeature |
'on-demand' or 'routed' |
|
entityCount |
Number of plans saved |
|
totalShipments |
Total shipments across all plans |
|
wasRerun |
User went back and re-ran the optimizer |
|
exceptionsCount |
Shipments that couldn't be assigned |
3. Navigation/Re-runs (IP_Step_NavigatedBack)
When: User clicks "Back" from results to re-configure
What you can answer:
-
How often do users re-run their plans?
-
At what step do they typically go back?
|
Property |
Meaning |
|---|---|
|
fromStep |
Step they navigated away from |
|
toStep |
Step they went back to |
|
willRerun |
true if returning to parameters (will trigger re-run) |
4. Map Pinning (IP_Map_Pin)
When: User pins drivers, routes, shipments, or plans to the map
What you can answer:
-
How often do users pin items to the map?
-
At what stage of the workflow do they pin? (Shipments → Parameters → Results)
-
Do they pin individual items or use "Pin All"?
|
Property |
Meaning |
|---|---|
|
action |
'map-pin', 'map-unpin', 'map-pin-all', 'map-unpin-all' |
|
subFeature |
'on-demand', 'routed', 'timeline-view', or 'grid-view' |
|
entityType |
'driver', 'route', 'shipment', or 'plan' |
|
page |
'shipments', 'parameters', or 'results' |
5. View Usage (IP_View_Interaction)
When: User interacts with Timeline View or Grid View (non-pinning actions)
What you can answer:
-
Do users reorder driver/route groups?
|
Property |
Meaning |
|---|---|
|
subFeature |
'timeline-view' or 'grid-view' |
|
action |
'reorder-groups' |
6. Manual Changes (IP_Shipment_Moved, IP_Driver_Assigned, IP_Driver_Unassigned, IP_Plan_ManualChange)
When: User manually moves shipments or changes assignments
What you can answer:
-
How often do users override the optimized results?
-
Are they rescuing shipments from Exceptions? (fromExceptions)
-
How many shipments are moved at once?
-
Which view do they make changes in?
|
Property |
Meaning |
|---|---|
|
subFeature |
View or plan type |
|
entityCount |
Number of shipments moved |
|
fromExceptions |
true if moving from Exceptions group |
|
fromGroup / toGroup |
Source and destination (timeline drag-drop) |
7. Parameter Changes (IP_Parameter_Changed)
When: User modifies any planning parameter
What you can answer:
-
Which parameters have low change rates? (defaults may be good)
-
Which parameters are frequently changed? (may need better defaults)
-
Are on-demand vs routed users configuring differently?
-
Which fields do users change when re-running? (isRerun: true)
|
Property |
Meaning |
|---|---|
|
subFeature |
'on-demand' or 'routed' |
|
fieldName |
e.g., 'maxShipmentsPer', 'enhancedRouting', 'goal', etc. |
|
isRerun |
true if user already visited results and came back to change config |
Tracked fields: maxShipmentsPer, numPlaceholders, startTime, endTime, goal, serviceTimePerStop, gracePeriodPerStop, serviceTimePerDelivery, gracePeriodPerDelivery, enhancedRouting, driverWorkloadBalancing, driverWorkloadBalancingMethod
8. Warning Friction (IP_Warning_Friction)
When: User encounters a warning dialog and chooses to go back rather than proceed
What you can answer:
-
How often do warnings cause users to pause or reconsider?
-
Which warnings create the most friction in the workflow?
-
Are GPS issues a barrier to adoption?
-
Do capacity limits cause users to adjust their approach?
-
Compare friction rates between on-demand vs routed
|
Property |
Description |
|---|---|
|
feature |
'itinerary-planning' |
|
action |
'warning-friction' |
|
category |
'workflow' |
|
subFeature |
'on-demand' or 'routed' |
|
warningType |
Type of warning that caused friction (see below) |
Warning Types Tracked:
|
warningType |
When It Fires |
Extra Data |
|---|---|---|
|
'missing-gps' |
User heeds GPS warning and goes back to fix |
driversAffected |
|
'all-resources-maxed' |
Blocked – all drivers/routes at capacity |
resourcesAffected |
|
'exceeded-limits' |
User heeds exceeded limits warning |
resourcesAffected |
|
'insufficient-capacity' |
User heeds insufficient capacity warning |
totalShipments, remainingCapacity |
9. Plan Failed (IP_Plan_Failed)
When: The optimization service returns an error and the plan cannot be generated
What you can answer:
-
How often do plans fail at the service level?
-
What error types are most common?
-
Are users hitting the location limits frequently?
-
Compare failure rates between on-demand vs routed
-
Correlate failures with input size (shipments, drivers/routes)
|
Property |
Description |
|---|---|
|
feature |
'itinerary-planning' |
|
action |
'plan-failed' |
|
category |
'workflow' |
|
subFeature |
'on-demand' or 'routed' |
|
errorType |
Type of failure (see below) |
|
httpStatus |
HTTP status code from service |
|
numShipmentsInput |
Number of shipments sent to service |
|
numResourcesInput |
Number of drivers/routes sent to service |
Error Types Tracked:
|
errorType |
When It Fires |
Notes |
|---|---|---|
|
'too-many-locations' |
Exceeded max allowed locations |
User shown limit warning dialog |
|
'service-error' |
Any other service failure |
Includes 400, 500 errors, timeouts, etc. |
Usage Metering & Billing Analysis
For credit-based billing aligned with Google Fleet Optimization API costs:
|
Metric |
How to Calculate in Pendo |
|---|---|
|
Total shipments optimized |
Sum of |
|
Optimization runs per account |
Count of |
|
Average shipments per run |
Average of |
|
Enhanced routing usage |
Filter |
|
On-demand vs Routed split |
Group by |
💡 Example Query: To calculate monthly optimization volume for billing, aggregate
numShipmentsInputfrom allIP_Plan_Runevents per account per month.
Pendo Dashboard Tips
-
Filter by feature: 'itinerary-planning' to see all IP events
-
Group by category to separate workflow metrics from interaction metrics
-
Compare subFeature: 'on-demand' vs 'routed' for adoption analysis
-
Look at fromExceptions: true to measure how often the optimizer fails
-
Track wasRerun: true to identify friction in the planning flow
-
Aggregate fieldName on parameter events to find which defaults need tuning
-
Filter IP_Parameter_Changed by isRerun: true to see what users change when re-configuring
-
Group IP_Map_Pin by page to compare pinning at different workflow stages (shipments/parameters/results)
-
Sum numShipmentsInput on IP_Plan_Run to track optimization volume for billing/credits
Event Quick Reference
|
Event Name |
Category |
Key Insight |
|---|---|---|
|
IP_Plan_Run |
workflow |
Planning started (includes shipment count for billing) |
|
IP_Plan_Saved |
workflow |
Planning completed |
|
IP_Warning_Friction |
workflow |
User backtracks due to warnings |
|
IP_Step_NavigatedBack |
navigation |
User re-ran planning |
|
IP_Map_Pin |
interaction |
Map pinning (with page context: shipments/parameters/results) |
|
IP_View_Interaction |
interaction |
Group reordering |
|
IP_Shipment_Moved |
interaction |
Manual overrides |
|
IP_Driver_Assigned |
interaction |
Manual assignments |
|
IP_Driver_Unassigned |
interaction |
Removed assignments |
|
IP_Plan_ManualChange |
interaction |
Any manual optimization |
|
IP_Parameter_Changed |
config |
Parameter tuning (with re-run context) |