Triggers

Triggers dictate what and when you will be notified of on your shipments. The sections below outline common fields and behaviors that can be found within triggers in addition to providing examples of the various data structures you may come across.

Thresholds

Some triggers will only notify when a sensor is above or below a specified threshold (e.g. temperature below 32F, humidity above 50%). Triggers types that end in Min or Max provide the ability to do this.

This behavior applies to the follow trigger types: BatteryPowerMin, HumidityMin, HumidityMax, TemperatureMin, TemperatureMax, ProbeTemperatureMin, and ProbeTemperatureMax.

Delaying Alert Triggers

Certain alert triggers provide the ability to trigger only once a condition has persisted for a certain amount of time. For example, you can choose to be alerted only once your shipment has been delayed at the shipFrom address for 2 hours or if the temperature rose above 33F for 30 consecutive minutes.

intervalDelay and intervalDelayUnit are used to set these delays. intervalDelayUnit can be set to minutes, hours, days, or weeks. intervalDelay can be set to any number, however, the maximum value when combined with the specified unit cannot exceed 2 weeks.

Please note, minutes is not supported for location based delay triggers (e.g. Arrival Delay, Departure Delay, Prolonged Stop).

Where Do You Want To Be Alerted

Sometimes you don't need to know about an alert. For example, you likely won't want to see a light alert if the shipment is still being loaded. Triggers let you specify which part of the shipment you would or would not like to be notified on by setting the following three fields to true or false.

  • isActiveAtOrigin: Only alert me if the alert is triggered at the shipFrom address
  • isActiveInTransit: Only alert me if the alert is triggered in transit
  • isActiveAtDestination: Only alert me if the alert is triggered at the shipTo address

A minimum of one of these fields must be set to true when adding a trigger to an alert preset.

Trigger Code Snippets

Temperature Triggers

//Valid Field Values
"temperatureTriggers": [
    {
        "triggerValue": 0,
        "triggerUnit": "C || F",
        "intervalDelay": 0,
        "intervalDelayUnit": "minutes || hours || days || weeks",
        "type": "TemperatureMax || TemperatureMin || ProbeTemperatureMax || ProbeTemperatureMin",
        "isActiveAtOrigin": false,
      	"isActiveInTransit": true,
        "isActiveAtDestination": false
    }
]

//Examples
"temperatureTriggers": [
    {
      	//Immediately alert when the temperature is greater than 0C
        "triggerValue": 0,
        "triggerUnit": "C",
        "interval": 0,
      	"intervalDelayUnit": "",
        "type": "TemperatureMax",
        "isActiveAtOrigin": false,
      	"isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
        //Alert when the temperature is less than 30F after the issue persists for 1 hour
        "triggerValue": 30,
        "triggerUnit": "F",
        "interval": 1,
      	"intervalDelayUnit":"hours",
        "type": "TemperatureMin",
        "isActiveAtOrigin": false,
      	"isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
      //Immediately alert when a probe temperature reading is greater than 0C
      "triggerValue": 0,
      "triggerUnit": "C",
      "interval": 0,
        "intervalDelayUnit": "",
      "type": "ProbeTemperatureMax",
      "isActiveAtOrigin": false,
        "isActiveInTransit": true,
      "isActiveAtDestination": false
  },
  {
      //Alert when a probe temperature reading is less than -10F after the issue persists for 1 hour
      "triggerValue": -10,
      "triggerUnit": "F",
      "interval": 1,
        "intervalDelayUnit":"hours",
      "type": "ProbeTemperatureMin",
      "isActiveAtOrigin": false,
        "isActiveInTransit": true,
      "isActiveAtDestination": false
  }
]

Arrive/Depart Triggers

//Valid Field Values
"arriveDepartTriggers": [
    {
        "alertOn": "Departure || Arrival",
        "type": "ShipmentArriveDepart",
        "isActiveAtOrigin": true,
        "isActiveInTransit": false,
        "isActiveAtDestination": true
    }
]

