Skip to Content
Welcome to Zendera Knowledge Hub
For DispatchersUser GuideSettingsNotifications, T&T & Alerts

Settings — Notifications, Track-and-trace, Alerts

Permission: Admin only.

Three related areas live in this section: outbound Notifications (SMS and email), the Track-and-trace customer view, and event-driven Alerts.

For an overview of all Settings tabs, see Settings.

Add-on Feature. SMS & Email Notifications and Track & Trace are add-on features. Deviation/exception reporting requires Track & Trace to be enabled.

Notifications

Settings → Notifications

Controls whether your company sends SMS and email notifications, when they’re sent, and what the message content is. The page has three main areas.

SMS Settings

Limit SMS to a specified time of day interval. Delays most SMS notifications until a chosen hourly window (e.g. 05:00 – 20:00).

  • Delayed — SMS are held back until inside the window.
  • Anytime — SMS go out immediately, no time restriction.
  • From / To — the allowed time window when “Delayed” is selected.

Some SMS — like login one-time passwords — do not respect this setting and always go out immediately.

Notifications list

A table of every notification rule your organization has set up. This is where you set up notifications, either by SMS or email. Each row shows:

ColumnWhat it means
NameYour label for the rule (e.g. Email – Pickup from Nortura to warehouse).
TypeThe event that triggers it (e.g. Order status changes).
InterfaceThe channel used — Email or SMS.
ActionsEdit (blue button) or delete (red button) the rule.

Click + Create new notification to add a new rule, or click the blue edit button on a row to open the Edit notification dialog.

The Edit notification dialog

When you create or edit a notification, you’ll see four sections:

1. Basic Information

  • Notification Name — a label for your team (e.g. SMS – Pickup to warehouse ALL).

2. Trigger Configuration

  • Send a notification when — pick the event that fires the notification (e.g. Order status changes).
  • and this expression is met — optional extra conditions on top of the trigger. Edit in Visual mode (a friendly builder) or Text mode (raw expression).
  • Combine conditions with: AND / OR — choose how multiple conditions are joined.
  • Conditions — each row picks a field (e.g. To Status ID, Order Type ID), a comparator (equals, etc.), and a value. Click + Add Condition for more rows.

3. Notification Settings

  • Send notification via — choose SMS or Email.
  • Delay SMS after creation (Seconds) — optional delay before the SMS goes out. Leave empty for no delay.

4. Template Configuration

  • Template Content — the message body. Use template variables in {{ . }} syntax to insert dynamic data (e.g. {{.Order.InternalOrderNumber}}, {{.Pickup.LocationName}}, {{.Delivery.EstimatedStart}}, {{.Delivery.TrackingLink}}).
  • Available Variables (click to insert) — searchable list grouped into tabs: Customer, Delivery, Driver, Event, Order, Pickup, Recipient. Click a variable token to insert it into the template at your cursor.
  • Preview panel (right side) — shows a live preview of the rendered SMS or email using sample data.
  • Character / SMS counter (SMS only) — shows the character count and how many SMS segments the message will be sent as. Counts are based on sample data; actual length varies with the real values.

Click Save to apply, or Cancel to discard.

Recipient types

Choose who receives notifications based on their relationship to the order or delivery process:

  • Customer Contacts — recipients associated with the order’s customer account.
  • Stop Contacts — recipients associated with a specific pickup or delivery location.
  • Pickup Contacts — recipients specifically associated with the pickup location.
  • Delivery Contacts — recipients specifically associated with the delivery location.
  • Custom Contacts — manually specified email addresses or phone numbers.

Track-and-trace (T&T) Settings

Controls what the track-and-trace customer web view shows to your customers. The portal gives customers complete visibility into their deliveries without requiring app downloads or logins — they receive tracking links via SMS or email notifications. All toggles are Yes / No.

