Before you start
Use an authorized workspace and a small file with stable source IDs. Have source access and your team’s acceptance policy available. This guide describes customer-authored logic, not an automatically enabled product policy.1. Understand the decision
A HubSpot owner ID is a destination identifier. A title, email, or team name is not automatically an accepted owner ID. Test this fictional sample before calling providers:2. Inspect supported operations
deepline describe <returned-id> --json.
Compare required identifiers, outputs, access mode, and price.
A similar title does not establish that a contract fits.
3. Implement the bounded workflow
Ask your agent to authorhubspot-lead-routing.play.ts using Write Plays.
Have it declare the CSV input and preserve source IDs.
Reuse existing contracts when they fit the transformation.
Implement these rules explicitly:
- Resolve existing HubSpot contacts and the intended company identities.
- Inspect property types and available owners through supported actions.
- Apply the stated territory, eligibility, and protected-owner rules.
- Return proposed owner IDs, rule reasons, and exceptions. Keep writes disabled until the decision table passes.
4. Check and pilot
Preparepilot.csv using CSV-safe selection.
Then check the source:
5. Verify the outcome
Check actual HubSpot record IDs and owner IDs against proposals. Verify repeated events do not produce contradictory assignments.Every source ID has a result or explicit exception. The fictional cases follow
the stated policy, and actual results retain their evidence.