# HubSpot launch and handover checklist

Copy into `martech-context/hubspot/launch-checklist.md`. Each item needs the evidence named after it, a date and who checked. An item without evidence is not done.

## Scope and capabilities

- [ ] First-release workflows documented with owner, trigger, failure path and a must-not-happen case. Evidence: the brief.
- [ ] Every required feature confirmed in the portal or given a written fallback. Evidence: capability register with check date and location.
- [ ] Pricing programme recorded from the order form. Evidence: brief field `pricing_programme`.

## Account settings and users

- [ ] Time zone and company currency set before any deal import. Evidence: settings screenshot or note dated before the import.
- [ ] Users, teams and seats created; owners in import files all exist as users. Evidence: seat map; zero unmatched owners in the rehearsal.
- [ ] Permission sets assigned per role; one allowed and one denied record tested per role. Evidence: test log.
- [ ] Automatic company association ("Create and associate companies with contacts") decided before any import, form or integration; off when companies are keyed on a source ID or Salesforce is connected. Evidence: decisions.md entry and settings note.
- [ ] Subscription types and consent fields agreed with the privacy owner; sending domain authenticated before the first marketing send. Evidence: decisions.md and the email authentication status.
- [ ] Work inboxes and calendars connected for users who log activity, with the logging rule recorded. Evidence: decisions.md.
- [ ] External tracking domains added. Evidence: domain list matches the site inventory.
- [ ] Integration credential types recorded (never values); no plan depends on creating a new legacy private app. Evidence: credential inventory.

## Records and properties

- [ ] Object map approved; every custom object passed the decision rules and capacity check. Evidence: decisions.md entry.
- [ ] Unique-value key property on every object an integration creates. Evidence: property settings show unique values required.
- [ ] Property register complete: one writer, type, allowed values, blank meaning, freshness field. Evidence: register reviewed by the business owner.

## Stages

- [ ] Lifecycle, follow-up state and deal stage definitions with transition evidence. Evidence: decisions.md and the stage file.
- [ ] Lifecycle automation settings decided and applied. Evidence: settings recorded in the brief.
- [ ] Backward-correction workflow exists and is restricted to manual enrolment. Evidence: workflow name and who may enrol.
- [ ] Pipelines have entry evidence, required properties, probability and internal IDs. Evidence: stage file.
- [ ] A saved view per stage lists deals with required stage properties empty, and each writer (import, integration, workflow, API) was tested against it. Evidence: view name and test results.

## Import

- [ ] Before-state export stored, and the date each import's 14-day Restore CRM changes window closes is recorded with a named Super Admin. Evidence: export path and dates.
- [ ] Rehearsal cases all pass. Evidence: case file with actual results.
- [ ] For each file, created + updated + rejected equals the rows in the file, each reject listed with a reason; re-importing the same file created zero records. Evidence: import summary and reject list.
- [ ] Opt-outs, unsubscribes and hard bounces from the old system loaded before any marketing-status change. Opted-out count in the source equals the count in HubSpot, and none is a marketing contact without written approval. Evidence: both counts.
- [ ] Salesforce only: records that exist in Salesforce entered through the integration, not CSV. Evidence: import source per file.
- [ ] Workflows that imported records could meet were off or excluded during import. Evidence: workflow history shows no import enrolments.
- [ ] Marketing contact count reviewed against tier, update date and cap. Evidence: counts before and after.
- [ ] No merges without a named approver per pair. Evidence: approval log.

## Forms and tracking

- [ ] One HubSpot tracking code per page on every domain; consent behaviour tested. Evidence: test visits.
- [ ] Each form's marketing switch, default lifecycle and hidden fields set as briefed. Evidence: one test submission per form.
- [ ] Marketing contact count recorded before and after each form goes live (a form with the switch on also converts existing non-marketing submitters). Evidence: both counts against tier and cap.
- [ ] One GA4 install route per page type; no page loads GA4 twice. Evidence: rendered-page check per page type.
- [ ] Existing-customer submission follows its own rule. Evidence: test record.

## Integrations

- [ ] Each integration has an integration record (match key, permitted fields, blank and clear rules, stale-update rule, failure queue). Evidence: the record.
- [ ] One controlled change traced end to end per integration. Evidence: source value, HubSpot value, consuming view.
- [ ] Replayed delivery creates nothing new. Evidence: record counts unchanged.
- [ ] Salesforce only: Smart Transfer off, automatic company association off, first-sync baseline decided per field, excluded record tested both ways, one owner-assigning system. Evidence: test records.
- [ ] Salesforce only: suspension email notifications on, a named Sync Health owner, a formula-driven field tested through its input field, inclusion criteria checked for circular dependencies, and an owner reassignment process for departing users. Evidence: owner names and test records.
- [ ] Data sync and Stripe: workflows on mapped fields paused before every save of the sync configuration (saving restarts the initial sync); invoice-to-company association planned. Evidence: change log.

## Workflows

- [ ] Policy written in plain language with precedence and fallback. Evidence: policy file.
- [ ] Workflows turned on with future-only enrolment unless an approved backfill; scheduled workflows carry an exclusion if existing records must not enrol on the next run. Evidence: activation note.
- [ ] No workflow excludes on Record Source; import batches are excluded by batch tag only while they run. An imported contact who submits the form after launch is routed normally. Evidence: workflow criteria and the test record.
- [ ] Every owner-setting action records its overwrite-existing-owner choice. Evidence: brief.
- [ ] Routing and exception cases passed with outbound limited to test recipients. Evidence: workflow history per case.
- [ ] Essential handoffs have a non-credit fallback. Evidence: fallback named per step.

## Reporting

- [ ] Each launch metric states unit, timestamp, time zone and exclusions. Evidence: metrics.md.
- [ ] Test and internal submissions excluded by one documented rule in HubSpot and analytics; a restatement rule exists for reopened closed-won deals. Evidence: metrics.md.
- [ ] Dashboard numbers reconcile to record ID lists. Evidence: reconciliation note.

## Launch and handover

- [ ] Users completed their real workflow in the portal and can explain exceptions. Evidence: named users and date.
- [ ] Observation period set (30 days by default, extended while defects stay open), with an owner and daily checks: fallback queue, failed syncs, unexpected enrolments, marketing contact count, deals missing required stage properties, report discrepancies, restore window dates. Evidence: owner named.
- [ ] Defect queue in use: each entry has a reproducible case, owner, impact and next review. Evidence: queue link.
- [ ] Workflows and properties added during observation went through the register and controlled-record tests. Evidence: register rows and test log.
- [ ] Training records labelled and excluded from live outreach and reports. Evidence: the label and the exclusion rule.
- [ ] Decision recorded on whether historical activity (emails, calls, notes) is migrated for the first workflows. Evidence: decisions.md.
- [ ] Team knows how to pause new workflow enrolment and where the review queues are. Evidence: recovery section of the brief.
