Skip to content

CRM analysis

Analyze OutboundSync engagement in HubSpot, Salesforce, and beta Attio/Close with the public crm-analysis Agent Skill — replies, follow-up, and attribution.

When to use: Campaign replies, opens that don’t convert, follow-up priority, platform comparisons, or bounce/unsubscribe trends — from OutboundSync data already in HubSpot, Salesforce, or (beta) Attio and Close.

CRM analysis reads OutboundSync engagement signals already in your CRM. For HubSpot and Salesforce it routes common questions to fixed intents against the os_* field dictionaries (with an explicit exploratory mode for some social cases). Attio and Close are supported in beta as a lighter-touch, exploratory read of the engagement notes/activities OutboundSync writes — and, for Attio, optional OutboundSync custom-object records when that write toggle is on. These CRMs have no queryable os_* fields. It does not need an OutboundSync API key, and it does not change CRM records or call the OutboundSync API.

For launch wiring (OAuth, sources, webhooks), use Preflight instead.

Reviewing last month’s outbound in the CRM
You

Which campaigns got the most replies in the last 30 days? CRM is HubSpot, platform is Smartlead.

AgentSkill · crm-analysis

I’ll route that to the reply-performance intent, confirm the OutboundSync fields we need, then summarize top campaigns by replies — no CRM writes, no API key.

  • A verdict heading — Supported, Partial, Unsupported, or Experimental — and a field gauge showing which required CRM fields are present
  • A Field check card with confidence, missing fields, and the fallback plan
  • Ranked results with bars relative to the top campaign, and explicit limitations
  • Clear limits when fields are missing instead of guessing

os_last_sent_time is missing, so latency falls back to reply volume and recency. Illustrative data — more states in 03_fastest_replies_after_first_send_partial.md.

## Partial — fastest replies after first send
```text
Overall █████████████░░░░░░░ 2/3 · partial
os_last_campaign_name ████████████████████ ✓ present
os_last_sent_time ░░░░░░░░░░░░░░░░░░░░ ✗ missing
os_last_reply_time ████████████████████ ✓ present
```
### Field check
`fastest_replies_after_first_send · strict · HubSpot · Smartlead · last 30 days`
- · Verdict: PARTIAL · confidence medium
- ✗ Missing: `os_last_sent_time`
- · Fallback plan: replace latency with reply volume and reply recency
### Results
`reply volume and recency (latency unavailable) · last 30 days · HubSpot contacts`
- · `Security Buyers Q1` — highest reply volume in the window
- · `Operations Leaders` — most recent reply activity
- · Send-to-reply latency needs `os_last_sent_time`
### Next
1. Check why `os_last_sent_time` is empty in this portal (it is written on send events), then re-run for true latency
  1. CRM access (HubSpot, Salesforce, Attio, or Close) with OutboundSync data present.
  2. Install the skill (no OutboundSync API key):
Terminal window
npx skills add outboundsync/skills --skill crm-analysis -g

OpenClaw and hooks: Install skills.

Tip: mention CRM, platform, date window, and mode when you can. Full router and field dictionaries: skills/crm-analysis/.

Last updated: