How to track inbound shipments and landed cost as CPG Founders

Ops & SupplyFor CPG Founders2 apps12 steps~24 min to set up

You're running inbound shipments across a co-packer in the Midwest, a contract manufacturer overseas, and a 3PL, and your 'visibility' is a combination of forwarded carrier emails, a shared Google Sheet your freight broker updates when they remember, and QuickBooks bills that arrive weeks after product lands. Landed cost is a guess — you add freight, maybe remember to include customs duties, and forget about ISF fees, chassis charges, and the drayage invoice that shows up 45 days late. By the time you know what a SKU actually cost to produce and land, you've already priced it for a Whole Foods reset.

Ops & SupplyFor CPG Founders2 apps12 steps~24 min to set up
Outcome

What you'll set up

A live inbound shipment tracker that pulls confirmed POs, shipment milestones, and estimated arrival dates into one dashboard — so you stop chasing your freight broker's inbox
A landed cost calculator that accumulates every charge (freight, duties, customs broker fees, drayage, inspection) against each PO as bills arrive, giving you a true cost per unit before the product hits your 3PL
Automated alerts when a container is delayed past its ETA, when a landed cost is running 15%+ over estimate, or when a new charge hits a shipment you thought was closed
The Starch recipe

Apps, data, and prompts

The combination of Starch apps, the data sources they pull from, and the prompts you use to drive them.

Data sources & config

Starch connects directly to QuickBooks (scheduled sync) to pull PO data, bills, vendor records, and payment status. Transaction Insights connects to your Plaid-linked bank accounts (scheduled sync) to catch freight and customs charges hitting your account before they're coded in QuickBooks. Carrier and freight forwarder portals without APIs — Flexport, Freightos, or your broker's TMS — are automated through your browser, no API needed. Slack is wired as a scheduled-sync provider for automated shipment digests.

Prompts to copy
Build me an inbound shipment tracker that shows every open PO with the supplier name, expected quantity by SKU, ship date, estimated arrival date, current shipment status, and port of entry. Pull PO data from QuickBooks. Let me add manual status notes for each shipment and flag any container that's more than 7 days past ETA.
Build me a landed cost tracker that links each inbound PO to its associated charges — ocean freight, customs duties, ISF fees, drayage, inspection, and any other bills tagged to that shipment. Pull bills from QuickBooks and flag any PO where total landed charges are more than 12% above the freight estimate I entered when I cut the PO. Show me the running cost-per-unit for each SKU as charges come in.
Set up a weekly Monday morning automation: pull all open inbound shipments, check which ones have arrival dates in the next 14 days, and Slack me a summary with the PO number, SKU, quantity, expected landing date, and current landed cost vs. estimate for each one.
Run these in Starch → or paste them into your favorite agent
Walkthrough

Step-by-step

1 Connect QuickBooks to Starch (scheduled sync). Starch will pull your open POs, bills, vendor list, and payment records on a recurring schedule — this is the backbone of both your shipment tracker and your landed cost accumulator.
2 Connect your Plaid-linked business bank account (scheduled sync). This lets Transaction Insights catch freight and customs charges that hit your account before your bookkeeper has coded them in QuickBooks — useful for closing the gap on landed cost in real time.
3 If you use Flexport, Freightos, or a broker with a web portal, describe the workflow to Starch. Starch automates those portals through your browser — no API needed — to pull shipment status, milestone updates, and arrival date estimates directly into your tracker.
4 Describe your inbound shipment tracker in natural language. Tell Starch which fields matter to you: PO number, supplier, SKU and quantity, origin country, ship date, ETA, current status, port of entry. Starch builds the app and wires it to your QuickBooks POs.
5 Add your landed cost structure. Tell Starch the cost components you track — ocean freight estimate, actual ocean freight, customs duties, ISF, drayage, customs broker fee, inspection charges, any other line items. Starch builds a cost accumulator that links each bill to the right PO as it syncs from QuickBooks.
6 Set your variance threshold. Tell Starch what deviation triggers a flag — for example, 'alert me when total landed charges on any PO exceed my freight estimate by more than 12%.' Starch builds the alert logic and surfaces flagged shipments at the top of your dashboard.
7 Set up your ETA watchdog. Describe the rule: 'Flag any open container that is more than 7 days past its estimated arrival date and hasn't been marked received.' Starch builds the logic and you can trigger a Slack message or email when the condition fires.
8 Wire the Monday morning automation. Tell Starch: 'Every Monday at 8am, pull all open inbound shipments arriving in the next 14 days from my tracker, calculate the running landed cost vs. estimate for each, and Slack me a summary with PO number, SKU, quantity, expected landing date, and variance.' Starch schedules and runs it.
9 As bills arrive in QuickBooks — drayage, chassis, inspection — Starch's scheduled sync picks them up and adds them to the running landed cost for the matched PO. Your cost-per-unit for each SKU updates automatically without any manual entry.
10 Use Transaction Insights to catch charges that haven't hit QuickBooks yet. When a $4,200 customs payment clears your bank, Transaction Insights flags it. You can tag it to the open PO so your landed cost figure is current even if the bill isn't coded yet.
11 Once a shipment is marked received, Starch closes the PO in your tracker and locks the final landed cost. That number feeds into Inventory Planner (when it launches) so your reorder math uses true landed cost, not your original estimate.
12 Review the weekly digest each Monday before your ops standup. The summary gives you a 14-day look-ahead on incoming product with real-time cost variance, so you know before containers land whether a shipment is going to blow your margin assumptions.

See this running on Starch

Connect your tools, describe what you want, and the agent builds it. Closed beta is free.

Try it on Starch →
Worked example

Q1 2026 Inbound — 3-Container Cycle (January–March)

