Using app objects in development before approval

Hi HubSpot Developer Community,

I’m trying to build an app using the App Objects feature (platform version 2025.2) and running into an allowlist issue even in my development environment.

What I’m seeing: When I upload my project with an app object schema to my developer test account, I get this error:

Object name 'OBJECT' is not in the allowlist for portal [my-portal-id]. 
Currently allowed names are: []. 
Please contact HubSpot to get this object name approved.

My setup:

  • HubSpot CLI: latest version
  • Platform: 2025.2
  • Distribution: marketplace (in app-hsmeta.json)
  • Testing in: Developer test account (not production)

My questions:

  1. Is approval required even to TEST app objects in development?
  2. The quickstart guide suggests you can “test out an install using a developer test account” - but I can’t even upload without approval. Am I missing something?
  3. How do other developers iterate on app objects during development if there’s a 2-4 week approval wait?

The docs say to submit this form for approval, which I understand for marketplace distribution, but I was expecting to be able to develop and test locally first.

Any insights from developers who’ve worked with app objects would be really helpful!

Hi @njacobeus — Thank you for posting!

I’ll loop in a few folks who may help us out with App Objects (2025.2).
@MichaelMa @GRajput @BrandonWoodruff — is approval really required just to test app objects in a developer test portal? If so, how are teams iterating during development without waiting weeks?

Thanks in advance for any clarity you can share.

Hello,

According to HubSpots Docs, Approal is required to use app objects at all. Once you are approved to use the object, you can reuse the approved object name accross multiple apps and environments. These are the two options you can move forward with:

  • Option A: Wait for approval

    • Owner: You / HubSpot
    • Next step: Submit the in-app approval form and wait for the approved name, then set config.name to that exact value (UPPER_SNAKE_CASE) before uploading.
  • Option B: Keep building while approval runs

    • Owner: You
    • Next step: Model the object/workflows/UI using Custom Objects in your dev portal; once approved, migrate the schema and switch your integration to the app object FQN naming conventions.

Reference: Overview of app objects - HubSpot docs

Let me know if this helps, or if you have any other questions!


:check_mark: Was I able to help answer your question? Help the community by marking it as a solution.

Brandon Woodruff
Senior Software Developer @ PearagonStill have questions? Reach out at brandon@pearagon.com

Thank you Brandon for your answer!

Just to clarify: when you say “using Custom Objects in your dev portal,” do you mean creating the Custom Objects manually through the HubSpot UI, or creating them programmatically via the API?
I’m asking because the latter would be ideal (easier migration to App Objects once approved), but I just tried and hit a blocker:

What I Tried:

When attempting to create a Custom Object schema programmatically via the API (POST /crm/v3/schemas), I get:

403: "This app hasn't been granted all required scopes"
Required scope: "crm.schemas.custom.write"

When I try to add crm.schemas.custom.write to my OAuth app’s requiredScopes in app-hsmeta.json:

CLI upload fails: "The scope crm.schemas.custom.write could not be recognized"

From my research, crm.schemas.custom.write appears to only be available for:

  • Private apps
  • OAuth apps approved for a pilot program

The Question:

If programmatic Custom Object creation requires a scope that isn’t available to OAuth apps, this seems to defeat the purpose as a development workaround - I still can’t create Custom Objects in my development environment via code.

UI creation would work, but then the creation workflow would be completely different from App Objects (UI-based vs API-based), making the eventual migration less seamless since I’d be testing a different code path.

Am I missing something, or is manual UI creation the only way to use Custom Objects during development (for an OAuth app, that is)?
Thanks in advance!

The Scope you are using isn’t a valid scope, you should try using crm.objects.custom.write, or crm.objects.custom.sensitive.write.

You can also create them via the ui first as well, and then interact with them.

Source: Accounts Dashboard | HubSpot

Let me know if this helps, or if you have any other questions!


:check_mark: Was I able to help answer your question? Help the community by marking it as a solution.

Brandon Woodruff
Senior Software Developer @ PearagonStill have questions? Reach out at brandon@pearagon.com

Hi Brandon, there may be a misunderstanding. From what I understand, the scope you mention (crm.objects.custom.write) is to create records; my question was about creating the Custom Object schema. The docs assistant (on the link you shared) says: “The required scope to create a custom object schema is crm.schemas.custom.write.” but I admit I can’t find this myself in the docs, so that might be an AI error.
In any case, I submitted my App Object approval request this morning, so maybe the best is just to wait it out (your option A).
Thanks again!

Hi @njacobeus
The crm.schemas.custom.write scope for marketplace/public apps is also restricted behind a pilot program that also requires approval from HubSpot. You can submit the form for that here - Custom Objects OAuth Access

Hi @njacobeus ,
Yeah this is one of the more frustrating parts of building on HubSpot’s newer platform features. You’re not missing anything, approval really is required even to test App Objects in a developer account. The naming allowlist is enforced at upload time regardless of environment, which makes the iteration cycle pretty painful when you’re just trying to prototype something.

Brandon’s suggestion to use Custom Objects as a standin during development is the right general idea, but you’ve correctly identified the scope problem. The crm.schemas.custom.write scope for creating schemas programmatically is separate from crm.objects.custom.write which is for creating records within an existing schema. And yes, schema creation scopes have historically been restricted to private apps or specific pilot programs. The docs aren’t super clear on this distinction which adds to the confusion.

Your best path forward is probably what you landed on, submit the approval form and wait it out. In the meantime you can build out the rest of your app logic, UI components, and workflows using manually created Custom Objects through the HubSpot UI. The schema structure can mirror what you plan for your App Object so when approval comes through the migration is mostly renaming references to use the FQN conventions.

Its not ideal but its how most teams Ive seen handle this. You could also build a local mock of your object schema for unit testing your integration logic while you wait. At Stacksync we deal with a lot of HubSpot custom object data when teams need to sync it to databases or other systems, and the schema restrictions are something that comes up fairly often when customers are building new integrations. Once you get through the approval you should be in better shape, but the initial wait is definitely a blocker. Transparency note: This response is grounded in my own experience and was lightly polished using AI.

Hope the approval comes through faster than the 2 to 4 week estimate