hs project upload – CLI can’t detect app-hsmeta.json in project root

I’m trying to deploy a small serverless‑only project using the projects v3 model, but the CLI can’t detect my *-hsmeta.json file.

Environment:

OS: Windows
HubSpot CLI version: 7.10.0
Command: hs project upload (run from the project root)

Project layout (simplified):

my-functions-project/
hsproject.json
app-hsmeta.json
src/
functions/
my-function.js
`

hsproject.json:

`json
{
“name”: “my-functions-project”,
“srcDir”: “src”,
“platformVersion”: “2025.2”
}
`

app-hsmeta.json:

`json
{
“type”: “app”,

“serverlessFunctions”: [
{
“file”: “functions/my-function.js”,
“name”: “my-function”,
“path”: “my-function”
}
]
}
`

From the project root:
dir -hsmeta. (or equivalent) shows app-hsmeta.json in the directory.
hsproject.json is also present and valid. However, when I run:
`bash hs project upload
`

I consistently get: [ERROR] No *-hsmeta.json files found in the current directory. Please make sure you are inside the correct project directory.
`

I’d like help understanding:

Why the CLI isn’t detecting app-hsmeta.json in this layout.
Whether there are additional requirements for the project root or file naming beyond what’s in the docs.
If this might be a known issue with the Windows version of the CLI or with projects v3.

Thanks in advance for any guidance.

Hi @Sna919 the hsproject.json is defining the working directory as src (in “srcDir”: “src”), but because the app-hsmeta.json is at the root, the CLI isn’t finding it. And for 2025.2, the app folder inside src is mandatory.
You can find more information about general app project structures in this page on hubspot dev docs and a migration guide to 2025.2 here for the serverless functions structure.

my-functions-project/
├── hsproject.json
└── src/
 └── app/
 ├── app-hsmeta.json (move to here)
 └── functions/
 └── my-function.js

Hope this helps!

Hi @TTolley ,

Thanks a lot for the reply. That worked and hs project upload was successful but there is an issue/problem.

Problem:

On the app-function component page in Developer Projects (the URL that looks like /project/<project-name>/component/my-function), I don’t see any endpoint or invoke URL field to copy. I would expect to see a full HTTPS URL (e.g. something under functions.hubspotusercontent-…) corresponding to the endpoint.path defined in the app-function hsmeta, but nothing is visible.

Questions:
In the 2025.2 Developer Projects UI, where exactly should the HTTP endpoint / invoke URL for an app-function be displayed?
Is there any additional configuration needed (beyond app-hsmeta.json, the app-function hsmeta, and the package.json files) to make the endpoint visible?
If this is a known issue, is there a way to determine the full endpoint URL for my app-function so I can call it from a UI extension ?

Thanks in advance for your help.

Yes, the URL is missing as hubspot isn’t hosting them in the 2025.2 version. You now need to host them externally (like with AWS, Vercel, DigitalOcean) and connect to Hubspot with hubspot.fetch() to call your external endpoint from your app.

This hubspot blog walks through the migration and changes.

Right now, the only way for hubspot to host your serverless functions is by moving to the 2025.1 version (you can specify this in your hsproject.json) instead of 2025.2. It does look like hubspot will offer support for serverless functions in March 2026.

If you do stay on 2025.2, some extra configuration you’ll need is to update permittedUrls in your app-hsmeta.json to include your external endpoint URL.

You might also find this dev documentation useful, as it goes through using the hubspot.fetch API with UI extensions.

Thank you @TTolley

@TTolley Thank you so much for your insight here ! @Sna919 let us know if this helps :slightly_smiling_face: