Two of the only actions that let a workflow reach outside HubSpot, a webhook call to an external URL and a custom code step, are gated behind paid tiers (Professional and up for webhooks, Operations Hub for custom code). Without those, a native workflow can really only touch HubSpot's own properties and a short list of App Marketplace integrations. That's not a bug; it's just where the free and lower tiers draw the line.
The bigger limit, and one most people never run into because they never try: there's no API to actually build or edit a workflow's logic. HubSpot's Workflows API lets you enroll or unenroll a record and read a workflow's metadata, but the steps themselves, the triggers, the branches, the actions, only get built by a person clicking through the UI, one workflow, in one portal, at a time. If you need the same automation replicated across many portals, or rebuilt after a template change, there's no official shortcut.
And a workflow only ever knows what's already a HubSpot property. It can't react to something happening in your ERP or your warehouse in real time, only to the moment that fact gets synced onto a record it's watching.