Skip to content

Instantly share code, notes, and snippets.

@owainlewis
Last active June 22, 2026 17:08
Show Gist options
  • Select an option

  • Save owainlewis/f8d1e4226e5b5ad993615e364f66b838 to your computer and use it in GitHub Desktop.

Select an option

Save owainlewis/f8d1e4226e5b5ad993615e364f66b838 to your computer and use it in GitHub Desktop.
Migraiton

HubSpot Migration Tracking Prompts

Simple version:

  1. Track every field in a Google Sheet.
  2. Keep detailed decisions in a ticke.t
  3. Use AI to draft each row.
  4. Get the business rule approved.
  5. Use AI to verify 10 sample records.
  6. Update the tracker.

The core idea is:

one field -> one rule -> 10 sample records -> pass/fail -> tracker status

Tracker

Use Google Sheets as the live tracker.

Use CSV exports when AI or scripts need to process a batch.

Column What it tracks
Field ID Stable ID, such as F005.
Source Field Field in the old system.
HubSpot Field Target field in HubSpot.
Example Values A few real source values.
Business Rule Short approved rule.
Verification Test How to prove it worked.
Status Not started, Drafted, Blocked, Approved, Implemented, Tested, Imported.
Owner Person who can approve the rule.
Ticket Link Detail, questions, evidence.
Next Action What needs to happen next.

Example:

Field ID,Source Field,HubSpot Field,Example Values,Business Rule,Verification Test,Status,Owner,Ticket Link,Next Action
F001,first_name,firstname,Sarah,Use if present,Check 10 records match source,Approved,CRM owner,TICKET-101,Ready to import
F003,email_address,email,sarah@example.com,Use as primary email if valid,Check 10 emails match after trim/lowercase,Approved,CRM owner,TICKET-103,Ready to import
F005,product_code,primary_publication,"MAG_PRINT_001, MAG_OLD_99",Map product code to approved publication,Check 10 records map to one HubSpot option,Blocked,Publishing owner,TICKET-205,Confirm old product codes
F006,do_not_email,hs_email_optout,true,Opted-out contacts must stay opted out,Check 10 opted-out records are not marketable,In review,Legal owner,TICKET-301,Legal approval

Ticket

Use a ticket or github issue when a row needs detail.

Keep it short.

# F005: product_code to primary_publication

## Rule
Product codes map to approved HubSpot publication names.

Unknown codes go to the exception report.

## Mapping
| Source Value | HubSpot Value | Status |
| --- | --- | --- |
| MAG_PRINT_001 | Magazine Print | Approved |
| MAG_DIGITAL_001 | Magazine Digital | Approved |
| MAG_OLD_99 | TBD | Needs review |

## Questions
- Should old product codes map to current publication names?
- If a contact has multiple product codes, which one is primary?

## Verification
Check 10 sample records.

Each HubSpot value must match the approved rule.

## Evidence
- Export checked:
- Test result:
- Exceptions:

Prompt 1: Draft A Tracker Row

Use this when adding a new field.

Create a tracker row for this HubSpot migration field.

Source field:
[source field]

HubSpot field:
[HubSpot field]

Sample source values:
[sample values]

Known notes:
[notes]

Return one row with:

Field ID, Source Field, HubSpot Field, Example Values, Business Rule, Verification Test, Status, Owner, Ticket Link, Next Action

If the business rule is unclear, set Status to Blocked and write the question in Next Action.

Prompt 2: Draft A Ticket

Use this when a row is blocked, high risk, or needs a decision.

Create a short migration ticket from this tracker row:

[paste tracker row]

Include:

- Rule
- Mapping table, if useful
- Questions
- Verification
- Evidence needed

Keep it short.

If the rule is unclear, list the exact question for the business owner.

Prompt 3: Verify One Row

Use this after the mapping is implemented or test-imported.

Verify this HubSpot migration field.

Tracker row:
[paste tracker row]

Approved business rule:
[paste approved rule]

Here are 10 sample records:
[paste records]

Each sample has:
Record ID, Source Value, Transformed Value, HubSpot Value

For each sample:

1. Work out the expected HubSpot value from the business rule.
2. Compare it to the actual HubSpot value.
3. Mark Pass, Fail, or Needs review.
4. Explain the reason briefly.

Return:

1. A results table:
Record ID, Source Value, Expected Value, HubSpot Value, Result, Reason, Suggested Fix

2. Overall result:
Pass, Fail, or Needs review

3. Exceptions to log.

4. Evidence summary for the ticket.

5. Suggested tracker status.

Set status to Tested only if all 10 samples pass.

Sample input:

Record ID,Source Value,Transformed Value,HubSpot Value
C001,MAG_PRINT_001,Magazine Print,Magazine Print
C002,MAG_DIGITAL_001,Magazine Digital,Magazine Digital
C003,MAG_OLD_99,,Magazine Print

Prompt 4: Verify A Batch

Use this when checking multiple fields.

Verify this migration batch.

Tracker rows:
[paste rows]

Sample records:
[paste samples]

Each sample has:
Field ID, Record ID, Source Value, Transformed Value, HubSpot Value

For each Field ID:

1. Check 10 samples against the business rule.
2. Count Pass, Fail, and Needs review.
3. List failed or unclear records.
4. Recommend the next tracker status.

Return two tables.

Table 1:
Field ID, Pass Count, Fail Count, Needs Review Count, Recommended Status, Notes

Table 2:
Field ID, Record ID, Problem, Suggested Fix, Owner

Prompt 5: Update The Tracker

Use this after verification.

Update this tracker row from the verification result.

Current tracker row:
[paste row]

Verification result:
[paste result]

Return the updated row.

Only update:

- Status
- Verification Test
- Next Action

Rules:

- If all 10 samples passed, set Status to Tested.
- If any sample failed, keep Status as Implemented and put the fix in Next Action.
- If any sample needs review, set Status to Blocked and name the owner needed.

MCP Setup

MCP is optional.

Start with the Google Sheet and CSV exports.

Add MCP when the AI needs to read HubSpot or Google Drive directly.

HubSpot:

  • Use the HubSpot remote MCP server: https://mcp.hubspot.com.
  • Create an MCP auth app in HubSpot.
  • Authenticate with OAuth and PKCE.
  • Start with read/review workflows.
  • Keep human approval before writing anything back to HubSpot.

Google Drive:

  • Use Google Sheets for the tracker.
  • Use Google Docs for ticket docs if needed.
  • Use the Google Drive MCP server: https://drivemcp.googleapis.com/mcp/v1.
  • Authenticate with the Google account that has access to the tracker.

Useful MCP prompts:

Find the HubSpot property definition for this field:

[paste HubSpot field]

Return the property type, allowed values, and constraints.
Find the migration tracker.

Show rows where Status is Blocked and group them by Owner.

Done

A field is done when:

  • The business rule is approved.
  • The mapping is implemented.
  • 10 sample records pass.
  • Exceptions are logged.
  • Evidence is linked in the ticket.
  • The tracker status is updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment