assign-unowned-contacts

Assign unowned HubSpot marketing contacts to a designated owner via API.

58|16|Updated Mar 26, 2026
One-click install
npx skills add https://github.com/TomGranot/hubspot-admin-skills --skill assign-unowned-contacts
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: assign-unowned-contacts
Source: https://github.com/TomGranot/hubspot-admin-skills/tree/main/skills/assign-unowned-contacts
Command: npx skills add https://github.com/TomGranot/hubspot-admin-skills --skill assign-unowned-contacts

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires requests, python-dotenv, and includes scripts (resource) components.

What problem does it solve?

Marketing teams often encounter unowned marketing contacts, leading to gaps in accountability, poor lead routing, and incomplete reporting.

Core Features & Use Cases

  • Bulk-assign unowned contacts to a designated owner via UI or API.
  • Verify ownership after cleanup with before/after state checks and audit trails.
  • Supports multiple routing strategies (catch-all, territory-based, round-robin) with safety guards and clear approvals.

Quick Start

Run before.py to capture a baseline, then run execute.py after setting HUBSPOT_TARGET_OWNER_ID.

Frequently Asked Questions about assign-unowned-contacts

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I bulk-assign unowned HubSpot contacts to a specific owner?

The script enforces owner verification and a safety threshold to prevent accidental mass reassignments. It captures a baseline state before running the API batch updates, ensuring your contact owner routing remains controlled and auditable.

How do I capture a baseline before running a HubSpot data cleanup workflow?

This baseline snapshot allows you to verify ownership changes after the cleanup and ensures accountability. You compare the initial output against the post-execution state to confirm the unowned contacts were successfully routed.

Can I use this for round-robin or territory-based contact routing in HubSpot?

You can configure the designated owner based on your specific routing strategy. The tool uses the HubSpot Contacts API to execute the batch updates, verifying that the target owner exists before applying the routing logic.

Do I need the HubSpot API to update contact ownership, or can I use the UI?

The API approach requires setting the HUBSPOT_TARGET_OWNER_ID in your python-dotenv environment file and using the requests library. This method is ideal for automating ownership routing during large-scale audits.

Why does HubSpot show unowned contacts, and how does this affect reporting?

By running this cleanup, you ensure every marketing contact has an owner, which fixes reporting gaps. The script verifies ownership after the update, confirming that no unowned contacts remain in your database.