HubSpot New Deal Alert
Pulls your HubSpot deals each run, turns the raw API response into a readable digest, and notifies the workflow's contacts.
Use case
Sales teams want a recurring, human-readable summary of the deals in their HubSpot account without logging in to the CRM. Schedule this workflow (e.g. each morning) and subscribers receive a digest of current deals via their configured notification channel.
What it does each run
- fetchDeals (
hubspottool) — calls the HubSpot connector withoperation: list_deals. Like every InTouch connector, it publishes exactly two outputs:result(the API JSON response as a string) andstatus(the HTTP status code). - digest (
anthropictool) — an AI task reads{{fetchDeals.result}}and{{fetchDeals.status}}and writes a concise markdown summary (a total count plus one bullet per deal: name, stage, amount). Publishesanswer. - notify (
messagetool) — sends{{digest.answer}}(plus the HTTP status from step 1) to the workflow's contacts.
If the HubSpot fetch fails, the alertOnError notification to the intouch
user fires.
Required credentials
The apiKey properties are set to the placeholder <set via credential>. Supply
the real values via an InTouch credential (recommended) or a runtime env — never
hardcode keys in the workflow.
| Task | Property | What to supply |
|---|---|---|
| fetchDeals | apiKey |
Your HubSpot private-app token (CRM read scope crm.objects.deals.read) |
| digest | apiKey |
Your API key for any supported AI provider (Anthropic, OpenAI, Gemini, Mistral, Ollama or OpenRouter) |
The HubSpot connector uses private-app / OAuth auth, so the token must be authorized in HubSpot before the workflow can read deals.
The notify task uses the built-in message tool and needs no credential; it
delivers to whoever is subscribed to this workflow (the intouch user is a
configured notification target, with alertOnError: true).
Outputs referenced (real connector contract)
This workflow only references outputs the tools actually publish:
- HubSpot connector →
{{fetchDeals.result}},{{fetchDeals.status}} - Anthropic task →
{{digest.answer}}
No invented fields (no .total, .results, .count, .latestModified, etc.).
AI provider
Any supported AI provider works here. This template ships configured for the
anthropic tool; swap that task's tool to anthropic, openai, gemini, mistral,
ollama or openrouter to use the provider you already have, and point its
credential at your own key. The step is a plain summarise/classify call — nothing in
it is vendor specific. See requires.ai in the manifest.