SectionSettingWhat it does
Package overviewIs visibleShow the package overview block to customers.
Freight billAllow to download freight billLets customers download a freight bill PDF.
ContactlessAllow to set contactless pick-up / deliveryLets the customer flag the stop as contactless.
Delivery intervalsAllow to change delivery intervalsLets the customer change their delivery time window.
DriverShow driver phone numberShow the assigned driver’s phone number to the customer.
Package details modalView typeHow products are grouped in the package details popup (e.g. Group products by warehouse location).
Package details modalAllow to register wrong quantity or damageLets the customer report wrong quantity or damage.
Package details modalGroup order products by ERP orderGroup products by the originating ERP order.
Stop detailsUse alternative UISwitch to the alternative stop-details layout.
Stop statusUse alternative UISwitch to the alternative stop-status layout.

Track-and-trace — Cargo carriers

Controls which cargo carrier sections are visible in the customer web view, plus a global product toggle.

SectionWhat it does
Cargo carrier overviewShow the overview block.
Picked-up cargo carriersShow carriers picked up at the location.
Delivered cargo carriersShow carriers delivered to the location.
BalanceShow the running carrier balance for the location.
Show all cargo-carrier productsInclude every cargo-carrier product, not just the active ones.

How customers use Track & Trace

  1. Receive notification with tracking link via SMS or email.
  2. Click link to access real-time tracking (no login required).
  3. Add instructions for delivery if needed (gate codes, floor details).
  4. Monitor progress as the driver approaches.
  5. Verify delivery and report any issues (damage, wrong quantity).
  6. Confirm completion when satisfied.

Rollout best practice

Start with core features (basic tracking, package overview, driver contact), then gradually enable self-service options (delivery instructions, contactless, time changes), and enable deviation reporting last once customers are comfortable with tracking.

Alerts

Alerts are automated notifications triggered by events on orders, drivers, or stops.

How to create an alert rule

  1. Settings → Alerts.
  2. Click New alert.
  3. In the condition builder:
    • Trigger — pick the event type (e.g. “Stop is more than 30 minutes late”, “Driver hasn’t started workday”).
    • Action — what to do (notify a user, notify the driver, hit a webhook, send SMS).
  4. Use Test send to fire one test before saving.
  5. Save.

Common alert recipes

GoalTriggerAction
Late-stop early warningStop late > 15 minNotify dispatcher Slack channel
New high-priority orderOrder created with priority = HighNotify on-call dispatcher
Driver hasn’t startedWorkday start + 10 min, no GPS pingSMS to driver
Webhook to your ERPOrder completedPOST to your endpoint

How to silence or disable an alert

Open the alert → toggle Active off → save. To delete, Delete.

Alerts can fail silently if the webhook URL is wrong or down. Check the logs in Settings → Alerts → [alert] → Logs.


Template & condition reference

This is the deep reference for building notification triggers, conditions, and message templates. Notifications are triggered by changes to orders, order locations, and track & trace reports. Conditions are written in the expr language , and templates use Go template syntax.

Event types and triggers

1. Order Status Changed (ORDER_STATE_CHANGED)

Triggered when an order’s status changes (e.g., from “pending” to “dispatched” or “delivered”).

Data Objects Available:

  • Order — The order that changed status
  • Pickup — The pickup location for the order
  • Delivery — The delivery location for the order
  • Driver — Assigned driver (if any)
  • Customer — Order’s customer information
  • Recipient — Who this notification is being sent to

2. Order Location Status Changed (ORDER_LOCATION_STATE_CHANGED)

Triggered when a specific stop (pickup or delivery location) changes status (e.g., “dispatched” to “arrived” or “completed”).

Data Objects Available:

  • Stop — The specific location that changed status
  • Order — The parent order
  • Pickup — The order’s pickup location
  • Delivery — The order’s delivery location
  • Driver — Driver handling the stop
  • Customer — Order’s customer
  • Recipient — Who this notification is being sent to

3. Order Created (ORDER_CREATED)

Triggered when a new order is created in the system.

4. Track & Trace Shipment Report Created (TT_SHIPMENT_REPORT_CREATED)

Triggered when a recipient submits a delivery report through the track & trace system.

This event type requires the Track & Trace add-on feature to be enabled in your system.

Order status reference

The following status values are available for use in notification conditions and template variables:

