{"componentChunkName":"component---src-templates-simple-markdown-js","path":"/docs/direct-carrier-connections/documents-webhooks/","matchPath":"","result":{"data":{"markdownRemark":{"html":"<h1 style=\"position:relative;\"><a href=\"#documents-webhooks\" aria-label=\"documents webhooks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"documents-webhooks\"></div>Documents Webhooks</h1>\n<p>Documents webhooks push a shipment's documents to your own system as the carrier produces them, so you don't have to poll. Whenever the documents of freight you booked through <a href=\"/docs/direct-carrier-connections/dispatch/\"><code class=\"language-text\">POST /dispatching/jobs</code></a> change, Shipwell sends the shipment's full, current document collection to your URL, signed, with a download link on each file.</p>\n<p>They use the same webhook as <a href=\"/docs/direct-carrier-connections/tracking-webhooks/\">tracking webhooks</a>: one URL and one signing secret per company. You choose which events that webhook receives, <code class=\"language-text\">tracking.updated</code>, <code class=\"language-text\">documents.updated</code> or both.</p>\n<p>Each delivery carries the same documents and statuses that <a href=\"/docs/direct-carrier-connections/documents/\"><code class=\"language-text\">GET /documents/{resource_id}</code></a> returns under <code class=\"language-text\">data</code>, in the webhook's own, slimmer shape: files never carry content inline, a file's <code class=\"language-text\">content</code> can be <code class=\"language-text\">null</code>, and each document adds a <code class=\"language-text\">base64_link</code>. Don't validate deliveries with your GET response schema; the webhook's is <code class=\"language-text\">DocumentCollectionSummary</code> in the API reference. Everything on the <a href=\"/docs/direct-carrier-connections/documents/\">Documents</a> page about statuses and document types applies here too.</p>\n<h2 style=\"position:relative;\"><a href=\"#how-it-works\" aria-label=\"how it works permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"how-it-works\"></div>How it works</h2>\n<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1791068209438\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"max-width: 1292px;\" viewBox=\"-50 -10 1292 957\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><rect x=\"40\" y=\"671\" fill=\"rgba(245, 158, 11, 0.12)\" width=\"687\" height=\"180\" class=\"rect\"></rect><rect x=\"40\" y=\"373\" fill=\"rgba(16, 185, 129, 0.10)\" width=\"1112\" height=\"288\" class=\"rect\"></rect><rect x=\"40\" y=\"75\" fill=\"rgba(59, 130, 246, 0.10)\" width=\"687\" height=\"288\" class=\"rect\"></rect><g><rect x=\"1042\" y=\"871\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Carrier\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"1117\" y=\"903.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1117\" dy=\"0\">Carrier</tspan></text></g><g><rect x=\"617\" y=\"871\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Shipwell\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"692\" y=\"903.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"692\" dy=\"0\">Shipwell</tspan></text></g><g><rect x=\"0\" y=\"871\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"You\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"903.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Your system</tspan></text></g><g><line id=\"actor2\" x1=\"1117\" y1=\"65\" x2=\"1117\" y2=\"871\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Carrier\"></line><g id=\"root-2\"><rect x=\"1042\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Carrier\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"1117\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"1117\" dy=\"0\">Carrier</tspan></text></g></g><g><line id=\"actor1\" x1=\"692\" y1=\"65\" x2=\"692\" y2=\"871\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Shipwell\"></line><g id=\"root-1\"><rect x=\"617\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Shipwell\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"692\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"692\" dy=\"0\">Shipwell</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"871\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"You\"></line><g id=\"root-0\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"You\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Your system</tspan></text></g></g><style>#mermaid-1791068209438{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1791068209438 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1791068209438 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1791068209438 .error-icon{fill:#552222;}#mermaid-1791068209438 .error-text{fill:#552222;stroke:#552222;}#mermaid-1791068209438 .edge-thickness-normal{stroke-width:1px;}#mermaid-1791068209438 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1791068209438 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1791068209438 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1791068209438 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1791068209438 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1791068209438 .marker{fill:#333333;stroke:#333333;}#mermaid-1791068209438 .marker.cross{stroke:#333333;}#mermaid-1791068209438 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1791068209438 p{margin:0;}#mermaid-1791068209438 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1791068209438 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1791068209438 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1791068209438 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-1791068209438 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1791068209438 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1791068209438 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1791068209438 .sequenceNumber{fill:white;}#mermaid-1791068209438 #sequencenumber{fill:#333;}#mermaid-1791068209438 #crosshead path{fill:#333;stroke:#333;}#mermaid-1791068209438 .messageText{fill:#333;stroke:none;}#mermaid-1791068209438 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1791068209438 .labelText,#mermaid-1791068209438 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1791068209438 .loopText,#mermaid-1791068209438 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1791068209438 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1791068209438 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1791068209438 .noteText,#mermaid-1791068209438 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1791068209438 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1791068209438 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1791068209438 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1791068209438 .actorPopupMenu{position:absolute;}#mermaid-1791068209438 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1791068209438 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1791068209438 .actor-man circle,#mermaid-1791068209438 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1791068209438 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g></g><defs><symbol id=\"computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><g><rect x=\"50\" y=\"95\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"667\" height=\"42\" class=\"note\"></rect><text x=\"384\" y=\"100\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"384\">Once, at setup</tspan></text></g><g><rect x=\"50\" y=\"393\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"1092\" height=\"42\" class=\"note\"></rect><text x=\"596\" y=\"398\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"596\">Every time the documents change, with no calls from you</tspan></text></g><g><rect x=\"50\" y=\"691\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"667\" height=\"42\" class=\"note\"></rect><text x=\"384\" y=\"696\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"384\">Only when you need it</tspan></text></g><text x=\"382\" y=\"152\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">POST /tracking/webhooks { url, event_names: [\"documents.updated\"], ... }</text><line x1=\"76\" y1=\"191\" x2=\"688\" y2=\"191\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><line x1=\"76\" y1=\"191\" x2=\"76\" y2=\"191\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"76\" y=\"195\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">1</text><text x=\"385\" y=\"206\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">201 webhook id + signing secret (shown once)</text><line x1=\"691\" y1=\"245\" x2=\"79\" y2=\"245\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><line x1=\"691\" y1=\"245\" x2=\"691\" y2=\"245\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"691\" y=\"249\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">2</text><text x=\"382\" y=\"260\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">POST /tracking/webhooks/{webhook_id}/test</text><line x1=\"76\" y1=\"299\" x2=\"688\" y2=\"299\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><line x1=\"76\" y1=\"299\" x2=\"76\" y2=\"299\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"76\" y=\"303\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">3</text><text x=\"385\" y=\"314\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">tracking.webhook.test (signed)</text><line x1=\"691\" y1=\"353\" x2=\"79\" y2=\"353\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#filled-head)\" style=\"fill: none;\"></line><line x1=\"691\" y1=\"353\" x2=\"691\" y2=\"353\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"691\" y=\"357\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">4</text><text x=\"906\" y=\"450\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">BOL, delivery receipt... (Shipwell retrieves them)</text><line x1=\"1116\" y1=\"489\" x2=\"696\" y2=\"489\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><line x1=\"1116\" y1=\"489\" x2=\"1116\" y2=\"489\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"1116\" y=\"493\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">5</text><text x=\"385\" y=\"504\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">documents.updated, full collection with download links (signed)</text><line x1=\"691\" y1=\"543\" x2=\"79\" y2=\"543\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#filled-head)\" style=\"fill: none;\"></line><line x1=\"691\" y1=\"543\" x2=\"691\" y2=\"543\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"691\" y=\"547\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">6</text><text x=\"382\" y=\"558\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">2xx within 10 seconds</text><line x1=\"76\" y1=\"597\" x2=\"688\" y2=\"597\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><line x1=\"76\" y1=\"597\" x2=\"76\" y2=\"597\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"76\" y=\"601\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">7</text><text x=\"595\" y=\"612\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Download each file from content.url</text><line x1=\"76\" y1=\"651\" x2=\"1113\" y2=\"651\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><line x1=\"76\" y1=\"651\" x2=\"76\" y2=\"651\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"76\" y=\"655\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">8</text><text x=\"382\" y=\"748\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">GET base64_link, or GET /documents/{resource_id}</text><line x1=\"76\" y1=\"787\" x2=\"688\" y2=\"787\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><line x1=\"76\" y1=\"787\" x2=\"76\" y2=\"787\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"76\" y=\"791\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">9</text><text x=\"385\" y=\"802\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">The files inline, or the collection on demand</text><line x1=\"691\" y1=\"841\" x2=\"79\" y2=\"841\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><line x1=\"691\" y1=\"841\" x2=\"691\" y2=\"841\" stroke-width=\"0\" marker-start=\"url(#sequencenumber)\"></line><text x=\"691\" y=\"845\" font-family=\"sans-serif\" font-size=\"12px\" text-anchor=\"middle\" class=\"sequenceNumber\">10</text></svg></div>\n<ol>\n<li>\n<strong>Subscribe, once.</strong>\n Register your URL with \n<code class=\"language-text\">documents.updated</code>\n in \n<code class=\"language-text\">event_names</code>\n, or tick \n<strong>Document updates</strong>\n on the webhook you already have.\n</li>\n<li>\n<strong>Send a test, once.</strong>\n The same test as for tracking proves Shipwell reaches your endpoint and your signature check passes.\n</li>\n<li>\n<strong>Receive updates.</strong>\n Book freight as usual. Each time its documents change, a signed \n<code class=\"language-text\">documents.updated</code>\n event arrives at your URL, usually within a minute or two.\n</li>\n<li>\n<strong>Download the files.</strong>\n Each file carries a fresh download link. Fetch it as soon as the event arrives; you make no API call.\n</li>\n<li>\n<strong>Pull when you need to.</strong>\n If a link is missing or has expired, the document's \n<code class=\"language-text\">base64_link</code>\n returns its files inline. \n<a href=\"/docs/direct-carrier-connections/documents/\"><code class=\"language-text\">GET /documents/{resource_id}</code></a>\n returns the current collection at any time.\n</li>\n</ol>\n<h2 style=\"position:relative;\"><a href=\"#before-you-start\" aria-label=\"before you start permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"before-you-start\"></div>Before you start</h2>\n<ul>\n<li>\n<strong>Documents webhooks must be enabled for your company</strong>\n, in addition to tracking webhooks. Until they are, asking for \n<code class=\"language-text\">documents.updated</code>\n answers \n<code class=\"language-text\">403</code>\n with \n<code class=\"language-text\">documents_webhooks_not_enabled</code>\n. Contact your Shipwell representative to turn them on.\n</li>\n<li>\n<strong>Everything else is as for tracking webhooks.</strong>\n Your endpoint must be public HTTPS, answer any \n<code class=\"language-text\">2xx</code>\n within 10 seconds, and verify every delivery's signature. See \n<a href=\"/docs/direct-carrier-connections/tracking-webhooks/#before-you-start\">Before you start</a>\n on the Tracking Webhooks page.\n</li>\n</ul>\n<h2 style=\"position:relative;\"><a href=\"#subscribe\" aria-label=\"subscribe permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"subscribe\"></div>Subscribe</h2>\n<h3 style=\"position:relative;\"><a href=\"#in-the-shipwell-app\" aria-label=\"in the shipwell app permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"in-the-shipwell-app\"></div>In the Shipwell app</h3>\n<p>Open <strong>Company → Webhooks</strong>. In the <strong>Tracking</strong> section, choose <strong>Edit</strong> on your webhook, or <strong>Set up tracking webhook</strong> if you don't have one yet. Under <strong>Events</strong>, tick <strong>Document updates</strong>, alongside <strong>Tracking updates</strong> or on its own, then save. At least one event must stay ticked.</p>\n<p>The webhook's details then list both events, and <strong>Delivery history</strong> shows which event each delivery carried in its <strong>Event</strong> column.</p>\n<h3 style=\"position:relative;\"><a href=\"#through-the-rest-api\" aria-label=\"through the rest api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"through-the-rest-api\"></div>Through the REST API</h3>\n<p>Include <code class=\"language-text\">documents.updated</code> in <code class=\"language-text\">event_names</code> when you register your URL. Everything else about <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#step-1-register-your-url\">registering a URL</a> is unchanged.</p>\n<details open>\n  <summary>Example request</summary>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"38248683362691160000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`curl --request POST 'https://sandbox-api.shipwell.com/tracking/webhooks' \\\\\n--header 'Authorization: Token <user-token>' \\\\\n--header 'Content-Type: application/json' \\\\\n--data-raw '{\n  &quot;url&quot;: &quot;https://tms.example.com/hooks/shipwell&quot;,\n  &quot;event_names&quot;: [&quot;tracking.updated&quot;, &quot;documents.updated&quot;],\n  &quot;error_contact_email&quot;: &quot;integrations@example.com&quot;,\n  &quot;custom_data&quot;: { &quot;tms&quot;: &quot;acme-prod&quot; }\n}'`, `38248683362691160000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-38248683362691160000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"curl\"><pre class=\"language-curl\"><code class=\"language-curl\">curl --request POST &#39;https://sandbox-api.shipwell.com/tracking/webhooks&#39; \\\n--header &#39;Authorization: Token &lt;user-token&gt;&#39; \\\n--header &#39;Content-Type: application/json&#39; \\\n--data-raw &#39;{\n  &quot;url&quot;: &quot;https://tms.example.com/hooks/shipwell&quot;,\n  &quot;event_names&quot;: [&quot;tracking.updated&quot;, &quot;documents.updated&quot;],\n  &quot;error_contact_email&quot;: &quot;integrations@example.com&quot;,\n  &quot;custom_data&quot;: { &quot;tms&quot;: &quot;acme-prod&quot; }\n}&#39;</code></pre></div>\n      </div>\n</details>\n<p>The response is the same as for tracking, with <code class=\"language-text\">\"event_names\": [\"tracking.updated\", \"documents.updated\"]</code>. <strong>Store the <code class=\"language-text\">secret</code> now</strong>: it is returned only once.</p>\n<p>A company has one webhook, so registering again answers <code class=\"language-text\">409</code>. To add documents to a webhook you already registered, use the app.</p>\n<h2 style=\"position:relative;\"><a href=\"#receive-documentsupdated\" aria-label=\"receive documentsupdated permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"receive-documentsupdated\"></div>Receive <code class=\"language-text\">documents.updated</code></h2>\n<p>Shipwell sends <code class=\"language-text\">documents.updated</code> whenever the shipment's document collection changes:</p>\n<ul>\n<li>\nwhen document retrieval starts after the booking,\n</li>\n<li>\nwhen a document arrives or finishes,\n</li>\n<li>\nwhen retrieval completes or fails.\n</li>\n</ul>\n<p>If a check with the carrier changes nothing, nothing is sent. The headers and signature are exactly those of <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#headers\">tracking deliveries</a>.</p>\n<details open>\n  <summary>Example documents.updated (abridged to one document)</summary>\n<div class=\"code-wrapper\">\n        <div class=\"gatsby-code-button-container\"\n             data-toaster-id=\"26938778651112473000\"\n             data-toaster-duration=\"1500\"\n             onClick=\"copyCodeToClipboard(`{\n  &quot;id&quot;: &quot;01KC3B9R2T4V6X8Z0A2C4E6G8J&quot;,\n  &quot;event_name&quot;: &quot;documents.updated&quot;,\n  &quot;occurred_at&quot;: &quot;2026-08-23T17:05:00.031882+00:00&quot;,\n  &quot;webhook_id&quot;: &quot;01KC2W7HQ3M8R5T6V9X0YZABCD&quot;,\n  &quot;source&quot;: {\n    &quot;publishing_system&quot;: &quot;genesis&quot;,\n    &quot;company_id&quot;: &quot;3b1f6c2e-8a4d-4f7b-9c21-5e7d0a9b4c11&quot;,\n    &quot;environment&quot;: &quot;sandbox&quot;\n  },\n  &quot;custom_data&quot;: { &quot;tms&quot;: &quot;acme-prod&quot; },\n  &quot;sequence&quot;: 3,\n  &quot;details&quot;: {\n    &quot;resource_id&quot;: &quot;9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e&quot;,\n    &quot;documents&quot;: {\n      &quot;resource_id&quot;: &quot;9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e&quot;,\n      &quot;resource_type&quot;: &quot;document_collection&quot;,\n      &quot;self_link&quot;: &quot;https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e&quot;,\n      &quot;status&quot;: &quot;COMPLETED&quot;,\n      &quot;is_terminal&quot;: true,\n      &quot;documents&quot;: [\n        {\n          &quot;id&quot;: &quot;01KBZD1P4M0000000000000000&quot;,\n          &quot;resource_type&quot;: &quot;document&quot;,\n          &quot;document_type&quot;: &quot;BOL&quot;,\n          &quot;name&quot;: &quot;Bill of Lading&quot;,\n          &quot;status&quot;: &quot;COMPLETED&quot;,\n          &quot;completed_at&quot;: &quot;2026-08-23T17:04:18.220Z&quot;,\n          &quot;self_link&quot;: &quot;https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e/BOL&quot;,\n          &quot;base64_link&quot;: &quot;https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e/BOL?encoding=base64&quot;,\n          &quot;files&quot;: [\n            {\n              &quot;id&quot;: &quot;01KBZD1P4N0000000000000000&quot;,\n              &quot;format&quot;: &quot;PDF&quot;,\n              &quot;filename&quot;: &quot;bol-77120.pdf&quot;,\n              &quot;size_in_bytes&quot;: 184223,\n              &quot;content&quot;: {\n                &quot;url&quot;: { &quot;value&quot;: &quot;https://documents.example.com/bol-77120.pdf?X-Amz-Expires=600&X-Amz-Signature=...&quot; },\n                &quot;base64&quot;: null\n              }\n            }\n          ]\n        }\n      ],\n      &quot;errors&quot;: []\n    }\n  }\n}`, `26938778651112473000`)\"\n        >\n          <div class=\"gatsby-code-button\" title=\"Copy the code snippet\">Copy</div>\n          <div class=\"done-indicator done-indicator-26938778651112473000\">Copied</div>\n        </div>\n        <div class=\"gatsby-highlight\" data-language=\"json\"><pre class=\"language-json\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"01KC3B9R2T4V6X8Z0A2C4E6G8J\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"event_name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"documents.updated\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"occurred_at\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-08-23T17:05:00.031882+00:00\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"webhook_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"01KC2W7HQ3M8R5T6V9X0YZABCD\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"source\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"publishing_system\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"genesis\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"company_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"3b1f6c2e-8a4d-4f7b-9c21-5e7d0a9b4c11\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"environment\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"sandbox\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"custom_data\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token property\">\"tms\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"acme-prod\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"sequence\"</span><span class=\"token operator\">:</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"details\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"resource_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"documents\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token property\">\"resource_id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"resource_type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"document_collection\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"self_link\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"COMPLETED\"</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"is_terminal\"</span><span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"documents\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">{</span>\n          <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"01KBZD1P4M0000000000000000\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"resource_type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"document\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"document_type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"BOL\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Bill of Lading\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"status\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"COMPLETED\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"completed_at\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"2026-08-23T17:04:18.220Z\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"self_link\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e/BOL\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"base64_link\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://sandbox-api.shipwell.com/documents/9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e/BOL?encoding=base64\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token property\">\"files\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span>\n            <span class=\"token punctuation\">{</span>\n              <span class=\"token property\">\"id\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"01KBZD1P4N0000000000000000\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"format\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"PDF\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"filename\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"bol-77120.pdf\"</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"size_in_bytes\"</span><span class=\"token operator\">:</span> <span class=\"token number\">184223</span><span class=\"token punctuation\">,</span>\n              <span class=\"token property\">\"content\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span> <span class=\"token property\">\"value\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://documents.example.com/bol-77120.pdf?X-Amz-Expires=600&amp;X-Amz-Signature=...\"</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                <span class=\"token property\">\"base64\"</span><span class=\"token operator\">:</span> <span class=\"token null keyword\">null</span>\n              <span class=\"token punctuation\">}</span>\n            <span class=\"token punctuation\">}</span>\n          <span class=\"token punctuation\">]</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      <span class=\"token property\">\"errors\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n      </div>\n</details>\n<table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">id</code>, <code class=\"language-text\">occurred_at</code>, <code class=\"language-text\">webhook_id</code>, <code class=\"language-text\">source</code>, <code class=\"language-text\">custom_data</code></td>\n<td>As for <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#step-3-receive-trackingupdated\"><code class=\"language-text\">tracking.updated</code></a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">event_name</code></td>\n<td><code class=\"language-text\">documents.updated</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">sequence</code></td>\n<td>Increases for each <code class=\"language-text\">resource_id</code>, counted <strong>separately</strong> from <code class=\"language-text\">tracking.updated</code>. A shipment's tracking and documents each have their own sequence.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">details.documents</code></td>\n<td>The full collection, with every document so far rather than only the new ones. Same documents and statuses as <code class=\"language-text\">GET /documents/{resource_id}</code>, in the webhook's shape (<code class=\"language-text\">DocumentCollectionSummary</code>).</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">documents[].self_link</code></td>\n<td>The document's own endpoint, <code class=\"language-text\">GET /documents/{resource_id}/{document_type}</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">documents[].base64_link</code></td>\n<td>The same endpoint with <code class=\"language-text\">?encoding=base64</code>. Call it with your API key to get the files inline. It returns every document of that type, so pick the one whose <code class=\"language-text\">id</code> matches.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">files[].content.url.value</code></td>\n<td>A download link set when this delivery was sent. See <a href=\"#download-the-files\">Download the files</a>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">files[].content</code></td>\n<td><code class=\"language-text\">null</code> when Shipwell has no link for the file, for example a file it holds only inline. Use <code class=\"language-text\">base64_link</code>.</td>\n</tr>\n</tbody>\n</table>\n<h2 style=\"position:relative;\"><a href=\"#download-the-files\" aria-label=\"download the files permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"download-the-files\"></div>Download the files</h2>\n<p>The webhook never carries file content, so its size stays small whatever the documents weigh. Each file carries a link instead:</p>\n<ul>\n<li>\n<strong>A Shipwell link</strong>\n, valid for about \n<strong>10 minutes</strong>\n from when that delivery was sent, or\n</li>\n<li>\n<strong>the carrier's own link</strong>\n, which expires on the carrier's schedule.\n</li>\n</ul>\n<p>Download each file as soon as the event arrives, before you do anything slower. A retry of the same event is sent with fresh links.</p>\n<p>If a file has <code class=\"language-text\">content: null</code>, or its link has expired or fails, call the document's <code class=\"language-text\">base64_link</code> with your API key. It returns the files inline as base64 for every document of that <code class=\"language-text\">document_type</code>, so a shipment with two BOLs returns both: pick the document whose <code class=\"language-text\">id</code> matches, and call the link once per type rather than once per document. A file over 50 MB comes back with <code class=\"language-text\">too_large_for_inline: true</code> and a link instead. See <a href=\"/docs/direct-carrier-connections/documents/\">Documents</a> for the response.</p>\n<h2 style=\"position:relative;\"><a href=\"#handle-each-delivery\" aria-label=\"handle each delivery permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"handle-each-delivery\"></div>Handle each delivery</h2>\n<p>Use the same four rules as for <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#handle-each-delivery\">tracking deliveries</a>: ignore an <code class=\"language-text\">id</code> you have already processed; keep the highest <code class=\"language-text\">sequence</code> per <code class=\"language-text\">resource_id</code> and <code class=\"language-text\">event_name</code> and ignore anything lower; replace your copy of the collection rather than merging; store, acknowledge, then process.</p>\n<p>Two things are specific to documents:</p>\n<ul>\n<li>\n<strong>Keep sequences per event.</strong>\n Track the highest \n<code class=\"language-text\">sequence</code>\n per \n<code class=\"language-text\">resource_id</code>\n \n<em>and</em>\n \n<code class=\"language-text\">event_name</code>\n. A \n<code class=\"language-text\">documents.updated</code>\n with \n<code class=\"language-text\">sequence: 2</code>\n is not older than a \n<code class=\"language-text\">tracking.updated</code>\n with \n<code class=\"language-text\">sequence: 7</code>\n.\n</li>\n<li>\n<strong>A finished collection can reopen.</strong>\n When Shipwell retrieves a shipment's documents again, a later delivery can go back from \n<code class=\"language-text\">is_terminal: true</code>\n to \n<code class=\"language-text\">false</code>\n. Apply it by \n<code class=\"language-text\">sequence</code>\n like any other. This is unlike tracking, where a finished shipment never changes again.\n</li>\n</ul>\n<p><code class=\"language-text\">GET /documents/{resource_id}</code> carries no <code class=\"language-text\">sequence</code>, so it can't be ordered against deliveries: a delivery that was being retried while you pulled may hold an older collection than the one you pulled. Use the pull to fill gaps, such as catching up after downtime, keep applying deliveries by <code class=\"language-text\">sequence</code>, and pull that shipment again after applying any delivery that arrives after a pull. A retry can arrive hours later.</p>\n<h2 style=\"position:relative;\"><a href=\"#retries-pausing-and-delivery-history\" aria-label=\"retries pausing and delivery history permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"retries-pausing-and-delivery-history\"></div>Retries, pausing and delivery history</h2>\n<p>These work as for tracking webhooks, because it is the same webhook: see <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#retries\">Retries</a> and <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#pause-change-or-remove-a-webhook\">Pause, change or remove a webhook</a>. Pausing the webhook pauses both events.</p>\n<p>One difference: a retry of a <code class=\"language-text\">documents.updated</code> event keeps its <code class=\"language-text\">id</code> and <code class=\"language-text\">sequence</code>, but its file links are made fresh for that attempt, so the body changes. Recognise a retry by its <code class=\"language-text\">id</code>, never by comparing bodies, and always download from the links in the attempt you received, not from an earlier one.</p>\n<h2 style=\"position:relative;\"><a href=\"#errors\" aria-label=\"errors permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"errors\"></div>Errors</h2>\n<table>\n<thead>\n<tr>\n<th>Status</th>\n<th><code class=\"language-text\">code</code></th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">403</code></td>\n<td><code class=\"language-text\">documents_webhooks_not_enabled</code></td>\n<td><code class=\"language-text\">event_names</code> includes <code class=\"language-text\">documents.updated</code>, and documents webhooks aren't enabled for your company yet. Contact your Shipwell representative, or leave it out of <code class=\"language-text\">event_names</code>.</td>\n</tr>\n<tr>\n<td><code class=\"language-text\">403</code></td>\n<td><code class=\"language-text\">webhooks_not_enabled</code></td>\n<td>Tracking webhooks, which documents webhooks ride on, aren't enabled for your company yet.</td>\n</tr>\n</tbody>\n</table>\n<p>Every other error is as listed for <a href=\"/docs/direct-carrier-connections/tracking-webhooks/#errors\">tracking webhooks</a>.</p>\n<h2 style=\"position:relative;\"><a href=\"#troubleshooting\" aria-label=\"troubleshooting permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"troubleshooting\"></div>Troubleshooting</h2>\n<table>\n<thead>\n<tr>\n<th>Symptom</th>\n<th>Check</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Tracking arrives but no <code class=\"language-text\">documents.updated</code></td>\n<td>That the webhook's events include <code class=\"language-text\">documents.updated</code> (the details in <strong>Company → Webhooks</strong> list them), and that the shipment's documents have changed since you subscribed. <code class=\"language-text\">GET /documents/{resource_id}</code> shows the current collection.</td>\n</tr>\n<tr>\n<td>A download link answers <code class=\"language-text\">403</code> or <code class=\"language-text\">AccessDenied</code></td>\n<td>It has expired. Shipwell links last about 10 minutes, so download on receipt, or call the document's <code class=\"language-text\">base64_link</code>.</td>\n</tr>\n<tr>\n<td>A file has <code class=\"language-text\">content: null</code></td>\n<td>Shipwell holds that file without a link. Call the document's <code class=\"language-text\">base64_link</code>.</td>\n</tr>\n<tr>\n<td>Documents look older than what you already have</td>\n<td>You applied a lower <code class=\"language-text\">sequence</code>, or compared against the tracking sequence. Keep the highest <code class=\"language-text\">sequence</code> per <code class=\"language-text\">resource_id</code> and <code class=\"language-text\">event_name</code>.</td>\n</tr>\n</tbody>\n</table>\n<h2 style=\"position:relative;\"><a href=\"#api-reference\" aria-label=\"api reference permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"api-reference\"></div>API reference</h2>\n<p><a href=\"https://docs.shipwell.com/openapi_pages/carrier-connections/tag/Tracking-Webhooks/\">Tracking Webhooks API reference</a>: the <code class=\"language-text\">documents.updated</code> payload with every field, under <strong>Webhooks</strong>.</p>\n<h2 style=\"position:relative;\"><a href=\"#next-steps\" aria-label=\"next steps permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><div class=\"hidden-anchor\" id=\"next-steps\"></div>Next steps</h2>\n<p>Read <a href=\"/docs/direct-carrier-connections/documents/\">Documents</a> for what the collection's fields and statuses mean, and <a href=\"/docs/direct-carrier-connections/tracking-webhooks/\">Tracking Webhooks</a> for verifying signatures, with Node.js and Python examples.</p>","headings":[{"value":"Documents Webhooks","depth":1},{"value":"How it works","depth":2},{"value":"Before you start","depth":2},{"value":"Subscribe","depth":2},{"value":"In the Shipwell app","depth":3},{"value":"Through the REST API","depth":3},{"value":"Receive <code class=\"language-text\">documents.updated</code>","depth":2},{"value":"Download the files","depth":2},{"value":"Handle each delivery","depth":2},{"value":"Retries, pausing and delivery history","depth":2},{"value":"Errors","depth":2},{"value":"Troubleshooting","depth":2},{"value":"API reference","depth":2},{"value":"Next steps","depth":2}]},"contentItem":{"data":{"lastModified":"2026-10-03T23:48:23.000Z","enableToc":null,"disableLastModified":null,"tocMaxDepth":null,"requestLogin":false}},"siteConfig":{"enableToc":true,"disableLastModified":false,"tocMaxDepth":4}},"pageContext":{"matchPath":"","id":"f7f3335e-a14c-53d7-9c56-a02229323b3e__redocly content/docs/direct-carrier-connections/documents-webhooks/","seo":{"title":"Documents Webhooks","description":null,"image":"","keywords":null,"jsonLd":null,"lang":null,"siteUrl":null},"pageId":"docs/direct-carrier-connections/documents-webhooks.md","pageBaseUrl":"/docs/direct-carrier-connections/documents-webhooks","type":"markdown","toc":{"enable":true,"maxDepth":4,"headings":[{"depth":1,"value":"Documents Webhooks","id":"documents-webhooks"},{"depth":2,"value":"How it works","id":"how-it-works"},{"depth":2,"value":"Before you start","id":"before-you-start"},{"depth":2,"value":"Subscribe","id":"subscribe"},{"depth":3,"value":"In the Shipwell app","id":"in-the-shipwell-app"},{"depth":3,"value":"Through the REST API","id":"through-the-rest-api"},{"depth":2,"value":"Receive <code class=\"language-text\">documents.updated</code>","id":"receive-documentsupdated"},{"depth":2,"value":"Download the files","id":"download-the-files"},{"depth":2,"value":"Handle each delivery","id":"handle-each-delivery"},{"depth":2,"value":"Retries, pausing and delivery history","id":"retries-pausing-and-delivery-history"},{"depth":2,"value":"Errors","id":"errors"},{"depth":2,"value":"Troubleshooting","id":"troubleshooting"},{"depth":2,"value":"API reference","id":"api-reference"},{"depth":2,"value":"Next steps","id":"next-steps"}]},"data":{"title":"Documents Webhooks"},"catalogInfo":null,"link":"/docs/direct-carrier-connections/documents-webhooks/","sidebarName":"developerPortal","isLanding":false,"showPrevButton":null,"showNextButton":null,"apiVersions":null,"apiVersionId":null,"isDefaultApiVersion":null}},"staticQueryHashes":["1123603147","1302185487","1344209882","1398840060","1520077861","1975142765","2667623876","2950305614","3240152602","3743992808","561138138"]}