Skip to main content
Configurable stop location tabs let a project attach extra shipment-only address tabs to a stop based on the stop type. For example, pickup stops can show Customs and Papers tabs, while delivery stops can show only Customs. The feature is project-configured. The extraction prompt does not create these entries by itself. You can enter the tab data manually, select an existing address by type, or populate supported fields through configured defaults and business rules.
Extra tab entries are stored on the shipment stop. Selecting a saved address stores the address id plus a snapshot, but manual edits do not update the master address.

Where to configure it

Use two configuration screens:
  • Project configuration > Fields: manage the available project address types, such as pickup, delivery, customs, or papers.
  • Project configuration > General settings: configure which stop types get which extra tabs in the Stop Location Tabs card.
Project admins can manage these project-scoped configuration screens for their own project. Superadmin access is not required to reorder shipment detail groups, adjust stop address types, or save related field layout changes.

Address types

Address types back the extraction stop type options, tab configuration, and the address picker filter. Only active project address types can be used for new or changed extra stop-location entries. Address types cannot be deleted from this screen for now; disable them to prevent new assignments. Each address type has a stable name, such as pickup or cross_dock, and an optional display label. The stable name is the value used in stop type, Stop Location Tabs stop_type, tab address_type, business rules, imports, order JSON, and publish payloads. The label is presentation-only. Changing a label does not rewrite stored stops or integration payloads. Shipment detail, shipment inspector summaries, self-learning feedback field locations, and the order overview show the configured label when one exists, then fall back to a formatted stable name. Address types also have an Extractable setting. Turn it off for manual-only stop types that operators may add or select themselves, but that the extraction pipeline should not infer from an email or document. Manual-only address types stay active for shipment editing, stop validation, business rules, defaults, order JSON, and publish payloads. Compact address type management on the field configuration screen

Stop Location Tabs rules

Each rule starts from a source stop type and defines the extra tabs that should appear for stops of that type. Stop Location Tabs configuration card with Pickup configured for Customs and Via tabs The configuration is stored as project configuration:
{
  "category": "shipment_detail",
  "key": "stop_location_tabs",
  "value": {
    "enabled": true,
    "rules": [
      {
        "stop_type": "pickup",
        "tabs": [
          {
            "key": "customs",
            "label": "Customs",
            "address_type": "customs",
            "sort_order": 0
          },
          {
            "key": "papers",
            "label": "Papers",
            "address_type": "papers",
            "sort_order": 1
          }
        ]
      },
      {
        "stop_type": "delivery",
        "tabs": [
          {
            "key": "customs",
            "label": "Customs",
            "address_type": "customs",
            "sort_order": 0
          }
        ]
      }
    ]
  }
}
The tab key is the stable machine key. Keep it lowercase and stable after shipments have data. Renaming the key creates a different tab from the data model’s point of view.

Shipment editing behavior

When a shipment stop matches a configured rule, the stop header shows a base tab and the configured extra tabs. Shipment stop with base, Customs, and Via tabs

Manual save mode

Projects can disable shipment auto-save in Project configuration > General settings with the Shipment Editing card. The setting is stored on the project as:
{
  "settings": {
    "shipment_detail": {
      "auto_save_enabled": false
    }
  }
}
When the setting is missing or true, shipment edits auto-save by default and users can still turn auto-save off for their current page session. When it is false, auto-save is disabled for every user in the project and the shipment footer shows the manual Save action. New stops, goods lines, and item lines are added locally, so their configured fields can be filled before the next manual save or auto-save round trip. If a user leaves a shipment with unsaved changes, Vectrix asks whether to Save and leave, Leave without saving, or Cancel. Sending a shipment to the TMS always saves pending edits first, even when manual save mode is enabled. Each extra tab has:
  • an address picker filtered by the tab’s address_type
  • the same stop field layout as ordinary stops
  • shipment-only values for fields edited on that tab
Selecting an address fills the extra entry with:
  • address_id
  • snapshot fields such as name, address_line, postal_code, city, and country_code
  • matching values in fields where they align with configured stop fields
Manual edits update only the stop-location entry for that shipment stop and tab.
If a stop type changes or the project config no longer shows a tab, existing entries remain stored but are hidden. They become visible again if the stop type and configuration make that tab active.

Copy and paste active tabs

The stop action menu can copy the currently selected tab on a stop and paste it into the currently selected tab on another stop. This is a shipment-page clipboard, not the operating system clipboard, and it resets when the page reloads or the user navigates away. Use Copy current tab on the source stop, switch the target stop to the tab that should receive the data, then use Paste into current tab. Paste is disabled when the shipment is read-only, a save is in progress, or nothing has been copied. Copy/paste supports both the base stop tab and configured extra location tabs:
  • Base tab to base tab copies editable configured stop fields and address snapshot fields, but keeps the target stop identity and type.
  • Base tab to an extra location tab writes matching address snapshot fields and configured stop fields into that tab’s location_entries row.
  • Extra location tab to another extra location tab creates or updates the target row while keeping the target tab’s tab_key, address_type, and sort_order.
  • Extra location tab to base tab copies matching configured stop fields and address snapshot fields into the target stop.
