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.

Agentic Task
MarineTrafficHubSpotSlackSalesOperationsLead EnrichmentDaily Digests
PromptCreate

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.

What does this prompt do?

  • 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 do I need to use this?

  • 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.

How can I customize it?

  • 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.

FAQs

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.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
Slack Bot
Agentic Task

Stop working the arrivals board by hand.

Your desk gets a briefed CRM task for every ship worth quoting, before the competition has picked up the phone.