Administration

Set up action result questionnaires

Define the questions drivers answer when they complete a task, per action type: question types, conditions, results, field updates and board computer codes.

Updated October 7, 2026

Who can do this: Role level 1000 or higher (internal users only). Generate with AI also needs the permission to update the platform.

An action result questionnaire is the set of questions a driver answers when completing a task, such as unloading. The answers become the action result: whether the task was done, why not, remarks, photos and signatures. Answers can also update the order, for example the number of pallets actually loaded or a new delivery date.

How questionnaires work

  • Your platform has at most one questionnaire per action type, for example one for loading and one for unloading. To vary the questions within a type, use conditions (see below).
  • When a driver completes a task in OpenMove, the questionnaire of its type replaces the standard result screen. See Answer action questionnaires.
  • The same questionnaire opens in the shared execution view of a trip, when someone completes a task there in a browser.
  • Answers a driver gives on a board computer, for example Transics or Webfleet, are matched to the same questions (see Board computer answers below).
  • Without a questionnaire, drivers choose Done, Partly done or Not able to do and type a reason and remarks.

Open the questionnaires

  1. Open the side menu (☰, top right) and choose Settings.
  2. Click the Environment tab.
  3. Open the Action Result Questionnaires section, between Planning and Pricing.

The section shows the Generate with AI button and an editor with the questionnaires as JSON text. When nothing is set up yet, the editor contains {}.

Create or change questionnaires with AI

The quickest way to start is to describe what you need, or to upload the information sheet of your board computer.

  1. Click Generate with AI.
  2. Optionally, add files under Information sheet or documents (optional): click the paperclip or drag files onto it. PDF, Word, Excel, CSV, images and other common formats are accepted.
  3. In Instruction, describe what you want, for example "Add a damage question with a photo to unloading" or "Create the questionnaires from this Transics information sheet".
  4. Click Generate. This can take up to a few minutes.
  5. Read the summary that appears. Updated: lists the action types that were created or changed; the other action types are left exactly as they were.
  6. Check the new questionnaires in the editor below.
  7. Click Save at the bottom of the page to keep them.

The AI sees the questionnaires as they are in the editor, including changes you have not saved, so you can refine the result with a follow-up instruction such as "Make the photo optional". Nothing is stored until you click Save. To throw a result away, leave the page without saving.

If you click Generate with an empty instruction and no files, you see Please provide an instruction or upload a document. When there was nothing to change, you see The AI made no changes.

Edit the questionnaires yourself

  1. Type or paste in the editor. Use the buttons at the top of the editor to format the text or undo a change.
  2. Watch the margin of the editor: a mistake in the JSON, such as a missing comma or quote, is marked on its line. While the text is not valid, Save is disabled.
  3. Click Save at the bottom of the page.
  4. Test the questionnaire by completing a task of that type on a test trip (see Test a questionnaire below).

The text is an object with one entry per action type. Each entry has enabled (only true questionnaires are used), a list of questions and a list of resultMappings. This example asks whether an unloading went well, asks for a reason when it did not, and collects a signature when it did:

{
  "unload": {
    "enabled": true,
    "questions": [
      {
        "id": "delivered",
        "label": "Were all goods delivered?",
        "type": "select",
        "order": 1,
        "options": [
          { "value": "yes", "label": "Yes", "setsResultStatus": "succeeded" },
          { "value": "partly", "label": "Partly", "setsResultStatus": "partiallySucceeded" },
          { "value": "no", "label": "No", "setsResultStatus": "failed" }
        ]
      },
      {
        "id": "why",
        "label": "What went wrong?",
        "type": "text",
        "order": 2,
        "conditions": [{ "questionId": "delivered", "operator": "notEquals", "value": "yes" }],
        "fieldMapping": { "target": "actionResult", "fieldPath": "reason" }
      },
      {
        "id": "signature",
        "label": "Signature of the receiver",
        "type": "signature",
        "required": false,
        "order": 3,
        "conditions": [{ "questionId": "delivered", "operator": "equals", "value": "yes" }]
      }
    ],
    "resultMappings": []
  }
}