Sample numbers from a real run
PO #1041 — Oat Clusters 12oz, 2,400 cases — Ocean freight estimate4,800
PO #1041 — Actual ocean freight (Flexport invoice)5,340
PO #1041 — Customs duties (CBP entry)1,820
PO #1041 — ISF filing fee95
PO #1041 — Drayage + chassis (billed 38 days after landing)780
PO #1041 — Customs broker fee350
PO #1041 — Total landed cost (2,400 cases)8,385
PO #1041 — Cost per case (landed)3.49
PO #1041 — Original cost-per-case estimate2.77

In January you cut PO #1041 for 2,400 cases of your 12oz Oat Clusters from your co-manufacturer in Vietnam. Your freight estimate was $4,800 — about $2.00/case — which put your modeled landed cost at $2.77/case against a $7.99 shelf price. The container shipped February 3rd. Starch pulled the Flexport status update through browser automation and showed the vessel arriving 11 days late due to a port congestion delay in Long Beach, triggering your ETA alert in the tracker. When the container finally cleared customs, the CBP entry came in at $1,820 in duties — higher than modeled because your HTS classification got challenged and reclassified at a higher rate. The drayage invoice didn't arrive in QuickBooks until 38 days after landing. Without Starch accumulating charges as they hit, your March books would have shown a false per-case cost of $3.06, and the drayage would have landed as a mystery charge in April. With the full landed cost picture — $8,385 total, $3.49/case — you caught before your next Whole Foods order that your contribution margin on this SKU had compressed from 65% to 56%, and you had the numbers to have a real conversation with your co-manufacturer about renegotiating the freight terms on the next run.

Measurement

How you'll know it's working

Landed cost per case by SKU (vs. estimate at time of PO)
Days from ship date to received-at-3PL (actual vs. projected lead time)
Landed cost variance % — total actual charges vs. freight estimate across all open POs
Late container rate — % of inbound containers arriving more than 7 days past ETA in a rolling quarter
Unbilled charges aging — dollar value of shipment-related charges that have cleared the bank but aren't yet coded in QuickBooks
Comparison

What this replaces

The other ways teams handle this today, and how the Starch version compares.

Flexport + manual QuickBooks reconciliation
Flexport gives you shipment milestones but doesn't accumulate landed cost components or alert you when variance crosses a threshold — you still have to pull bills manually and do the math in a spreadsheet after every PO closes.
Google Sheets shipment tracker (shared with freight broker)
Free and familiar, but it only gets updated when someone remembers to update it, there's no link to your actual QuickBooks bills, and landed cost accuracy depends entirely on your broker's discipline.
NetSuite Supply Chain Management
NetSuite handles inbound logistics and landed cost natively, but the implementation alone costs $30k–$80k and assumes you have a full-time ops manager to configure and maintain it — not the right fit until you're past $10M in revenue.
Cin7 or Fishbowl (inventory + PO management)
Both support POs and landed cost allocation, but they're designed around warehouse receiving workflows, not founder-level visibility — getting a clean 'cost-per-case landed' number still requires manual cost layer entries and a trained user who knows the system.
On Starch RECOMMENDED

One platform — inventory planner, transaction insights all running on connected data. Setup in plain English; numbers stay current via scheduled syncs and live agent queries.

Try it on Starch →
FAQ

Frequently asked questions

Can Starch pull shipment status from my freight forwarder if they use a portal like Flexport or Freightos?
Yes. If your forwarder has a web portal you log into, Starch can automate it through your browser — no API needed. You tell Starch which portal you use and what data you want (status milestones, ETA, container number), and Starch handles the navigation. This is the same approach it uses for sites that don't offer a formal integration.
What if my drayage or chassis bills come in 30–45 days after the container lands? Will Starch still catch them?
Yes. Starch syncs your QuickBooks bills on a schedule, so when a late drayage invoice finally lands in QuickBooks, the next sync picks it up and adds it to the running landed cost for the matched PO. You can also use Transaction Insights — which connects to your Plaid bank accounts on a schedule — to catch charges that clear your bank before your bookkeeper has coded them.
My landed cost has a lot of components that vary by shipment — THC surcharges, fumigation fees, port inspection charges. Can the tracker handle that?
Yes. When you describe the landed cost tracker to Starch, you tell it which line items matter to you. You're not locked into a predefined category list. If you add a new charge type mid-year, describe it to Starch and it updates the app. The goal is that your tracker reflects how your supply chain actually works, not a generic template.
Can Starch handle multi-currency shipments — for example, a vendor invoice in USD but duties in CAD if I'm shipping into Canada?
QuickBooks handles multi-currency natively, and Starch syncs that data. If you want a landed cost view that normalizes everything to USD (or another base currency), describe that in your app prompt and Starch builds the conversion logic. It won't guess at exchange rates — you'd specify the source (e.g., the rate recorded in QuickBooks at time of bill entry).
Does Starch store my shipment history long-term, or is it real-time only?
Starch is built for live data surfaces, not a long-horizon data warehouse. QuickBooks data syncs on a schedule and lives in Starch's database, so your historical POs and bills are accessible as long as they exist in QuickBooks. If you need deep multi-year analytics or archival reporting, a dedicated data warehouse would serve that better — but for tracking open and recently closed shipments and catching real-time cost variances, Starch is well-suited.
The Inventory Planner app sounds useful — is it available now?
Inventory Planner is currently in development. You can request beta access to get notified when it launches. In the meantime, you can build a custom inventory dashboard in Starch by describing what you need — SKU-level stock across your co-packer, 3PL, and warehouses, reorder point logic, shelf-life flags — and Starch will build it for you using your connected data sources.

Ready to run track inbound shipments and landed cost on Starch?

Request closed-beta access. Everything is free during beta.

You're on the list! We'll be in touch soon.