Stop Event Schema
Model
Stop
Stop =
object
The data that will be exported on all stop webhook events, i.e., those with type stop.*.
Example
{
"id": "teams/deOCJ3JCXZhpKNCVAC7o/routes/gjaqksJIa26qGPzsgBXT/stops/rpX5zK2kRFlIfwREp1js",
"plan": {
"id": "zeOCJaJCzZhpKVCVAC9o",
"title": "Tue, Nov 22 Route 1",
"driverCount": 1
},
"route": {
"id": "gjaqksJIa26qGPzsgBXT",
"title": "Tue, Nov 22 Route 1",
"stopCount": 28,
"state": {
"completed": false,
"completedAt": null,
"distributed": true,
"distributedAt": 1669153050,
"notifiedRecipients": false,
"notifiedRecipientsAt": null,
"started": false,
"startedAt": null
},
"driver": {
"name": null,
"email": "verygooddriver@spoke.com",
"phoneNumber": null
}
},
"address": {
"address": "Very nice St., 150 - Nice Neighbourhood, Campinas - SP, 130876, Brazil",
"placeId": "1cda3f263368264eefbb",
"latitude": -22.12345,
"longitude": -47.12345,
"placeTypes": [
"street_address"
],
"addressLineOne": "Very nice St., 150",
"addressLineTwo": "Nice Neighbourhood, Campinas - SP, 130876, Brazil"
},
"driverIdentifier": "driveremail@spoke.com",
"estimatedTimeAtStop": null,
"notes": null,
"orderInfo": {
"products": ["Taco"],
"sellerName": "Sam's Taco Truck",
"sellerOrderId": "ON-2301",
"sellerWebsite": "https://sams.taco"
},
"packageCount": 5,
"placeInVehicle": null,
"type": "stop",
"activity": "delivery",
"recipient": {
"email": "alvena.schulist33@spoke.com",
"externalId": "The recipient's ID on your system",
"name": "Alvena Schulist",
"phone": "+1-555-555-5555"
},
"deliveryInfo": {
"state": "unattempted",
"attempted": false,
"photoUrls": [],
"succeeded": false,
"signeeName": null,
"attemptedAt": null,
"signatureUrl": null,
"attemptedLocation": null,
"recipientProvidedNotes": null,
"driverProvidedInternalNotes": null,
"driverProvidedRecipientNotes": null
},
"packageLabel": null,
"eta": {
"eta": 1669153050,
"earliestTime": 1669152050,
"latestTime": 1669154050
},
"stopPosition": 1,
"trackingLink": "https://track.spoke.com/123456789",
"webAppLink": "https://dispatch.spoke.com/view-route?routeId=gjaqksJIa26qGPzsgBXT&planId=gjaqksJIa26qGPzsgBXT&stopId=rpX5zK2kRFlIfwREp1js&startsAt=1670382000"
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
The stop identifier. | |
|
Object containing the address of the stop. | ||
|
|
Either email or phone of a driver. This information is provided in spreadsheets imports to force a specific stop in a plan to be distributed to a specific driver. Default | |
|
|
Time that the driver estimate to spend on the stop to do his job (deliver a parcel, visit a client, etc) in seconds. A value only needs to be provided when overriding the user's preferences. Default | |
|
|
Notes for the delivery. Default | |
|
|
Information of the order made by the recipient. Default | |
|
|
Amount of packages to be delivered in the stop. Default | |
|
|
The place where the package is in the vehicle of the driver. Default | |
|
|
The type of the stop.
| |
|
|
The recipient of the delivery. | |
|
|
The activity performed at the stop by the driver. Default | |
|
|
The package identifier used for drivers to identify the package associated with the stop. A number is uniquely generated by clients, but drivers can edit it as necessary Default | |
|
|
Information about the delivery of the package. Default | |
|
|
Information about the plan related to the route Default | |
|
Information about the route containing the stop. | ||
|
Estimated time of arrival at the stop. | ||
|
|
Stop position in the route. If the stop has the type 'start', it will be 0.
All the 'stop' type stops will start at 1. The 'end' type stop will be the
last position in the route. Note: This value is the position of the
stop in the optimized route, if the driver completes stops in a different
order, this field will not reflect that, if needed to order the stops
by the actual delivery order when not following the optimized route, use
the | |
|
|
Tracking link for this stop. Only available after the route is started and not available for 'start' and 'end' stops. | |
|
|
Link to the stop in Spoke Dispatch Web App |
Fields
StopAddress
StopAddress =
object
Data used to identify the stop location.
Example
{
"address": "Very nice St., 150 - Nice Neighbourhood, Campinas - SP, 130876, Brazil",
"placeId": "1cda3f263368264eefbb",
"latitude": -22.12345,
"longitude": -47.12345,
"placeTypes": [
"street_address"
],
"addressLineOne": "Very nice St., 150",
"addressLineTwo": "Nice Neighbourhood, Campinas - SP, 130876, Brazil"
},
Properties
| Property | Type | Description |
|---|---|---|
|
|
Combined address string. Default '' It will always be an empty string | |
|
|
First line of the address. Default | |
|
|
Second line of the address. Default | |
|
|
Latitude coordinate of the stop location. Default | |
|
|
Longitude coordinate of the stop location. Default | |
|
|
The identifier of the Place corresponding to this stop on Google Places. Default | |
|
|
Array of strings that is provided by the AutoCompleteAPI. Default |
StopRecipient
StopRecipient =
object
Information on the recipient of the package.
Example
{
"email": "alvena.schulist33@spoke.com",
"externalId": "The recipient's ID on your system",
"name": "Alvena Schulist",
"phone": "+1-555-555-5555"
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
Email address of recipient Default | |
|
|
Id of recipient in external system of the team's company Default | |
|
|
Full name of recipient Default | |
|
|
Phone number of recipient Default |
DeliveryInfo
DeliveryInfo =
object
Information about the delivery of the package.
Example
{
"state": "delivered_to_recipient",
"attempted": true,
"photoUrls": [],
"succeeded": true,
"signeeName": "",
"attemptedAt": 1669151179,
"signatureUrl": null,
"attemptedLocation": {
"latitude": -3.1234,
"longitude": -38.7654
},
"recipientProvidedNotes": null,
"driverProvidedInternalNotes": "",
"driverProvidedRecipientNotes": ""
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
Default | |
|
|
Timestamp in seconds of when the driver attempted the delivery. Default | |
|
|
The location this stop was attempted at Default | |
|
|
Internal notes provided by the driver. Default | |
|
|
Recipient notes provided by the driver. Default | |
|
|
URLs of proof of delivery photos taken and uploaded by the driver. The URLs here can return not found if the driver mobile app is still uploading the photos, but once the upload is complete, the URL will contain the image. Default | |
|
|
Notes provided by the recipient. Default | |
|
|
URL of the recipient signature. The URL here can return not found if the driver mobile app is still uploading it, but once the upload is complete, the URL will contain the image. Default | |
|
|
Signee name Default | |
|
Default | ||
|
|
If the delivery was successful. Default |
RouteData
RouteData =
object
Information about the route containging the stop.
Example
{
"id": "gjaqksJIa26qGPzsgBXT",
"title": "Tue, Nov 22 Route 1",
"stopCount": 28,
"state": {
"completed": false,
"completedAt": null,
"distributed": true,
"distributedAt": 1669153050,
"notifiedRecipients": false,
"notifiedRecipientsAt": null,
"started": false,
"startedAt": null
},
"driver": {
"name": null,
"email": "verygooddriver@spoke.com",
"phoneNumber": null
}
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
The unique identifier of the route. | |
|
|
The title of the route. Default | |
|
|
Number of stops in the route. Default | |
|
|
Current state of the route. Default | |
|
|
The route driver. |
RouteState
RouteState =
object
The current state of the route when the event was generated.
Example
{
"completed": false,
"completedAt": null,
"distributed": true,
"distributedAt": 1669153050,
"notifiedRecipients": false,
"notifiedRecipientsAt": null,
"started": false,
"startedAt": null
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
If route is completed or not. Default | |
|
|
Timestamp in seconds of when route was completed. Default | |
|
|
If route was distributed or not. Default | |
|
|
Timestamp in seconds of when route was distributed. Default | |
|
|
Whether recipients were notified or not. Default | |
|
|
Timestamp in seconds of when recipients were notified. Default | |
|
|
If driver started the route or not. Default | |
|
|
Timestamp in seconds of when route was started by the driver. Default |
DriverData
DriverData =
object
Data on the driver of the route
Example
{
"name": "John Doe",
"email": "john.doe@spoke.com",
"phone": "+1 555 555 5555",
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
Full user name, no length restrictions yet Default | |
|
|
User email Default | |
|
|
Phone number in E.164 format Default |
PlanData
PlanData =
object
Plan data related to the route of the stop
Example
{
"id": "zeOCJaJCzZhpKVCVAC9o",
"title": "plan_123",
"driverCount": 5,
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
The unique identifier of the plan. | |
|
|
Title of the plan. | |
|
|
Number of drivers in the plan, the same as the number of routes created from the same plan. Default |
OrderInfo
OrderInfo =
object
Information of the order made by the recipient.
Example
{
"products": ["Taco"],
"sellerName": "Sam's Taco Truck",
"sellerOrderId": "ON-2301",
"sellerWebsite": "https://sams.taco"
}
Properties
| Property | Type | Description |
|---|---|---|
|
|
Name of the products to be delivered. Default [] To get the products to be split in this array, whether using the Web UI or
submitting via a spreadsheet, use a | |
|
|
The ID of the order created by the seller that is usually shared with the client. Default | |
|
|
Name of the seller where the user bought the products. Default | |
|
|
Website where the user bought the products. Default |
PlaceInVehicle
PlaceInVehicle =
object
Where in the vehicle the package was placed.
Properties
| Property | Type | Description |
|---|---|---|
|
|
Default | |
|
|
Default | |
|
|
Default |
ETAData
ETAData =
object
Estimated time of arrival at the stop.
Example
{
"eta": 1669153050,
"earliestTime": 1669152050,
"latestTime": 1669154050
}
It is important to note that this is not a guarantee that the driver will arrive at the stop at the specified time. It is only an estimate, especially if the driver has not started the route yet, as the estimated start time is then based on the expected start time of the route.
Properties
| Property | Type | Description |
|---|---|---|
|
|
The estimated time of arrival in seconds since epoch. | |
|
|
The estimated earliest possible window time of arrival in seconds since epoch. | |
|
|
The estimated latest possible window time of arrival in seconds since epoch. |
Location
Location =
object
Location coordinates.
Properties
| Property | Type |
|---|---|
|
| |
|
|
Fields
delivery: The driver has to deliver the packagepickup: The driver has to pick up the package
StopActivity
StopActivity =
"delivery"|"pickup"
The activity performed at the stop by the driver.
Fields
unattempted: The delivery has not been attempted yet.delivered_to_recipient: The delivery was successfully delivered to the recipient.delivered_to_third_party: The delivery was successfully delivered to a third party.delivered_to_mailbox: The delivery was successfully delivered to a mailbox.delivered_to_safe_place: The delivery was successfully delivered to a safe place.delivered_to_pickup_point: The delivery was successfully delivered to a pickup point.delivered_other: The delivery was successfully delivered with an unknown method.picked_up_from_customer: The delivery was successfully picked up from the customer.picked_up_unmanned: The delivery was successfully picked up without interaction with the customer.picked_up_from_locker: The delivery was successfully picked up from a locker.picked_up_other: The delivery was successfully picked up with an unknown method.failed_not_home: The delivery failed because the recipient was not at home.failed_cant_find_address: The delivery failed because the address could not be found.failed_no_parking: The delivery failed because there was no parking space available.failed_no_time: The delivery failed because the driver did not have enough time to complete the delivery.failed_package_not_available: The delivery failed because the package was not available on the truck.failed_missing_required_proof: The delivery failed because the driver did not collect the required proof of delivery.failed_payment_not_received: The delivery failed because the driver did not collect the payment.failed_other: The delivery failed for an unknown reason.
DeliveryState
DeliveryState =
"delivered_to_recipient"|"delivered_to_third_party"|"delivered_to_mailbox"|"delivered_to_safe_place"|"delivered_to_pickup_point"|"delivered_other"|"picked_up_from_customer"|"picked_up_unmanned"|"picked_up_from_locker"|"picked_up_other"|"failed_not_home"|"failed_cant_find_address"|"failed_no_parking"|"failed_no_time"|"failed_package_not_available"|"failed_other"|"failed_missing_required_proof"|"failed_payment_not_received"|"unattempted"
The current delivery state when this event is emitted.