StatusDescriptionTypical Use Case
unassignedOrder created but no driver assignedInitial order confirmation notifications
plannedOrder assigned to driver but not yet startedDispatch planning notifications
dispatchedDriver has started the order routeCustomer notification of dispatch
in_transitDriver is en route between locationsProgress update notifications
arrivedDriver has arrived at pickup/delivery locationArrival notifications for recipients
deliveredOrder delivery completed successfullyFinal delivery confirmation
completeEntire order lifecycle finishedFinal completion notifications
cancelledOrder has been cancelledCancellation notifications

Status usage examples

Order creation notification:

// Trigger when new orders are created Order.Status == "unassigned"

Dispatch notification:

// Trigger when orders are dispatched OldStatus == "planned" && NewStatus == "dispatched"

Arrival notifications:

// Trigger when driver arrives at any location NewStatus == "arrived"

Completion notifications:

// Trigger when delivery is completed NewStatus == "delivered" || NewStatus == "complete"

Exception handling:

// Trigger for cancelled orders NewStatus == "cancelled"

Setting conditions with Expr

Use expr language  expressions to filter when notifications are sent. Conditions must evaluate to a boolean value.

Common examples:

// Only for specific order statuses Order.Status == "delivered" // Only for pickup locations Stop.LocationType == "pickup" // Only for external drivers Driver.IsExternal == true // Multiple conditions Order.OrderType == "express" && NewStatus == "dispatched" // Customer-specific notifications Customer.SendNotificationBeforeArriving == true // Status transitions OldStatus == "in_transit" && NewStatus == "delivered"

Available operators:

  • Comparison: ==, !=, <, <=, >, >=
  • Logical: &&, ||, !
  • String operations: contains(), startsWith(), endsWith()
  • Arithmetic: +, -, *, /, %

Advanced status-based conditions

Single status triggers:

// Trigger only when order becomes unassigned NewStatus == "unassigned" // Trigger only when order is planned NewStatus == "planned" // Trigger only when order is dispatched NewStatus == "dispatched" // Trigger only when driver is in transit NewStatus == "in_transit" // Trigger only when driver arrives NewStatus == "arrived" // Trigger only when delivery is complete NewStatus == "delivered" // Trigger only when order is fully complete NewStatus == "complete" // Trigger only when order is cancelled NewStatus == "cancelled"

Status transition conditions:

// Order assignment notification OldStatus == "unassigned" && NewStatus == "planned" // Dispatch notification OldStatus == "planned" && NewStatus == "dispatched" // Journey progress notification OldStatus == "dispatched" && NewStatus == "in_transit" // Arrival notification OldStatus == "in_transit" && NewStatus == "arrived" // Delivery completion notification OldStatus == "arrived" && NewStatus == "delivered" // Final completion notification OldStatus == "delivered" && NewStatus == "complete" // Cancellation from any status OldStatus != "cancelled" && NewStatus == "cancelled"

Combined conditions:

// Express orders that are dispatched Order.OrderType == "express" && NewStatus == "dispatched" // Delivery arrivals only (not pickup arrivals) Stop.LocationType == "delivery" && NewStatus == "arrived" // Pickup completions only Stop.LocationType == "pickup" && NewStatus == "delivered" // External driver notifications Driver.IsExternal == true && NewStatus == "dispatched" // High-priority cancellations Order.Priority == "high" && NewStatus == "cancelled"

Notification interfaces

Email notifications

  • Subject Line — customizable email subject
  • HTML Content — rich email body with templates
  • Attachments — include images, documents, signatures

SMS notifications

  • Text Message — plain text SMS content
  • Sender ID — organization shortname or name (max 11 chars)
  • Delivery Windows — respect SMS allowed time windows

Message guidelines

SMS guidelines:

  • Keep under 160 characters
  • Include essential information only
  • Always add tracking link when relevant

Example SMS:

Order [ORDER_NUMBER] dispatched! Driver [DRIVER_NAME] assigned. Pickup expected [PICKUP_ETA]. Track: [TRACKING_LINK]

Email guidelines:

  • Professional subject lines
  • Clear, structured content
  • Include complete order details
  • Provide clear next steps

Example email:

