HubSpot app development lifecycle from creation to marketplace. Use when building HubSpot apps, adding CRM cards, configuring settings, or deploying to marketplace.
From opspal-hubspotnpx claudepluginhub revpalsfdc/opspal-commercial --plugin opspal-hubspotThis skill is limited to using the following tools:
cards-reference.mdmarketplace-requirements.mdoauth-guide.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Processes code review feedback technically: verify suggestions against codebase, clarify unclear items, push back if questionable, implement after evaluation—not blind agreement.
| Phase | Command | Output |
|---|---|---|
| 1. Create | /hs-app-create | App scaffold with manifest |
| 2. Add Cards | /hs-app-card-add | CRM card component |
| 3. Add Settings | /hs-settings-add | Settings page |
| 4. Validate | /hs-app-validate | Validation report |
| 5. Deploy | /hs-app-deploy | Deployed app |
| Type | Use Case | Auth Type |
|---|---|---|
| Private | Internal tools, single portal | API key |
| Public | Multi-portal, marketplace | OAuth 2.0 |
| Custom CRM | CRM customization | OAuth 2.0 |
| Sales Extension | Sales process tools | OAuth 2.0 |
# Create app
/hs-app-create --name "My App" --type private
/hs-app-create --name "My App" --type public --scopes "crm.objects.contacts.read"
# Add components
/hs-app-card-add --app "My App" --object contact --card-type timeline
/hs-settings-add --app "My App" --page "Configuration"
# Validate and deploy
/hs-app-validate --app "My App"
/hs-app-deploy --app "My App" --env sandbox
{
"name": "My HubSpot App",
"description": "App description",
"uid": "my-app-unique-id",
"scopes": [
"crm.objects.contacts.read",
"crm.objects.contacts.write"
],
"auth": {
"type": "oauth",
"redirectUrls": ["https://myapp.com/oauth/callback"],
"requiredScopes": ["crm.objects.contacts.read"]
},
"extensions": {
"crm": {
"cards": []
}
}
}
Shows events in contact/company timeline.
{
"type": "timeline",
"objectTypes": ["contact", "company"],
"title": "Activity Timeline",
"fetch": {
"targetUrl": "https://myapp.com/api/timeline",
"objectTypes": [
{ "name": "CONTACT", "propertiesToSend": ["email"] }
]
}
}
Displays custom data panels.
{
"type": "crm",
"title": "Customer Insights",
"fetch": {
"targetUrl": "https://myapp.com/api/insights"
},
"display": {
"properties": [
{ "name": "score", "label": "Health Score" },
{ "name": "lastActivity", "label": "Last Activity" }
]
}
}
Provides interactive actions.
{
"type": "crm",
"title": "Quick Actions",
"actions": [
{
"type": "ACTION_HOOK",
"httpMethod": "POST",
"uri": "https://myapp.com/api/actions/sync",
"label": "Sync to External System"
}
]
}
| Scope | Description |
|---|---|
crm.objects.contacts.read | Read contacts |
crm.objects.contacts.write | Create/update contacts |
crm.objects.companies.read | Read companies |
crm.objects.deals.read | Read deals |
crm.schemas.contacts.read | Read contact schema |
| Scope | Description |
|---|---|
content | CMS content access |
forms | Forms access |
files | File manager access |
| Scope | Description |
|---|---|
automation | Workflows access |
timeline | Timeline events |
| Requirement | Check |
|---|---|
| HTTPS endpoints | All URLs must be HTTPS |
| Token storage | Secure, encrypted storage |
| Webhook validation | Signature verification |
| Scope minimization | Request only needed scopes |
/hs-app-deploy --app "My App" --env sandbox
/hs-app-deploy --app "My App" --env production
/hs-app-deploy --app "My App" --env marketplace --submit
See supporting files:
oauth-guide.md - OAuth implementation detailscards-reference.md - CRM card configurationmarketplace-requirements.md - Submission checklist