PortlinePortlineDocs

Plans and access

How the plan decides which areas open, and what happens when a subscription lapses.

Access to anything in Portline is two checks:

  1. Does the plan include the area? Each area has a feature (core, fleet, warehouses, docks, telemetry, yard, api) and each tier or pack includes a set of them. Add-ons add single features on top.
  2. Does the role reach the level? View, edit or approve, see Roles.

The app runs both checks to build the sidebar and gate pages and actions, so you never see a link you can't open. Postgres runs the same two checks independently in pl.can() for every row.

Plan to areas

AreaStarterGrowthScaleCold chainDrayage & trucking3PL warehousing
OverviewYesYesYesYesYesYes
ShipmentsYesYesYesYesYesYes
ContainersYesYesYesYesYesYes
FleetNoYesYesNoYesYes
WarehousesNoYesYesYesNoYes
DocksNoYesYesYesYesYes
Yard & gateNoYesYesNoNoNo
MessagesYesYesYesYesYesYes
TeamYesYesYesYesYesYes

Reefer temperature in Containers needs the telemetry feature, which comes with Growth and the Cold chain pack, or as the Reefer monitoring add-on. On Starter you see the container register without the temperature chart.

Yard events are included from Growth up. A row names a Pruva vessel only when the event is linked to one. Starter sees the area under "Available" with a lock. The API stays on Scale and is not built.

Who changes the plan

Nobody inside the workspace. The plan, add-ons, status, seat count and term dates live in pl_subscriptions, and signed-in users have no write grant on that table. Only the service role writes it: the store's checkout, or pnpm plan:set locally. The one thing an owner can do is cancel renewal, see Billing and terms.

When a subscription lapses

StatusAccessNotes
activeFull accessAlso applies to trialing workspaces.
graceFull accessUp to 7 days after the period ends while payment is sorted out.
lapsedRead-onlyEveryone can still read and export. Every write is refused, by the app and by Postgres.
After 90 days lapsedData deletedWorkspace data is kept for 90 days, then removed.

During grace everything works as normal. Once a workspace is lapsed, every role behaves like a viewer: reads work, writes fail in the app and in the database. Data is kept for 90 days after that.

On this page