Subject: Order Dispatched - [ORDER_NUMBER] Dear [CUSTOMER_NAME], Your order has been dispatched: Order: [ORDER_NUMBER] Driver: [DRIVER_NAME] ([DRIVER_PHONE]) Pickup: [PICKUP_LOCATION] Expected: [PICKUP_ETA] Track: [TRACKING_LINK] Best regards, [COMPANY_NAME]

Template variables reference

Go Template Syntax. Zendera uses Go template syntax with {{.FieldName}} format. All field names are case-sensitive.

Order data (Order.*):

  • {{.Order.OrderID}} — Unique order identifier
  • {{.Order.InternalOrderNumber}} — Human-readable order number (e.g., “ABCZ214”)
  • {{.Order.TrackingLink}} — Public tracking URL
  • {{.Order.Status}} — Current order status string
  • {{.Order.OrderType}} — Order type (e.g., “express”, “regular”)
  • {{.Order.Reference}} — Customer reference

Location data (Pickup.*, Delivery.*, Stop.*):

  • {{.Stop.LocationName}} — Location name
  • {{.Stop.FullAddress}} — Complete formatted address
  • {{.Stop.ETA}} — Formatted ETA string (e.g., “15:30 on 20 June 2022”)
  • {{.Stop.TrackingLink}} — Location-specific tracking URL
  • {{.Pickup.Earliest}} / {{.Delivery.Latest}} — Service time windows

Driver data (Driver.*):

  • {{.Driver.Name}} — Full driver name
  • {{.Driver.FirstName}} — Driver first name
  • {{.Driver.PhoneNumber}} — Driver contact number

Customer & recipient data:

  • {{.Customer.Name}} — Customer name
  • {{.Recipient.FirstName}} — Recipient first name
  • {{.Recipient.Email}} — Recipient email address

Event data:

  • {{.OldStatus}} / {{.NewStatus}} — Status change information
  • {{.Timestamp}} — Event timestamp

Template functions and conditionals

Conditional logic:

{{if eq .Order.Status "delivered"}} <p>Your order has been delivered!</p> {{else if eq .Order.Status "in_transit"}} <p>Your order is on the way.</p> {{else}} <p>Order status: {{.Order.Status}}</p> {{end}}

Driver conditional:

{{if .Driver}} Driver: {{.Driver.Name}} ({{.Driver.PhoneNumber}}) {{else}} No driver assigned yet {{end}}

Date formatting:

{{.Pickup.Earliest.Format "2006-01-02 15:04"}} {{.Timestamp.Format "January 2, 2006"}}

Complete template examples

Example 1: Customer delivery notification

Event: Order Location Status Changed Condition: Stop.LocationType == "delivery" && NewStatus == "delivered" Recipients: Customer Contacts

Email subject:

Your order #{{.Order.InternalOrderNumber}} has been delivered

Email body:

<h2>Delivery Confirmation</h2> <p>Hello {{.Recipient.FirstName}},</p> <p>Great news! Your order #{{.Order.InternalOrderNumber}} has been successfully delivered to {{.Stop.LocationName}}.</p> <p><strong>Delivery Details:</strong></p> <ul> <li>Delivered to: {{.Stop.FullAddress}}</li> <li>Delivery time: {{.Stop.CompletedAt.Format "January 2, 2006 at 15:04"}}</li> {{if .Driver.Name}} <li>Delivered by: {{.Driver.Name}}</li> {{end}} </ul> <p>Thank you for choosing our service!</p>

Example 2: Driver arrival SMS

Event: Order Location Status Changed Condition: NewStatus == "arrived" Recipients: Stop Contacts

SMS:

Driver {{.Driver.FirstName}} has arrived at {{.Stop.LocationName}} for order #{{.Order.InternalOrderNumber}}. ETA was {{.Stop.ETA}}.

Example 3: Express order alert

Event: Order Created Condition: Order.OrderType == "express" Recipients: Custom Contacts (dispatch team)

Email subject:

URGENT: Express Order Created - #{{.Order.InternalOrderNumber}}

Email body:

