Skip to content

Events

This is the complete catalogue. What is not here cannot be recorded and cannot be delivered: the same list feeds the hash chain, the filters on your webhook endpoint and the OpenAPI document. Subscribe an endpoint to individual names, to a family wildcard (shipment.*) or to *.

Every delivery has the same outside. The type decides what sits in data; mode says whether the event came from the sandbox or from live, so one receiver can handle both.

{
"id": "evt_01J8Z3K2Q4R5S6T7V8W9X0Y1Z2",
"type": "shipment.issued",
"created_at": "2026-09-14T10:00:00.000Z",
"mode": "test",
"actor": { "type": "api_key", "id": "key_01J8Z3K2Q4R5S6T7V8W9X0Y1Z2", "label": "Backoffice" },
"data": {
"shipment_id": "shp_01J8Z3K2Q4R5S6T7V8W9X0Y1Z2",
"version_id": "ver_01J8Z3K2Q4R5S6T7V8W9X0Y1Z2",
"issued_at": "2026-09-14T10:00:00.000Z",
"provider": "native"
}
}
Event When
shipment.created A shipment was created, as a draft or issued straight away. It has a shp_ id and a first version, but nothing is frozen yet.
shipment.issued The consignment note was issued. Parties, goods and addresses are frozen from now on, the first PDF is available and the shipment is ready to be signed.
shipment.updated A change to the mutable fields created a new version. changed_paths names exactly which fields moved, so you can update selectively.
shipment.cancelled The shipment was cancelled. No further signatures or deliveries will follow; the chain stays verifiable.
shipment.pickup_signed The carrier signed at pickup. The shipment is in transit — the moment to move your own transport status to in_transit.
shipment.delivered The consignee signed at delivery. The ePOD is available; has_remarks tells you whether a reservation was recorded that needs a human look.
shipment.completed The shipment was closed administratively: the proof of delivery was accepted and nothing more follows. This is the moment to invoice and archive the file.
signature.completed A signature or seal was recorded, for any role. trust_level and method say how much that signature weighs in a dispute.
document.created A document was stored: a PDF version, an attachment, a photo or a signature image. The sha256 belongs to the bytes in storage.
remark.added A reservation was recorded at pickup or at delivery. This is the event a damage process should start on.
inspection.viewed Someone opened the inspection link. The IP itself is never stored; ip_hash makes a repeat visit recognisable without identifying the visitor.
provider.sync_failed Synchronising with the eCMR provider failed. will_retry says whether Cargofollow will try again by itself, or whether something on your side is needed.
efti.uil_issued The eFTI Unique Identifier Link was issued. This is the reference an enforcement authority can request from 9 July 2027.
efti.authority_access A competent authority pulled this consignment through a national eFTI gate. gate_id says which gate, subsets on which legal ground; who the officer is, the platform is never told.
efti.combined_transport_stamped A railway or port authority stamped a completed non-road leg of this combined transport (Directive 92/106/EEC Art. 3). The stamp creates no new version, so signatures stay valid.
ping Test event from the console or POST /v1/webhook-endpoints/{id}/test. It does not belong to a shipment and therefore never enters a hash chain.

Every event except ping belongs to a shipment and forms the hash chain there. ping belongs to a webhook endpoint and therefore never appears in a chain.

The fields below sit in data. A field marked optional may be absent — never read it without checking. New optional fields may appear without notice, so ignore what you do not know instead of failing.

The “Meaning” column is taken verbatim from the schemas in @freightapi/core, which is why it matches the OpenAPI document word for word: one vocabulary covers the reference, the SDKs and this page.

