agentsclimarketplace

Hubspot signal to linkedin touch

Skill First-Touch-Inc/firsttouch-agent-skill-packs/skills/hubspot-signal-to-linkedin-touch

FirstTouch Agent Skill Packs for Claude, Cursor, Windsurf, ChatGPT, and MCP-compatible agents

Install
npx -y skills add First-Touch-Inc/firsttouch-agent-skill-packs --skill hubspot-signal-to-linkedin-touch

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Turn a HubSpot CRM event - lifecycle stage change, deal stage movement, form fill, list addition - into a timely, personalized LinkedIn touch. Reads the signal from HubSpot, qualifies the contact, drafts outreach via FirstTouch, gates for approval, and logs back to HubSpot when the connected FirstTouch-HubSpot integration supports it. Use when the user wants to act on HubSpot activity with LinkedIn outreach, trigger social touches from CRM events, or make outbound "event-driven." Covers any CRM event; for high-intent inbound (booked meeting, signup, trial, demo) prefer inbound-speed-to-lead.

SKILL.md

7.5 KB, as published. Nobody here has run it

Access note: this is a HubSpot-dependent motion. Skip it until HubSpot/CRM data or a FirstTouch-accessible HubSpot list exists.

HubSpot Signal → LinkedIn Touch

Outcome: Make LinkedIn outreach event-driven - every touch is triggered by a real CRM event, not a cadence timer.

First-run onboarding gate

Before running this skill for the first time in a workspace, load ../../references/onboarding.md and complete the onboarding questions. Do not proceed until you know: LinkedIn account type (free/basic = no connection notes; recommend 10 connection requests/day and never exceed the FirstTouch max of 20/day; Sales Navigator/Premium = connection notes available; recommend 20 connection requests/day and never exceed the FirstTouch max of 30/day), HubSpot access (MCP, service key/private app token, HubSpot list only, or none), and which play the user wants to run. Recommend high-intent plays before outbound to keep the LinkedIn account healthy. If HubSpot is unavailable, do not run HubSpot-specific steps unless the user provides a HubSpot list FirstTouch can access.

When to use

  • "When a contact hits MQL, reach out on LinkedIn"
  • "If a deal moves to 'Decision Maker Buy-In,' send a social touch"
  • "Anyone who filled out the pricing form this week, connect on LinkedIn"
  • Building event-driven outbound from HubSpot lists, lifecycle fields, forms, or contact-based workflow outputs

Inputs

  • Signal definition: which HubSpot event triggers the play (lifecycle change / deal stage / form / list membership / inactivity)
  • Audience scope: which contacts/companies the trigger applies to
  • Cooldown: min days between touches for a contact (default: 14)

Step-by-step

1. Define & query the signal (HubSpot MCP)

Pull contacts matching the trigger event within the window. For AE use, a manually filtered HubSpot contact list is enough for a one-time run today; RevOps/admin workflow setup is needed only for recurring automation. FirstTouch supports HubSpot workflow actions that trigger FirstTouch flows; if the desired trigger needs a HubSpot workflow, confirm the customer portal exposes the needed FirstTouch action card and permissions, then use ../../references/hubspot-setup.md to produce the contact-based workflow/list criteria for RevOps/admin. Do not claim the agent created a HubSpot workflow unless the connected portal confirms that capability. For each, capture: name, title, company, owner, lifecycle/deal stage, the triggering event + timestamp, and recent timeline activity.

2. Qualify

For each triggered contact:

  • Run Gate 0 suppression/DNC check from ../../references/safety-governance.md; if suppressed or unsubscribed → skip
  • Has an owner? → if no, route to assignment, do not send (Gate 2)
  • Within cooldown? → skip
  • Already in active sequence / recently contacted? → skip (Gate 1)
  • LinkedIn URL present? → if no, flag for enrichment

3. Map signal → message type

The HubSpot event determines the message:

SignalMessage typeWhy
New MQL / form fillConnection requestStart relationship
Lifecycle up (SQL→Opportunity)Opener to connectedWarm the opp
Meeting logged on an associated dealConnection request to unconnected stakeholders, or opener/value touch to connected stakeholdersMulti-thread the account after a real meeting signal. Configure as a contact-based HubSpot list/workflow, for example: contacts at companies where an associated deal has a meeting logged in the last 7 days.
Deal moved forwardValue touch to stakeholdersReinforce
Open deal not Closed Won/Lost and no engagement for 60+ daysRe-engageUse a contact-based stalled-deal list/workflow-output pattern. If no stalled-deal list is provided, ask RevOps/admin to supply the qualifying HubSpot list or setup steps. Deal triggers are unsupported.
Closed Lost deal selected for win-backConnection request or re-engageUse a contact-based list of contacts associated to Closed Lost deals; keep this separate from stalled open-deal reactivation.
Re-engaged after silenceOpenerContext renewed

4. Draft (load firsttouch-messaging)

The signal is the HubSpot event itself - e.g. "saw you just downloaded the outbound playbook." Draft accordingly. Run the quality gate.

5. Present for approval (Gate 4)

Table of: contact, triggering event, owner, message type, draft. All marked awaiting approval.

6. Execute + log (FirstTouch MCP)

On approval per row:

  • before creating any one-contact LinkedIn action, run get_dynamic_action_guide, then call add_dynamic_action in the supported order
  • if a LinkedIn message should only send after a connection request is accepted, append it to the connection_accepted branch rather than queueing it as an immediate message
  • send via FirstTouch
  • log to the HubSpot timeline when the connected FirstTouch-HubSpot integration supports it; otherwise log the execution record in FirstTouch and state CRM logging was skipped
  • tag with signal_triggered_touch + the signal type for attribution when tagging is available.

7. Track

Cohort tagged by signal type so the team can review which signals produce replies, meetings, and pipeline. When FirstTouch team metrics are available, pull metrics filtered by this flow/tag to report replies, meetings, and opportunities.

Output

  • Triggered-contact list with the HubSpot event per row
  • Drafted, gated messages
  • Send + log confirmation
  • Signal-tagged cohort for attribution

Examples

Signal: Contact filled "Request a demo" form, owner = AE, not yet connected on LinkedIn. Draft (connection request): "Hi Devon, saw you're exploring FirstTouch after the demo request. Connecting so I can share setup tips as you evaluate."

Closed Lost win-back signal: Contact is associated to a Closed Lost deal selected for a fresh reengagement motion. Draft (re-engage opener): "Hi Dana, noticed your team previously evaluated FirstTouch and wanted to share what changed since then. Worth comparing notes if social attribution is worth revisiting."

Why this play wins

Static sequences message on a timer. This play messages on a real event - dramatically higher relevance and reply rate, and fully attributable in HubSpot.

Pitfalls

  • Triggering on too-broad events - "any lifecycle change" floods the queue. Scope triggers tightly.
  • Ignoring owner - messaging a contact another AE owns causes internal friction. Always check owner (Gate 2).
  • No cooldown - a contact bouncing stages gets spammed. Enforce cooldown.

Reference

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.