HubSpot Error: 403 Forbidden Missing Scopes

A transfer to HubSpot can fail with a 403 and a MISSING_SCOPES error even when the operation and data are otherwise correct. This can mean either that our app truly lacks the scope, or that the authorizing HubSpot user doesn't have the right permission level for that object - the error looks identical either way. This article shows how to tell the two apart and resolve each.

Example

Connection: HUBSPOT001

Data sent:

json

{ "inputs": [{ "id": "25669941041", "properties": { "bc_item_no": "ITEM0071" } }] }

Status code: 403 Forbidden

Response body:

{
  "status": "error",
  "message": "This app hasn't been granted all required scopes to make this call...",
  "errors": [
    { "message": "One or more of the following scopes are required.",
      "context": { "requiredGranularScopes": ["e-commerce", "crm.objects.products.write"] } }
  ],
  "category": "MISSING_SCOPES"
}

What to check first

Look at the object named in requiredGranularScopes (here: Products) and check whether it's part of our standard supported objects list.

Case 1 - Object is already in our supported list

The app has the scope - Check this Supported HubSpot Objects page for more information. This is a user permission issue: the HubSpot user who authorized the connection most likely has read-only access to that object, not write.

Fix:

  1. Ask the customer's HubSpot admin to check the authorizing user's permissions for that object.
  2. Grant write access (not just read) if that's what's missing.
  3. Re-authorize the connection so the change takes effect.
  4. Re-run the transfer.

Case 2 - Object is NOT in our supported list

The app itself doesn't have the scope at all.

Fix:

  1. Confirm the authorizing user already has access to that object in HubSpot.
  2. If yes, reach out to Rapidi to add the missing scope(s) to the app.
  3. Once added, re-authorize the connection and re-run the transfer.