Action types

The key of each entry is the action type it applies to:

KeyTask
loadLoading
unloadUnloading
attachTransportEquipmentCoupling a trailer or container
detachTransportEquipmentUncoupling a trailer or container
genericActionGeneral action
refuel, customs, weighing, wait, breakRefuelling, customs, weighing, waiting and breaks

Questions

SettingWhat it does
idA unique name for the question within the questionnaire, such as delivered. Conditions and result mappings refer to it. Do not change it once drivers have answered.
labelThe question the driver sees.
typeThe kind of answer (see the next table). Without a type, the question is a text question.
requiredWhether the driver must answer before completing. A question is required unless you set "required": false.
orderThe position in the questionnaire, lowest first.
description, placeholderHelp text under the question and the gray text in an empty field.
optionsThe choices of a choice question, each with a value (stored) and a label (shown). An option can also set the result (see Set the result), or make another question its follow-up with nextQuestionId.
conditionsWhen the question is shown (see Show a question only when it applies).
validationLimits on the answer: minLength and maxLength (characters), min and max (numbers, inclusive) and decimals (digits after the decimal separator).
fieldMappingWhere the answer is written (see Write answers into the order).
externalIdsThe codes a board computer uses for this question (see Board computer answers).

Question types

TypeThe driver
textTypes free text.
numberTypes a number. Both 12,5 and 12.5 are accepted.
selectPicks one option.
multiSelectTicks one or more options.
booleanUses a yes/no switch. The answer is stored as true or false.
date, datetimePicks a date, or a date and time.
photoTakes a photo or picks one from the phone.
signatureLets someone sign on the screen.
messageReads an instruction, such as "Take photos of the seal". It needs no answer. Add "messageState": "important" to show it as Attention instead of Info.

Show a question only when it applies

Give a question conditions to show it only in some cases. A question with several conditions is shown only when all of them are met. A hidden question is never required, and its answer is not used.

A condition compares the answer to an earlier question with a value:

OperatorMet when the answer
equals / notEqualsis exactly / is not the value. For yes/no questions, use "true" or "false".
containscontains the value.
greaterThan / lessThanis a number above / below the value. The value must be a number.
isEmpty / isNotEmptyis empty / has been given. These need no value.

A condition can also look at the order instead of an answer. Set "source": "field", a target (action or shipment) and a fieldPath, the same paths as in Write answers into the order. For example, ask for the trailer temperature only when the shipment's first goods line has a license plate:

"conditions": [{ "source": "field", "target": "shipment", "fieldPath": "goods.0.licensePlate", "operator": "isNotEmpty" }]

This is how one questionnaire covers several variants of the same task, such as different departments or customers. When the field cannot be read at all, the question is shown.

For "ask this only after that answer", give the option a nextQuestionId instead. The question it names becomes a follow-up: it is shown, and required, only once that option or another option pointing at it is chosen. Its own conditions still apply.

Set the result

The answers decide the result of the task. Transportial looks in this order and uses the first one that applies:

  1. Result mappings. The first entry in resultMappings whose conditions are all met sets its resultStatus and resultReason. Use these for combinations, such as "partly delivered and more than 5 items left".
  2. Options. A chosen option with setsResultStatus sets that status, and setsResultReason the reason.
  3. Default. Otherwise the result is Done.
"resultMappings": [
  {
    "conditions": [
      { "questionId": "delivered", "operator": "equals", "value": "partly" },
      { "questionId": "itemsLeft", "operator": "greaterThan", "value": "5" }
    ],
    "resultStatus": "failed",
    "resultReason": "Too many items not delivered"
  }
]
StatusShown asEffect
succeededDoneNone.
partiallySucceededPartly doneCounts as done.
failedNot able to doThe shipment needs replanning.
canceledCanceledCounts as done.

What a failed task sets in motion is described in Status life cycles.

Write answers into the order

