Skip to content
Logistics · Playbook

The logistics playbook. Built in the builder, answered by your dispatch system.

Ten journeys, each drawn below as it runs. The decision comes from your dispatch, booking and order systems or criteria you set; the journey carries it. Aims are targets to agree in the pilot, not results.

PLAYBOOKS · 01Illustrative journey

Rescue the second failed attempt before the parcel comes back.

A second failed attempt at the same address takes the reason from your dispatch system; not home sends one WhatsApp with Pick a slot or Collect from hub, an unfound address asks for a shared location, and every answer is written back before the next run.

Decides
your dispatch system; the consignee.
Aim
fewer parcels returned to the shipper.
Built in the journey builder
Rescue the second failed attempt before the parcel comes backLOGISTICSYour dispatch system gives the reason; the consignee chooses; the answer is written back before the next run.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
fewer parcels returned to the shipper.
Trigger
second attempt failed, same address
Events and identifiers
second attempt failed, same address. The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
reason? (your dispatch) · slot: open slots from your dispatch · written back. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
fewer parcels returned to the shipper. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 02Illustrative journey

Confirm the cash-on-delivery order before it leaves the hub.

A cash-on-delivery order from a consignee who refused the last one triggers a call with a keypad answer, escalating to WhatsApp, then SMS, if unanswered; Confirm releases the dispatch, Cancel stops it, and the order is held until one arrives.

Decides
your order system; the consignee.
Aim
fewer refused parcels on the van.
Built in the journey builder
Confirm the cash-on-delivery order before it leaves the hubLOGISTICSA call, a keypad answer, an escalation if nobody picks up; the order is held until one arrives.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
fewer refused parcels on the van.
Trigger
COD order, consignee refused before
Events and identifiers
COD order, consignee refused before. The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
confirm: release for dispatch · cancel: stop before dispatch. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
cancel: stop before dispatch. The message is delivered on the first channel that reports delivery, or the fallback order is exhausted and the failure is recorded.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; when the last channel in the order has reported failure, the message is recorded as failed with the reason. Delivery callbacks that arrive late update the record when they arrive.
Success metric
fewer refused parcels on the van. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 03Illustrative journey

Catch the shipper whose bookings are thinning.

A shipper whose bookings have fallen three weeks running enters a segment and gets one message from the account owner; a reply becomes a task in your CRM, silence waits, checks your system again, and ends in a call.

Decides
your segment definition; your booking data.
Aim
the leaving shipper reached before the last lane goes quiet.
Built in the journey builder
Catch the shipper whose bookings are thinningLOGISTICSOne message from the account owner, not a rate card; a reply reaches a person.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
the leaving shipper reached before the last lane goes quiet.
Trigger
segment entry: bookings down, third week
Events and identifiers
segment entry: bookings down, third week. Segment membership is recomputed from the contact's own events on the window you set; the identifier is the contact record. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
yes: task to the account manager (your CRM) · bookings recovered? (your system). Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
the leaving shipper reached before the last lane goes quiet. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 04Illustrative journey

Turn the quote that was never booked into a booking.

A session with a quote calculated and no booking checks consent, asks your rating engine whether the rate still stands, and sends it once with a tap to book; the tap creates the booking in your system and confirms the pickup.

Decides
your rating engine; the shipper.
Aim
more quotes that become bookings.
Built in the journey builder
Turn the quote that was never booked into a bookingLOGISTICSA session rule, a consent check, the rate your engine confirms, one message with a tap to book.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
more quotes that become bookings.
Trigger
session rule: quote calculated, no booking
Events and identifiers
session rule: quote calculated, no booking. Captured by the SDK or web tracker as the session runs, tied to the identified contact. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
rate still valid? (your rating engine) · your system creates the booking. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Checked inside the journey at the step shown, and per channel before any send.
Stops when
no tap: silence. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
more quotes that become bookings. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 05Illustrative journey

Add cover when the declared value deserves it.

A declared value above the standard cover asks your booking system whether cover is available for the lane and the value, then sends one WhatsApp with Add cover or Send as is; a tap adds it before the parcel leaves the hub.

Decides
your cover rules per lane.
Aim
cover sold without a call.
Built in the journey builder
Add cover when the declared value deserves itLOGISTICSYour booking system answers before anyone is offered anything.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
cover sold without a call.
Trigger
declared value above the standard cover
Events and identifiers
declared value above the standard cover. The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
cover available for this lane? (your booking system) · your system adds cover. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
no tap: ships as booked. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
cover sold without a call. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 06Illustrative journey

Turn three ad-hoc pickups into a subscription.

A third pickup booked in one week asks your system whether the shipper is already on a contract, then sends one WhatsApp with Daily pickup or Not now; a tap sets it up in your system and confirms the first collection.

