# Turn port arrivals into HubSpot tasks for your ship supply desk

> Every morning we scan the ships heading for your ports, match each owner to your CRM, and raise a task with the vessel, ETA and last port.

- Workflow type: agent
- Services: MarineTraffic, HubSpot, Slack
- Categories: Sales, Operations
- Published: 2026-08-07

## What it does

- Checks every port you cover each morning for the vessels due in, including ones that have not yet declared where they are heading.
- Looks up each vessel's type, size and registered owner or manager, then keeps only the ship types you actually supply.
- Skips anything arriving in under 24 hours, so you only see calls you can still mobilise for.
- Finds or creates the owner's account in your CRM and raises a task due the day before arrival, with the vessel name, ETA and last port in the subject.
- Posts one morning summary to your team channel, split into existing accounts and new prospects, so the desk knows where to aim the quoting effort.

## What you'll need

- A MarineTraffic account with the expected arrivals service and the vessel details service enabled. Each service comes with its own separate key.
- A HubSpot account where you can create companies and tasks.
- A Slack workspace and the channel your desk checks in the morning.
- Your list of ports, written as MarineTraffic port IDs or UN/LOCODEs.
- The list of vessel types you actually service, and how many hours of notice you need to mobilise.

## Prompt

Every morning at 06:00, on a cron trigger, turn the ships heading for the ports we cover into real pipeline for our ship chandlery and port agency desk. Keep the port list, the serviceable vessel types and the mobilisation cut off as configurable inputs at the top of the workflow, so the desk can change them without editing logic. Ports are given as MarineTraffic port IDs or UN/LOCODEs.

For each port in the list, call MarineTraffic Expected Port Arrivals to get the vessels that have already declared us as their destination. Then call MarineTraffic Predictive Port Arrivals for the same port to catch vessels that are likely inbound but have not declared a destination yet. Merge the two lists per port, de-duplicate on the vessel identifier, keep the earliest credible ETA, and record whether each candidate came from the declared list or the predictive one. That distinction matters to the desk, so carry it all the way through to the task and the summary.

Enrich every remaining candidate with MarineTraffic Vessel Particulars to pull the vessel type, the size (deadweight or dimensions), and the registered owner or manager. Vessels are addressed by IMO or MMSI, so carry those identifiers through from the arrivals calls. Note that MarineTraffic issues a separate API key per service, so the arrivals calls and the particulars call may need two different keys.

Filter the enriched list twice. First, keep only the vessel types we service. Default that list to bulk carriers, tankers, container ships and general cargo vessels, and expose it as a configurable input. Second, drop any arrival whose ETA is less than 24 hours away, because we cannot mobilise supply in time. Make that 24 hour floor a configurable input as well. Everything else is dropped silently and does not need reporting.

This runs daily against the same ports, so the same vessel will reappear on consecutive runs while it is still inbound. Before raising anything, use HubSpot Search Tasks to look for an open task that already covers that vessel and that voyage, matching on the vessel name and the arrival date carried in the task subject. If one exists, skip the vessel and count it as already covered so it can be reported in the summary. Do not raise a second task for a voyage that is already on the board.

For each vessel that survives, take the registered owner or manager name and look it up in HubSpot with Search Companies. If there is a confident match, use that company and treat the vessel as an existing account. If there is genuinely no match, create the account with HubSpot Create Company using the owner or manager name plus whatever country or address detail the vessel particulars returned, and treat it as a new prospect. Do not create a company when the match is merely plausible; prefer the existing record and note the ambiguity in the task body instead.

In every case, raise a HubSpot task with Create Task, due the day before the vessel's ETA. Put the vessel name, the ETA and the last port in the subject, for example: MV Northern Star, ETA Rotterdam 14 Mar 08:00, last port Hamburg. Associate the task with the company record. In the task body, include the vessel type, size, owner or manager, the port, whether the arrival came from the declared or the predictive list, and any note about an ambiguous company match.

Finish with a single Slack message using Send a Message to the desk channel. Split the day's arrivals into two sections: existing accounts, where we already have a relationship and should be quoting, and new prospects, where the account was just created. For each vessel, show the vessel name, type, port, ETA and the owner or manager. Open with a one line header giving the totals for each section and how many vessels were skipped because a task already existed. Post one message for the whole run, never one message per vessel.

## How to customize

- The mobilisation cut off. It ships at 24 hours, which is what most chandlers need to get stores to the quay. Raise it to 48 or 72 hours if you run longer lead times on provisions or bunkers, or drop it if you have stock on the dock.
- The serviceable vessel type list. It ships with bulk carriers, tankers, container ships and general cargo. Trim it to the ships you genuinely quote, or widen it for a port agency desk that handles anything that berths.
- The ports, the run time and the Slack channel. Add or remove ports as you open new coverage, and change who the HubSpot tasks are assigned to so they land with the right agent.

## FAQ

### Why does MarineTraffic give me more than one key?

MarineTraffic sells each data service separately, and each one comes with its own 40 character key. This workflow uses two of them: the expected arrivals service and the vessel details service. If you have both, you will have two keys and you connect each one where it is asked for. If you only have one today, you can add the other from your MarineTraffic account page.

### Will it raise a duplicate task for the same ship every day?

No. The same vessel stays on the arrivals board for days while it is still inbound, so before raising anything the workflow checks your CRM for an open task already covering that vessel and that voyage. If one exists it skips the vessel and tells you in the morning summary how many were skipped.

### What are predictive arrivals and why do I want them?

Plenty of ships have not told anyone where they are going yet, so they never appear on a standard expected arrivals board. Predictive arrivals uses the vessel's movement history to flag the ones likely to turn up at your port anyway. That is where the early quoting advantage is, because nobody else is calling those owners yet.

### Does this work on the free version of HubSpot?

Yes. Companies and tasks are both part of the free CRM, and this workflow only needs to search companies, create a company and create a task. You do not need Sales Hub or a paid seat to run it.

### I run bunkering, port agency or marine surveying rather than chandlery. Does it still fit?

Yes. The two things that make this specific to a business are the vessel types you service and how much notice you need. Change those two lists and the same workflow works for a bunker supplier, a port agent or a surveyor. The task and the Slack summary do not change.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-port-arrivals-into-hubspot-tasks-for-your-ship-supply-desk