A fieldMapping writes the answer of a question to a field. It has a target, a fieldPath and optionally a strategy and a transform.

TargetField paths
actionResultreason and remark of the result. requestedRescheduleAt records a new date the receiver asked for, which starts replanning. Any other name is stored with the result under that name.
actionstartTime, endTime, eta, etd, remark, duration (seconds) and externalAttributes.<name>. On a photo question, documents adds the photo to the documents of the task, where planners see it on the action card.
shipmentremark, description, constraints.delivery.startingDateTime, constraints.delivery.endingDateTime and externalAttributes.<name>. Goods: goods.<field> (every goods line), goods.0.<field> (the first line, counting from 0) or goods.0.containedGoods.1.<field> (the second item in the first trailer or container). Goods fields: quantity, name, description, remark, barCode, weight, grossWeight, loadMeters, and for trailers and containers licensePlate, seal and equipmentId.

The strategy decides what happens with the answer:

StrategyEffect
overwrite (default)Replaces the field with the answer.
recordDifferenceLeaves the field alone. When the answer differs from it, the result records a difference, such as 33 pallets reported where the order says 32. Use this to check the order rather than change it.
appendCommentAdds a line "question: answer" to the remark of the target.

Answers are written as given. To write a date in another format, add "transform": { "type": "dateParse", "format": "dd-MM-yyyy HH:mm" }; "type": "addDuration" turns a number of seconds into that much time from now.

An overwrite on the shipment changes the order for everyone, including your customer. Use recordDifference when you only want to know what the driver found.

Board computer answers

Drivers with a board computer answer questions on that device. Transportial matches those answers to your questionnaire through externalIds: per system (transics or webfleet) the code the board computer sends. Answers to questions without a match are not applied to the questionnaire.

  • Transics. Use the code from the "Info columns" of your information sheet, such as SNR for a seal number. When a question has no code, use its exact description from the sheet. Give options both encodings: the answer text as value and the answer code in their own externalIds.
  • Webfleet. Use the name of the order message field.
{
  "id": "seal",
  "label": "Seal number?",
  "type": "text",
  "required": false,
  "externalIds": { "transics": "SNR" },
  "fieldMapping": { "target": "shipment", "fieldPath": "goods.0.seal", "strategy": "recordDifference" }
}

Board computer answers arrive one at a time, so required questions may stay unanswered and an invalid answer is skipped instead of rejecting the rest. The result only changes when an answer sets one.

By default, every answer the driver gave is also shown on the task, including answers to questions you have no question for. To record only matched answers, switch off Record all board computer answers on the board computer integration. See Board computers.

Upload the information sheet to Generate with AI and ask it to create the questionnaires: it fills in the codes for you. Check them against the codes registered on your Transics account, which can differ from the sheet.

React to differences

When an answer records a difference, or a board computer answer is skipped as invalid, Transportial raises the event After a questionnaire conflict. Choose it as the trigger of a workflow, an alert rule or a message automation, for example to notify the planner or the customer service team. See Workflows and Alert rules.

Test a questionnaire

  1. Create a test trip with a task of the action type, and start the trip.
  2. On the trip, click the Share execution view icon to copy the link, and open it in a new browser tab.
  3. Click Start on the task, then Complete.
  4. Answer the questions and check that follow-up questions appear when they should.
  5. Click Complete and check the result on the task in the trip. See Read action results.

Troubleshooting

  • The questionnaire does not appear. Check that enabled is true, that the key matches the action type of the task, and that you saved the settings.
  • A question never appears. Check its conditions: the questionId must be an earlier question, and the value must match the option's value exactly, not its label.
  • The driver cannot complete. A question is required unless it has "required": false. Hidden questions are never required.
  • The wrong result is set. Result mappings come before options, and the first matching mapping wins. Put the most specific mapping first.
  • A field is not updated. Check the fieldPath against the lists above, that the strategy is overwrite, and that the task belongs to a shipment when the target is shipment.

Still need help?

Our support team is happy to answer any question about Transportial.