//Examples
"arriveDepartTriggers": [
    {
        //Immediately alert when the shipment has arrived at the shipTo address
        "alertOn": "Arrival",
        "type": "ShipmentArriveDepart",
        "isActiveAtOrigin": false,
        "isActiveInTransit": false,
        "isActiveAtDestination": true
    },
    {
        //Immediately alert when the shipment has left at the shipFrom address
        "alertOn": "Departure",
        "type": "ShipmentArriveDepart",
        "isActiveAtOrigin": true,
        "isActiveInTransit": false,
        "isActiveAtDestination": false
    }
]

Interval Triggers

//Valid Field Values
"intervalTriggers": [
    {
        "type": "ShipmentETA || ShipmentDepartureDelay || ShipmentStopped || Connectivity",
        "intervalDelay": 2,
        "intervalDelayUnit": "minutes || hours || days || weeks",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    }
]

//Examples
"intervalTriggers": [
    {
        //Alert when the shipment is going to reach the shipTo address 5 hours late
        "type": "ShipmentETA",
        "interval": 5,
        "intervalDelayUnit": "hours",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
        //Alert when the shipment has been at the shipFrom address 5 hours longer than expected
        "type": "ShipmentDepartureDelay",
        "interval": 5,
        "intervalDelayUnit": "hours",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
        //Alert when the shipment has been stopped for 12 hours
        "type": "ShipmentStopped",
        "interval": 12,
        "intervalDelayUnit": "hours",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
        //Alert when the Tive sensor has lost connectivity for 45 minutes
        "type": "Connectivity",
        "interval": 45,
        "intervalDelayUnit": "minutes",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    }
]

Shock/Light Triggers

//Valid Field Values
"shockLightTriggers": [
    {
        "type": "ShockEvents || LightChanges",
        "isActiveAtOrigin": false,
      	"isActiveInTransit": true,
        "isActiveAtDestination": false
    }
]

//Examples
"shockLightTriggers": [
    {
        //Alert when the Tive sensor has detected a shock event
        "type": "ShockEvents",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    },
    {
        //Alert when the Tive sensor has detected light
        "type": "LightChanges",
        "isActiveAtOrigin": false,
        "isActiveInTransit": true,
        "isActiveAtDestination": false
    }
]

Percent Triggers

//Valid Field Values
"percentTriggers": [
    {
        "triggerValue": 25,
        "triggerUnit": "%",
        "type": "BatteryPowerMin || HumidityMin || HumidityMax",
        "isActiveAtOrigin": true,   
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    }
]

//Examples
"percentTriggers": [
    {
        //Alert when the Tive tracker battery goes below 25%
        "triggerValue": 25,
        "triggerUnit": "%",
        "type": "BatteryPowerMin",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    },
    {
        //Alert when the humidty is less than 30%
        "triggerValue": 30,
        "triggerUnit": "%",
        "type": "HumidityMin",
        "isActiveAtOrigin": false,
        "isActiveInTransit": true,
        "isActiveAtDestination": false
    },
    {
        //Alert when the humidity is greater than 35%
        "triggerValue": 35,
        "triggerUnit": "%",
        "type": "HumidityMax",
        "isActiveAtOrigin": false,
      	"isActiveInTransit": true,
        "isActiveAtDestination": false
    }
]

Geofence Triggers

Please note: our public API only supports simple radius geofence triggers. To create geofences with custom shapes, please visit the Tive Platform.

//Valid Field Values
"geofenceTriggers": [
    {
        "locationId": 0,
        "alertOn": "Inside || Outside",
        "type": "LocationPerimeter",
        "isActiveAtOrigin": true,   
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    }
]

//Examples
"geofenceTriggers": [
    {
        //Immediately alert when the shipment has entered the saved location's radius
        "locationId": 0,
        "alertOn": "Inside",
        "type": "LocationPerimeter",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    },
    {
        //Immediately alert when the shipment has entered the saved location's radius
        "locationId": 0,
        "alertOn": "Inside",
        "type": "LocationPerimeter",
        "isActiveAtOrigin": true,
        "isActiveInTransit": true,
        "isActiveAtDestination": true
    }
]

Route Deviation

Not currently supported via the public API. To create route deviation alert presets, please visit the Tive Platform.