# POD Downloader

The **POD Downloader** is a standalone window for fetching **Proof of Delivery** PDFs in bulk straight from the carrier's website. Instead of pulling each PDF one-by-one for disputes or accounting, you paste a list of tracking numbers (or tracking URLs), choose a carrier, and the tool downloads every PDF into a single folder.

<figure><img src="/files/VsJCMe6vGfGinViIKrrW" alt=""><figcaption><p>The POD Downloader window — paste one tracking number or tracking URL per line, pick a carrier, parse, and click <strong>Download PODs</strong>.</p></figcaption></figure>

## Where to find it

You can access the **POD Downloader** from the **Features tab** in the main window (POD Downloader button under the Functions section).

## Supported carriers

The POD Downloader currently supports:

* **UPS**
* **DHL**
* **DPD**

Any other carrier will show **Needs carrier** in the row Status column and will be skipped during download.

## How to use it

### 1. Paste your trackings

Paste one tracking per line into the **Paste Trackings** textbox. Each line can be either:

* A bare tracking number (`1Z999AA10123456784`)
* A full carrier tracking URL (`https://www.ups.com/track?tracknum=1Z999AA10123456784`)

The parser extracts the tracking number from URLs automatically.

### 2. Pick a carrier mode

Use the **Carrier** dropdown in the top right:

* **Auto** *(default)* — detects the carrier from the URL host or the tracking-number format.
* **UPS / DHL / DPD** — forces every line to be parsed as that carrier. Useful when you have raw tracking numbers without URLs.

### 3. Parse

Click **Parse**. The tool:

* Splits the textbox into lines and trims whitespace.
* Deduplicates by `carrier:tracking` (so pasting the same tracking twice is fine).
* Resolves each line into a row with a detected carrier.

The summary strip on the right shows a live count: *`N trackings / X ready / Y need carrier`*.

### 4. Adjust per-row carrier (optional)

Each row has its own **Carrier** dropdown. If a row was detected as the wrong carrier, or shows `Needs carrier`, pick the correct one inline — the row's status updates immediately.

### 5. Download

Click **Download PODs**. The tool walks every row that is **Ready** and:

* Calls the carrier's POD endpoint and saves the PDF.
* Updates the row's status as it goes (`Downloading` → `Downloaded` / `Saved` / `Failed`).
* Shows a final snackbar: *`PODs finished. Downloaded: X, skipped: Y, failed: Z.`*

### 6. Open the folder

Click **Open Folder** to jump straight into the destination folder in Windows Explorer.

## Where the PDFs are saved

PODs are written to a **`Delivery PDFs`** folder next to the tool's startup directory. Each file is named after the tracking number — `1Z999AA10123456784.pdf` etc.

The folder is created automatically the first time you download. Files already present in this folder are **not re-downloaded** — the row status switches to **Saved** instead, so you can paste the same list across multiple sessions without re-hitting carrier APIs.

## Status reference

| Status            | Meaning                                                                        |
| ----------------- | ------------------------------------------------------------------------------ |
| **Ready**         | Row has a valid tracking + supported carrier — will be downloaded.             |
| **Saved**         | A non-empty PDF for this tracking already exists in the Delivery PDFs folder.  |
| **Downloading**   | The tool is currently fetching this row's PDF.                                 |
| **Downloaded**    | PDF was just saved.                                                            |
| **Needs carrier** | Carrier is `NaN` or unsupported — pick UPS, DHL, or DPD from the row dropdown. |
| **Invalid**       | Tracking code is missing or `untrackable`.                                     |
| **Failed**        | Download failed — hover the row to see the error reason.                       |

## Tips

* **Mixing carriers in one batch is fine** — leave the Carrier dropdown on **Auto** and paste a mix of UPS/DHL/DPD URLs. Parse handles them per-row.
* **Re-runs are cheap** — a second click of Download PODs on the same list will only retry the rows that previously failed; everything else is already on disk and shows **Saved**.
* **Empty list?** Click **Parse** without any text to clear the rows, or use the **Clear** button to wipe both the textbox and the row list.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.restock.gg/features/functions/pod-downloader.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