<h2>Express Order Alert</h2> <p>A new express order has been created and requires immediate attention:</p> <ul> <li><strong>Order:</strong> #{{.Order.InternalOrderNumber}}</li> <li><strong>Customer:</strong> {{.Customer.Name}}</li> <li><strong>Pickup:</strong> {{.Pickup.LocationName}}</li> <li><strong>Delivery:</strong> {{.Delivery.LocationName}}</li> <li><strong>Pickup Window:</strong> {{.Pickup.Earliest.Format "15:04"}} - {{.Pickup.Latest.Format "15:04"}}</li> <li><strong>Delivery Window:</strong> {{.Delivery.Earliest.Format "15:04"}} - {{.Delivery.Latest.Format "15:04"}}</li> </ul> <p>Please assign a driver immediately.</p>

Data object relationships

  • Order → Order Locations: Each order has one pickup and one delivery location
  • Order → Customer: Every order belongs to a customer account
  • Order → Driver: Orders may have an assigned driver (can be null)
  • Order Location → Documentation: Each location can have associated documentation

Complete template variable reference

Recipient data (Recipient.*)

  • {{.Recipient.FullName}} — Complete recipient name (e.g., “OW”)
  • {{.Recipient.FirstName}} — Recipient first name (e.g., “Obi”)
  • {{.Recipient.LastName}} — Recipient last name (e.g., “Wan”)
  • {{.Recipient.Email}} — Recipient email address (e.g., “obiwan@jedi”)
  • {{.Recipient.Phone}} — Recipient phone number (e.g., “0740000000”)

Order data (Order.*)

  • {{.Order.OrderID}} — Unique order identifier
  • {{.Order.SerialCode}} — Sequential order number
  • {{.Order.InternalOrderNumber}} — Human-readable order number (e.g., “ABCZ214”)
  • {{.Order.TrackingLink}} — Public tracking URL
  • {{.Order.StatusID}} — Numeric status identifier
  • {{.Order.Status}} — Current order status string
  • {{.Order.OrderTypeID}} — Numeric order type identifier
  • {{.Order.OrderType}} — Order type string (e.g., “express”, “regular”)
  • {{.Order.Reference}} — Customer reference
  • {{.Order.ShipmentID}} — Shipment identifier
  • {{.Order.Documentations}} — Associated documentation data

Location data (Pickup/Delivery/Stop)

Status and identification:

  • {{.Stop.StatusID}} / {{.Pickup.StatusID}} / {{.Delivery.StatusID}} — Numeric status
  • {{.Stop.Status}} / {{.Pickup.Status}} / {{.Delivery.Status}} — Status string
  • {{.Stop.OrderLocationID}} — Unique location identifier
  • {{.Stop.InternalStopNumber}} — Human-readable stop number (e.g., “ABCZ214-COLLECTION”)
  • {{.Stop.LocationID}} — Location master data identifier
  • {{.Stop.LocationName}} — Location name
  • {{.Stop.LocationType}} — “pickup” or “delivery”
  • {{.Stop.LocationTypeID}} — 1 = pickup, 2 = delivery

Time fields:

  • {{.Pickup.Earliest}} / {{.Delivery.Earliest}} — Earliest service time
  • {{.Pickup.Latest}} / {{.Delivery.Latest}} — Latest service time
  • {{.Stop.EstimatedStart}} — Estimated start time
  • {{.Stop.ETA}} — Formatted ETA string (e.g., “15:30 on 20 June 2022”)
  • {{.Stop.ArrivedAt}} — Actual arrival time (if completed)
  • {{.Stop.CompletedAt}} — Actual completion time (if completed)

Address fields:

  • {{.Stop.FullAddress}} — Complete formatted address (e.g., “Storgata 32, 0184 Oslo, Norway”)
  • {{.Stop.Address1}}, {{.Stop.Address2}}, {{.Stop.Address3}} — Address lines
  • {{.Stop.AddressNumber}} — Street number
  • {{.Stop.City}} — City name
  • {{.Stop.Region}} — Region/state
  • {{.Stop.Country}} — Country name
  • {{.Stop.PostalCode}} — Postal/ZIP code
  • {{.Stop.AddressCoordinates.Latitude}} / {{.Stop.AddressCoordinates.Longitude}} — GPS coordinates