Decides
your contract rules; the shipper.
Aim
ad-hoc volume moved onto a standing pickup.
Built in the journey builder
Turn three ad-hoc pickups into a subscriptionLOGISTICSYour system confirms the shipper is not on a contract before the offer goes.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
ad-hoc volume moved onto a standing pickup.
Trigger
third pickup booked this week
Events and identifiers
third pickup booked this week. The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
on a contract already? (your system) · your system sets up the subscription. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
no tap: silence until next month. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
ad-hoc volume moved onto a standing pickup. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 07Illustrative journey

Turn a slipped delivery into a choice the consignee makes.

A delivery that slips in your dispatch system sends one WhatsApp with Deliver tomorrow or Pick a slot; tomorrow updates your system and confirms by SMS, a slot fetches the open options from your system, and silence becomes a call.

Decides
your dispatch system; the consignee.
Aim
fewer failed deliveries and fewer calls.
Built in the journey builder
Reschedule a deliveryLOGISTICSYour own system answers mid-journey.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
fewer failed deliveries and fewer calls.
Trigger
delivery slipped (your dispatch)
Events and identifiers
delivery slipped (your dispatch). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
tomorrow: update your system, SMS confirm · slot: open slots from your system. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
fewer failed deliveries and fewer calls. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 08Illustrative journey

Answer the tracking page before it becomes a call.

A session with the tracking page opened three times in an hour and no slot chosen fetches the rider's window from your dispatch system and sends it by push over our own network, with SMS if the push is not delivered.

Decides
your session rule; your dispatch system.
Aim
fewer where-is-my-parcel calls.
Built in the journey builder
Answer the tracking page before it becomes a callLOGISTICSThe rider's window from your dispatch, by push over our own network, SMS if not delivered.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
fewer where-is-my-parcel calls.
Trigger
session rule: tracking page opened 3 times, no slot
Events and identifiers
session rule: tracking page opened 3 times, no slot. Captured by the SDK or web tracker as the session runs, tied to the identified contact. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
rider's window (your dispatch). Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
stop when the parcel is delivered. The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
fewer where-is-my-parcel calls. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 09Illustrative journey

Fix the address before the van leaves the hub.

An address your dispatch system cannot map at the hub sends one WhatsApp asking the consignee to share a location or confirm the address; the pin is written back and the parcel released, silence becomes a call, and the parcel is held with an SMS if nobody answers.

Decides
your dispatch system; the consignee.
Aim
fewer address failures on the first attempt.
Built in the journey builder
Fix the address before the van leaves the hubLOGISTICSA shared location is written back before the parcel is released; silence becomes a call.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
fewer address failures on the first attempt.
Trigger
address not mappable at the hub (your dispatch)
Events and identifiers
address not mappable at the hub (your dispatch). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
location: pin written back, released · right: released with a rider note. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
The message is delivered on the first channel that reports delivery, or the fallback order is exhausted and the failure is recorded.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; when the last channel in the order has reported failure, the message is recorded as failed with the reason. Delivery callbacks that arrive late update the record when they arrive.
Success metric
fewer address failures on the first attempt. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics
PLAYBOOKS · 10Illustrative journey

Deliver the handover code as the rider arrives.

A rider-arriving event from your dispatch system sends the code by push over our own network to app users, falls back to SMS on the carrier's failure signal, and goes straight to SMS on the OTP lane for everyone else.

Decides
your channel order for the OTP lane.
Aim
codes that arrive while the rider is at the door.
Built in the journey builder
Deliver the handover code as the rider arrivesLOGISTICSPush over our own network for app users; SMS on the carrier's signal; the OTP lane for everyone else.

Drawn as it would run in the builder. Thresholds, windows and channel order are the ones you set; the decision at each API step comes from your system.

What it takes to run
Intended outcome
codes that arrive while the rider is at the door.
Trigger
rider arriving (your dispatch)
Events and identifiers
rider arriving (your dispatch). The trigger arrives from your system by API with your customer identifier and the fields named in the trigger. Example inputs; map them to your own event names and identifiers at setup. Every event carries your customer identifier.
Your systems in the loop
one record per code. Your system validates and executes each of these; the journey sends the request and branches on the answer.
Consent
Per-channel consent on the contact record is checked before any send.
Stops when
The customer completes the step the journey waits for, the deadline on a wait passes, or the branch drawn for silence ends.
If a channel fails or nobody answers
A channel that reports failure advances the fallback order on that carrier signal; silence takes the path drawn for it, with the deadline you set. Delivery callbacks that arrive late update the record when they arrive. An API step that answers no, or fails, takes the branch drawn for it; the platform does not act on your system's behalf beyond that request.
Success metric
codes that arrive while the rider is at the door. Population: contacts who entered the journey in the window. Compared with the baseline window agreed before the pilot, on the conversion events you define. A before-and-after difference is a comparison, not proof of cause.
Logistics

Where a step says your system decides, the journey calls your system and branches on its answer. xNotify carries the journey; it does not become the model.

Next step

See what xNotify could do for your customer journeys.

After the demo: how the pilot works
Book a Demo