Custom Workflow Action actionUrl Not Being Called - Receiving HTML Response Instead

Issue

My custom workflow action’s `actionUrl` is not being triggered. HubSpot is calling `your-api-domain.com` instead of my configured endpoint, returning HTML instead of calling my API.

Configuration

**app-hsmeta.json:**

```json

{

“uid”: “bitespeed_whatsapp_static_app”,

“type”: “app”,

“config”: {

“name”: “Bitespeed WhatsApp Static”,

“distribution”: “private”,

“auth”: {

“type”: “static”,

“requiredScopes”: [“oauth”, “crm.objects.contacts.read”, “crm.objects.contacts.write”, “automation”]

},

“permittedUrls”: {

“fetch”: [

https://api.hubapi.com”,

https://hermeneutic-cythia-trichotomic.ngrok-free.dev

]

}

}

}

```

**workflow-action-hsmeta.json:**

```json

{

“uid”: “bitespeed_whatsapp_static_action”,

“type”: “workflow-action”,

“config”: {

“actionUrl”: “https://hermeneutic-cythia-trichotomic.ngrok-free.dev/api/v1/hubspot/workflow-action”,

“isPublished”: true,

“supportedClients”: [{“client”: “WORKFLOWS”}],

“inputFields”: [

{

“typeDefinition”: {

“name”: “whatsappTemplateId”,

“type”: “string”,

“fieldType”: “text”

},

“supportedValueTypes”: [“STATIC_VALUE”],

“isRequired”: true

}

],

“objectTypes”: [“CONTACT”]

}

}

```

## Error Response

Workflow executes but returns HTML from `your-api-domain.com` instead of calling my `actionUrl`. The decoded payload shows HubSpot is calling `http://ww25.your-api-domain.com/api/hubspot/workflow-action\`.

## What I’ve Tried

Set `isPublished: true`

Deployed via `hs project upload` (successful)

Added endpoint to `permittedUrls.fetch`

Deleted/re-added workflow action

Verified endpoint works with `curl`

Confirmed workflow triggers correctly

Questions

1. Why is HubSpot calling `your-api-domain.com` instead of my configured `actionUrl`?

2. Is there a caching issue with workflow action configs?

3. Does the app need separate activation/publishing?

Platform: Developer Projects V2 | Auth: Private + Static | Deployment: Successful

Hi @rohitj and welcome, it’s a pleasure to have you here! :hugs:
Thanks for reaching out to the HubSpot Community!
I’d like to share some resources that might help you:
- Automation API | Custom Workflow Actions
- Define a custom workflow action
- Retrieve custom action definitions
Now let’s consult our Top Experts: Hi @sylvain_tirreau, @Anton and @d-lupo do you have suggestions to help @rohitj, please?
Thanks so much and have a wonderful day!
Bérangère

Hi @rohitj , I’ve seen this exact “why is HubSpot calling your-api-domain.com symptom when the action definition HubSpot is actually executing is not the one you think you deployed. That your-api-domain.com value is basically a placeholder that shows up when HubSpot is still using an older (or default/template) action definition tied to your app, not your latest workflow-action-hsmeta.json.

Two practical checks usually surface the root cause fast. First, confirm HubSpot really ingested your workflow action file from the right place in the project: in Developer Projects V2, features must live under src/app/, and workflow actions must be under src/app/workflow-actions/ with a *-hsmeta.json at the folder root (Define a custom workflow action - HubSpot docs )

A “successful upload” can still happen even if the action definition didn’t end up where HubSpot expects it.

Second, query what HubSpot has stored for your app’s action definitions and verify the actionUrl it returns. The definitions endpoint is the source of truth, and it will immediately tell you whether HubSpot has your ngrok URL or some stale placeholder (Accounts Dashboard | HubSpot ) Hope this helps