canonical: https://jentic.com/apis/hubspot.com/hubspot-crm-goal-targets

# HubSpot Goal Targets

The HubSpot Goal Targets API manages goal target records - the per-rep, per-team, or per-period targets that drive HubSpot's goals reporting (revenue goals, activity goals, deal-count goals). It exposes single and batch CRUD plus search across /crm/v3/objects/goal_targets, with custom property support so agents can program quota cycles, adjust targets mid-period, and reconcile actuals against plan. Use it to automate quarterly target rollouts, mid-cycle adjustments, and goal reporting pulls.

## For AI agents

Create, update, search, and batch-manage HubSpot goal target records that drive revenue and activity goals via /crm/v3/objects/goal_targets.

## Scope

Does not compute actuals, calculate commission, or run forecasting models - use for setting and managing HubSpot goal target records only.

## Capabilities

- Create goal targets for reps or teams via POST /crm/v3/objects/goal_targets
- Update target amounts mid-period with PATCH /crm/v3/objects/goal_targets/{goalTargetId}
- Search goal targets by owner, period, or goal type through POST /crm/v3/objects/goal_targets/search
- Bulk-set quarterly targets with POST /crm/v3/objects/goal_targets/batch/create
- Upsert goal targets by external period+owner key via POST /crm/v3/objects/goal_targets/batch/upsert
- Archive goal targets that no longer apply with DELETE /crm/v3/objects/goal_targets/{goalTargetId}

## Use cases

### Quarterly Target Rollout

Create goal targets for every rep at the start of a quarter so the HubSpot goals reports populate from day one. The batch create endpoint handles up to 100 targets per request, and using a stable external key (period+owner) lets re-runs upsert rather than duplicate. Pair with the CRM Owners API to look up the right hubspot_owner_id for each target.

Example prompt: Batch-upsert 50 Q3 revenue targets via POST /crm/v3/objects/goal_targets/batch/upsert with idProperty period_owner_key, period equals 2026-Q3, and amount per rep.

### Mid-Period Target Adjustments

Adjust goal targets when territories shift, reps onboard, or quotas are revised mid-quarter so reports stay accurate. The PATCH endpoint updates only the specified properties - typically amount or end_date - without touching ownership. Run a search first to find affected targets by owner or team.

Example prompt: Search for goal targets where hubspot_owner_id equals 200 and period equals 2026-Q3, then PATCH the amount on each result to reflect the new quota.

### Goal Pacing Reports

Pull goal targets for the current period and join with deal-stage actuals to produce pacing reports - for example, percent-to-quota by rep at week 6 of the quarter. The search endpoint paginates by createdate or owner so a reporting job can stream the full set without timeouts. Combine with the Deals API and the Owners API to enrich each target with rep names and pipeline progress.

Example prompt: Search goal targets where period equals 2026-Q3 and goal_type equals revenue, returning hubspot_owner_id and amount for every active target.

### Agent-Driven Target Adjustments via Jentic

An AI sales-ops agent reading a manager's Slack message about a quota change updates the matching HubSpot goal target without an engineer touching the CRM. Through Jentic the agent searches for the patch operation, loads its schema, and executes it with the new amount. The flow runs on a single Jentic credential without exposing the HubSpot key.

Example prompt: Use Jentic to search 'update a HubSpot goal target', load the PATCH /crm/v3/objects/goal_targets/{goalTargetId} schema, and execute it with the new amount.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /crm/v3/objects/goal_targets | List goal targets with pagination |
| POST | /crm/v3/objects/goal_targets | Create a goal target |
| PATCH | /crm/v3/objects/goal_targets/{goalTargetId} | Update a goal target |
| POST | /crm/v3/objects/goal_targets/batch/create | Batch-create up to 100 goal targets |
| POST | /crm/v3/objects/goal_targets/batch/upsert | Batch-upsert goal targets by external ID |
| POST | /crm/v3/objects/goal_targets/search | Search goal targets by property filters |

## Key resources

- **Basic** — Single-record CRUD on goal target objects
- **Batch** — Bulk read, create, update, upsert, and archive across up to 100 goal targets per request
- **Search** — Filter, sort, and paginate goal targets by any property

## Why Jentic

- **Setup:** Wiring the HubSpot Goal Targets API by hand means handling its OAuth 2.0 authorization-code flow or a private app token, targeting api.hubapi.com, and building batch and search payloads yourself. Through Jentic you install once, import HubSpot Goal Targets from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** HubSpot gates this API with the per-object goals OAuth scope, so you grant only that scope and you choose which operations it may call: you can allow reading and searching goal target records while leaving create and update out of the allowed set unless you add them.
- **Credential handling:** Your HubSpot OAuth token or private app token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create HubSpot goal targets in batch' or 'read goal target records', and Jentic returns the matching goal targets operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot Deals** — Source the actuals that goal targets are measured against
- **HubSpot CRM Owners** — Resolve the owner IDs that goal targets are assigned to
- **HubSpot CRM Pipelines** — Map goal targets to specific pipelines
- **Salesforce** — Salesforce QuotaForecast offers equivalent quota management in Sales Cloud

## FAQ

### What authentication does the HubSpot Goal Targets API use?

Goal Targets accepts OAuth 2.0 access tokens and HubSpot private app API keys passed in the private-app or private-app-legacy header. Through Jentic the credential lives in your Jentic One instance and is injected at execution time so it never enters the agent's context.

### Can I create goal targets for teams as well as individuals?

Yes. Set the owner property to a team ID rather than an individual hubspot_owner_id when the target is team-level. The HubSpot goals report will then aggregate actuals against the team target.

### What are the rate limits for the HubSpot Goal Targets API?

Account-level limits apply - typically 100 requests per 10 seconds for OAuth apps and 190 per 10 seconds for private apps on paid tiers. Use POST /crm/v3/objects/goal_targets/batch/create for quota rollouts since each batch counts as one request.

### How do I run a quarterly target rollout through Jentic?

Run jentic.search('batch upsert HubSpot goal targets'), load the schema for POST /crm/v3/objects/goal_targets/batch/upsert, and execute it with the period+owner external key plus the per-rep amounts. Jentic returns the upsert result as structured JSON for the next step.

### Can I associate a goal target with a specific deal pipeline?

Yes. Goal targets support pipeline-specific custom properties so a single rep can have separate targets for the New Business and Renewal pipelines. Set the pipeline property when creating the target.

### Does the Goal Targets API include actuals?

No. This API stores the targets only. Actuals are computed by HubSpot from the underlying deals or activities. Pull actuals through the Deals or Activities APIs and join them with target data in your reporting layer.

### Can I limit what my agent is allowed to do with the HubSpot Goal Targets API?

Yes. Because you run your own self-hosted Jentic One instance, your own rules decide which goal target operations the agent may call and which credential it uses. HubSpot gates this API with the per-object goals OAuth scope, so you can grant only that scope and allow reading and searching goal target records while leaving create, update, and archive operations out of the allowed set. If the agent later needs to batch-create or patch targets, you add those operations to what it is permitted to run.