Linked address ids are preserved only when the linked address is valid for the target. Base stop targets keep address_id only if the linked address has the target stop type. Extra location tab targets keep address_id only if the linked address has the target tab’s address_type. When the link is not valid, only the snapshot fields are pasted and the target link is cleared. Pasted values are treated as manual edits. Structural fields such as id, shipment_id, stop_number, type, timestamps, and deleted state are never copied, and extraction evidence or confidence is not carried over.

Field model

Extra tabs use the normal stop field configuration. Built-in address fields are mirrored onto top-level snapshot fields. Other configured stop fields, including list fields, are stored in fields.
{
  "tab_key": "customs",
  "address_type": "customs",
  "address_id": "k17...",
  "name": "Customs desk",
  "address_line": "Border road 1",
  "postal_code": "2000",
  "city": "Antwerp",
  "country_code": "BE",
  "reference": "CUS-421",
  "fields": {
    "name": "Customs desk",
    "address_line": "Border road 1",
    "postal_code": "2000",
    "city": "Antwerp",
    "country_code": "BE",
    "references": ["CUS-421", "DOC-9"],
    "type": "customs"
  }
}
Use snapshot fields for TMS mappings that expect address-like data. Use fields for configured stop fields that do not have a direct address column.

Order JSON and publish payloads

Order GET and order-level publishing use the same hydrated order shape. Each shipment contains stops, and each stop contains location_entries.
{
  "id": "order_15",
  "shipments": [
    {
      "id": "shipment_16",
      "stops": [
        {
          "id": "stop_1",
          "type": "pickup",
          "name": "Pickup location",
          "location_entries": [
            {
              "tab_key": "customs",
              "address_type": "customs",
              "address_id": "k17...",
              "name": "Customs desk",
              "address_line": "Border road 1",
              "postal_code": "2000",
              "city": "Antwerp",
              "country_code": "BE",
              "fields": {
                "references": ["CUS-421"]
              }
            }
          ]
        }
      ]
    }
  ]
}
Publish behavior depends on settings.pubsub.publish_level:
  • orders: publishes the full hydrated order payload, including shipments[].stops[].location_entries.
  • shipments: publishes the hydrated shipment payload, including stops[].location_entries.

Business rule paths

The rule catalog exposes configured stop-location tabs as stop-scoped fields. Use these fields when a rule needs to read the base stop address or create and update an extra stop-location tab entry. The canonical rule form reads the base stop address and writes the configured extra tab by tab key:
address_id == "base-address-id" => location_entries.customs.address_id = "customs-address-id"
You can also use the explicit scoped form:
stop.address_id == "base-address-id" => stop.location_entries.customs.address_id = "customs-address-id"

Rule builder fields

In the visual rule builder, choose Stop scope before selecting stop-location tab fields.
  • Base Address is a condition/source field. It maps to address_id and can be used to check the linked address on the base stop.
  • Base Address is not available as an action target, because rules cannot write the base stop address through this path.
  • Extra tab address targets, such as Customs · Address or Papers · Address, map to location_entries.<tabKey>.address_id.
  • Extra tab address targets use the tab’s configured address_type to filter the address picker.
  • The selected address value is stored as the Convex address id in the rule.
  • Snapshot fields, such as Customs · Name, Customs · Street, Customs · City, and Customs · Reference, map to direct fields on the tab entry.
  • Configured stop fields that do not have a direct snapshot column map to location_entries.<tabKey>.fields.<fieldName>.
Extra tabs are targeted by tab key, not by label or address type. If the label changes from “Customs” to “Customs desk” but the key remains customs, the rule path stays the same.

Supported paths

Use these paths in stop rules:
address_id
location_entries.customs.address_id
location_entries.customs.name
location_entries.customs.description
location_entries.customs.address_line
location_entries.customs.postal_code
location_entries.customs.city
location_entries.customs.country_code
location_entries.customs.reference
location_entries.customs.fields.references
The same paths can be written with an explicit stop. prefix:
stop.address_id
stop.location_entries.customs.address_id
stop.location_entries.customs.fields.references

Validation and execution

Rule validation accepts only configured tab keys. For example, location_entries.customs.address_id is valid only when the project configuration contains a tab with key customs. Rules can create or update the tab entry for the referenced tab key. During dry-run, a missing entry is materialized so the diff can show the created or updated path, such as:
stop.location_entries.customs.address_id
When a rule writes location_entries.<tabKey>.address_id, the runtime stores the selected address id and hydrates the address snapshot fields before persisting. Existing manual values in fields are preserved unless the rule writes those fields directly.
Address writes still use the existing stop-location entry persistence validation. Deleted, inactive, or wrong-type addresses are rejected instead of being saved into the tab entry.

Operational notes

  • Missing or disabled config leaves the shipment screen unchanged.
  • Disabled address types cannot be used for changed entries.
  • Manual-only address types are hidden from extraction stop type options, but remain valid for manual edits and configured automation.
  • Unchanged existing entries can still be saved if the address type is later disabled.
  • Deleted linked addresses are ignored during hydration.
  • Extra tab entries live in Convex table stop_location_entries.