Field Type Meaning
shipment_id shp_… shipment id
version_id ver_… shipment version id
status draft · issued · in_transit · delivered · completed · cancelled Lifecycle status
reference string · optional
transport_type national · international · cabotage · combined Kind of transport; derived from the countries when not given, cabotage and combined only on explicit input
provider native · mock · pionira · transfollow · dashdoc · olf eCMR provider that executes the consignment
Field Type Meaning
shipment_id shp_… shipment id
version_id ver_… shipment version id
issued_at ISO 8601 RFC 3339 timestamp with time zone
provider native · mock · pionira · transfollow · dashdoc · olf eCMR provider that executes the consignment
provider_selection object · optional How the provider of this shipment was chosen
ecmr_number string · optional Consecutive consignment note number, assigned when the eCMR is issued
Field Type Meaning
shipment_id shp_… shipment id
version_id ver_… Version created by the update
previous_version_id ver_… · optional shipment version id
changed_paths array Field paths that changed, for example [“driver”, “pickup.window”]
trace object · optional One step of the provider-sync workflow, with changed_paths: ["provider_link"] (M2-15)
Field Type Meaning
shipment_id shp_… shipment id
cancelled_at ISO 8601 RFC 3339 timestamp with time zone
reason string · optional
Field Type Meaning
shipment_id shp_… shipment id
signature_id sig_… signature id
signed_at ISO 8601 RFC 3339 timestamp with time zone
Field Type Meaning
shipment_id shp_… shipment id
delivered_at ISO 8601 RFC 3339 timestamp with time zone
signature_id sig_… · optional signature id
has_remarks boolean
Field Type Meaning
shipment_id shp_… shipment id
completed_at ISO 8601 RFC 3339 timestamp with time zone
delivered_at ISO 8601 When the consignee signed; the delivery this closes
Field Type Meaning
shipment_id shp_… shipment id
signature_id sig_… signature id
version_id ver_… shipment version id
role consignor · carrier · consignee Who signs: CMR boxes 22, 23 and 24
method drawn · click_otp · api · photo_of_paper How the signature was given (ADR 0004)
trust_level platform_auth · ades · qes Trust level of the signature; platform_auth is the default, ades and qes need a QTSP
kind signature · seal A natural person signs; a legal person seals (OLF semantics)
document_hash sha256 hex SHA-256 digest, lower-case hex
signed_at ISO 8601 RFC 3339 timestamp with time zone
Field Type Meaning
shipment_id shp_… shipment id
document_id doc_… document id
kind ecmr_pdf · pod_pdf · attachment · signature_image · photo · other What the file is
version_id ver_… · optional shipment version id
mime application/pdf · image/jpeg · image/png · image/webp · application/json Mime type
size integer
sha256 sha256 hex SHA-256 digest, lower-case hex
Field Type Meaning
shipment_id shp_… shipment id
remark_id rmk_… remark id
phase pickup · delivery When the remark was made
type damage · shortage · delay · other Kind of reservation
photo_count integer
Field Type Meaning
shipment_id shp_… shipment id
inspection_token_id ins_… inspection token id
viewed_at ISO 8601 RFC 3339 timestamp with time zone
ip_hash sha256 hex · optional SHA-256 of the UTC day and the client IP; the IP itself is never stored
user_agent string · optional
locale string · optional Locale the viewer asked for
key_version v1 · v0 · optional Which signing key derived the scanned token: v1 the current one, v0 the previous one during a key rotation
Field Type Meaning
shipment_id shp_… shipment id
provider native · mock · pionira · transfollow · dashdoc · olf eCMR provider that executes the consignment
operation create · update · cancel · status · document ProviderAdapter operation
attempt integer
will_retry boolean
error object
Field Type Meaning
shipment_id shp_… shipment id
dataset_id eft_… efti dataset id
uil object Unique Identifier Link (gate id, platform id, dataset id)
Field Type Meaning
shipment_id shp_… shipment id
dataset_id eft_… efti dataset id
dataset_uuid string
gate_id string · optional The national gate the data set was registered with, first component of its UIL; absent for a data set that carries no UIL yet
operation string The processing operation of IR (EU) 2025/2243 Art. 9(1) the gate performed
subsets array The legal grounds the gate invoked, normalised to the platform spelling
accessed_at ISO 8601 RFC 3339 timestamp with time zone
Field Type Meaning
shipment_id shp_… shipment id
stamp_id cts_… combined transport stamp id
leg_mode rail · inland_waterway · sea Mode of the non-road leg the stamp confirms
loading_terminal object Rail station, inland waterway port or seaport where the mode changed
unloading_terminal object Rail station, inland waterway port or seaport where the mode changed
stamped_by object The authority that affixed the combined transport stamp
stamped_at ISO 8601 RFC 3339 timestamp with time zone
reference string · optional
Field Type Meaning
webhook_endpoint_id whe_… webhook endpoint id
sent_at ISO 8601 RFC 3339 timestamp with time zone

Back to Webhooks for signing and retries.