Tracking and completion:

  • {{.Stop.TrackingLink}} — Location-specific tracking URL
  • {{.Stop.ArrivedCoordinates.Latitude}} / {{.Stop.ArrivedCoordinates.Longitude}} — GPS at arrival
  • {{.Stop.CompletedCoordinates.Latitude}} / {{.Stop.CompletedCoordinates.Longitude}} — GPS at completion

Driver data (Driver.*)

  • {{.Driver.Name}} — Full driver name (e.g., “Yoda Force”)
  • {{.Driver.FirstName}} — Driver first name (e.g., “Yoda”)
  • {{.Driver.PhoneNumber}} — Driver contact number (e.g., “0723000000”)
  • {{.Driver.ExportOrders}} — Whether driver exports orders
  • {{.Driver.IsExternal}} — Whether driver is external
  • {{.Driver.OptimizeRoutes}} — Whether routes are optimized

Customer data (Customer.*)

  • {{.Customer.ID}} — Customer identifier
  • {{.Customer.Name}} — Customer name

Event data (status change events)

  • {{.OldStatusID}} / {{.OldStatus}} — Previous status
  • {{.NewStatusID}} / {{.NewStatus}} — New status
  • {{.OrderID}} — Related order ID
  • {{.OrderLocationID}} — Related location ID (for location events)
  • {{.OrganizationID}} — Organization identifier
  • {{.Timestamp}} — Event timestamp

Track & Trace report data (TT Report events)

  • {{.CreatedAt}} — Report creation timestamp
  • {{.TrackTraceUUID}} — Unique track & trace identifier
  • {{.TrackTraceLink}} — Public track & trace URL
  • {{.Comment}} — Recipient’s comment
  • {{.OrganizationLogo}} — Company logo attachment

Irregularities:

  • {{.Irregularities[].Comment}} — Irregularity comment
  • {{.Irregularities[].IsDamaged}} — Whether damage was reported
  • {{.Irregularities[].IsWrongQuantity}} — Whether quantity issue was reported
  • {{.Irregularities[].ProductName}} — Product name
  • {{.Irregularities[].InternalOrderProductNumber}} — Product number
  • {{.Irregularities[].WrongQuantity.Ordered}} — Expected quantity
  • {{.Irregularities[].WrongQuantity.Received}} — Actual quantity received
  • {{.Irregularities[].Images[]}} — Associated images

Images:

  • {{.Images[]}} — Report images uploaded by recipient

Attachment functions (email only)

  • {{.AttachImage .SomeImage}} — Attach image for email
  • {{.AttachImageInline .SomeImage}} — Embed image inline in email

Troubleshooting

Notifications not sending

Check configuration:

  • Verify SMS/Email service configuration in system settings
  • Ensure notification configuration is activated
  • Confirm expr conditions are syntactically correct
  • Test conditions with sample data

Verify recipients:

  • Check that recipients have valid email/phone numbers
  • Ensure recipient types are correctly configured
  • Verify custom contacts are properly formatted

Template issues:

  • Validate template syntax (case-sensitive field names)
  • Test templates with known data
  • Check for typos in variable names

Customers not receiving messages

Email issues:

  • Check spam/junk folders
  • Verify email addresses are valid and not blocked
  • Monitor email service delivery reports
  • Test with different email providers

SMS issues:

  • Check SMS delivery windows and timing restrictions
  • Verify phone number formats (include country codes)
  • Confirm SMS service provider reputation
  • Test with different mobile carriers

Condition expression errors

Syntax validation:

  • Use the expr language documentation  for reference
  • Ensure conditions return boolean values
  • Test expressions with mock data
  • Use parentheses for complex logic

Common mistakes:

// Incorrect: Assignment instead of comparison Order.Status = "delivered" // Correct: Comparison operator Order.Status == "delivered" // Incorrect: Missing quotes for strings Order.Status == delivered // Correct: Quoted string values Order.Status == "delivered"

Performance issues

High volume notifications:

  • Review conditions to avoid unnecessary triggers
  • Stagger notifications for large batches
  • Monitor system resources during peak times
  • Use specific conditions rather than broad filters

Delivery monitoring:

  • Track notification delivery rates
  • Monitor failed delivery reports
  • Set up alerts for delivery failures
  • Review customer feedback regularly
  • Use the API to programmatically access delivery logs

What’s next

Last updated on