Independent migration source review · Offline

Fictional Service Desk — legacy card source review

DEMONSTRATION — synthetic fixture, no client integration reviewed.

This report inventories supplied legacy definitions and response examples. It does not establish production compatibility or replace authenticated testing.

Documentation checked 2026-09-06 · Report generated 2026-09-06T16:58:58+00:00 · Analyzer 1.0.0

2Cards in fixture
2Response examples
6Observed actions
8Server review occurrences

Legacy card sunset. HubSpot lists October 31, 2026 as the legacy card sunset. Recheck the current announcement when planning delivery.

View migration is irreversible. Once started, replacement of user views cannot be stopped or reversed. This review performs no migration; require client test-portal evidence before considering that operation.

Card 1

Service issues — synthetic example

Title: Service issues · Source ID: demo-card-1

Objects and requested data

Record typeRequested properties
contactsemail
ticketssubject, hs_pipeline_stage

Configured display properties

NameLabelType
statusIssue statusSTATUS
issue_urlIssue pageLINK

Endpoints and handling inventory

Each row is an occurrence in supplied input; repeated destinations may share a handler. No request was sent. Query values and fragments are omitted.

UseMethodTargetServer reviewEvidence pointer
data_fetchGEThttps://api.example.com/hubspot/issuesRequired/cards/0/definition/fetch/targetUrl
action_baseUnspecifiedhttps://api.example.com/hubspotConfiguration reference/cards/0/definition/actions/baseUrls/0
action_baseUnspecifiedhttps://app.example.com/hubspotConfiguration reference/cards/0/definition/actions/baseUrls/1
iframeUnspecifiedhttps://app.example.com/hubspot/issues/101/editRequired/cards/0/responseSamples/0/results/0/actions/0/uri
action_hookPUThttps://api.example.com/hubspot/issues/101/resolveRequired/cards/0/responseSamples/0/results/0/actions/1/uri
action_hookDELETEhttps://api.example.com/hubspot/issues/101Required/cards/0/responseSamples/0/results/0/actions/2/uri
iframeUnspecifiedhttps://app.example.com/hubspot/issues/newRequired/cards/0/responseSamples/0/primaryAction/uri
iframeUnspecifiedhttps://app.example.com/hubspot/settingsRequired/cards/0/responseSamples/0/settingsAction/uri
action_hookPOSThttps://api.example.com/hubspot/refreshRequired/cards/0/responseSamples/0/secondaryActions/0/uri

Actions

LocationTypeLabelMethodRequested properties
resultIFRAMEEdit issueNot suppliedsubject
resultACTION_HOOKResolve issuePUThs_pipeline_stage
resultCONFIRMATION_ACTION_HOOKRemove issueDELETENone supplied
primaryActionIFRAMECreate issueNot suppliedNone supplied
settingsActionIFRAMESettingsNot suppliedNone supplied
secondaryActionACTION_HOOKRefresh summaryPOSTemail

Navigation links

TargetEvidence pointer
https://app.example.com/issues/101/cards/0/responseSamples/0/results/0/link
https://app.example.com/issues/101/cards/0/responseSamples/0/results/0/issue_url

Review findings

PriorityRuleFindingEvidence pointer
unknownPLATFORMProject and rollout state unavailable/cards/0
unknownPERMISSIONSReplacement URL permissions unverified/cards/0
unknownSAMPLES_ONLYSamples cannot establish coverage/cards/0
mediumTITLEDynamic title needs an alternative/cards/0/definition
highFETCH_BACKENDData endpoint needs source review/cards/0/definition/fetch/targetUrl
mediumAPP_IDConverter adds appId/cards/0/definition/fetch/targetUrl
highTICKET_LOCATIONSTicket cards need two locations/cards/0/definition/fetch/objectTypes/1
mediumLINKLink destination untested/cards/0/responseSamples/0/results/0/link
mediumLINKLink destination untested/cards/0/responseSamples/0/results/0/issue_url
highIFRAMEIframe behavior needs authenticated testing/cards/0/responseSamples/0/results/0/actions/0
highACTION_BACKENDAction endpoint needs source review/cards/0/responseSamples/0/results/0/actions/1
mediumAPP_IDConverter adds appId/cards/0/responseSamples/0/results/0/actions/1
highBODY_FORMATAction body changes in the converter/cards/0/responseSamples/0/results/0/actions/1
highACTION_BACKENDAction endpoint needs source review/cards/0/responseSamples/0/results/0/actions/2
mediumAPP_IDConverter adds appId/cards/0/responseSamples/0/results/0/actions/2
highCONFIRMATIONPreserve action confirmation/cards/0/responseSamples/0/results/0/actions/2
highIFRAMEIframe behavior needs authenticated testing/cards/0/responseSamples/0/primaryAction
highIFRAMEIframe behavior needs authenticated testing/cards/0/responseSamples/0/settingsAction
mediumSETTINGSSettings presentation changes/cards/0/responseSamples/0/settingsAction
highACTION_BACKENDAction endpoint needs source review/cards/0/responseSamples/0/secondaryActions/0
mediumAPP_IDConverter adds appId/cards/0/responseSamples/0/secondaryActions/0
highBODY_FORMATAction body changes in the converter/cards/0/responseSamples/0/secondaryActions/0
Card 2

Account summary — intentionally incomplete source example

Title: Account summary · Source ID: demo-card-2

Objects and requested data

Record typeRequested properties
companiesdomain

Configured display properties

NameLabelType
is_activeActive accountBOOLEAN

Endpoints and handling inventory

Each row is an occurrence in supplied input; repeated destinations may share a handler. No request was sent. Query values and fragments are omitted.

UseMethodTargetServer reviewEvidence pointer
data_fetchGEThttp://legacy.example.com/account-summaryRequired/cards/1/definition/fetch/targetUrl

Actions

None observed in the supplied fixture.

Navigation links

None observed in the supplied fixture.

Review findings

PriorityRuleFindingEvidence pointer
unknownPLATFORMProject and rollout state unavailable/cards/1
unknownPERMISSIONSReplacement URL permissions unverified/cards/1
unknownSAMPLES_ONLYSamples cannot establish coverage/cards/1
mediumTITLEDynamic title needs an alternative/cards/1/definition
highHTTPHTTP URL observed/cards/1/definition/fetch/targetUrl
highFETCH_BACKENDData endpoint needs source review/cards/1/definition/fetch/targetUrl
mediumAPP_IDConverter adds appId/cards/1/definition/fetch/targetUrl
unknownUNKNOWN_TYPEProperty type needs manual review/cards/1/definition/display/properties/0/dataType
unknownMISSINGReview input is incomplete/cards/1/responseSamples

Rule notes and source references

RuleReview noteSource IDs
ACTION_BACKENDHook actions make server-side requests. Review authorization, request validation and side effects before adapting them.legacy
APP_IDThe converter adds appId to data and action requests. Test handlers that reject unexpected parameters or rely on exact request representations.converter
BODY_FORMATThe official converter uses JSON for POST/PUT/PATCH, versus legacy form encoding. Confirm backward-compatible backend parsing; GET/DELETE use query parameters.converter
CONFIRMATIONConfirmation hooks display a dialog before the request. Test cancellation, confirmation and protection against repeated side effects.legacy
FETCH_BACKENDInventory the fetch handler, record context, data mapping and failure behavior. Its existence in a fixture does not prove reachability or correct authorization.legacy
HTTPReview an HTTPS replacement and redirect behavior before adding this target to new app URL permissions.configuration
IFRAMELegacy iframe actions do not receive the hook request signature. Review iframe authorization, framing policy, session handling and close/cancel behavior in the client test portal.legacy
IRREVERSIBLEOnce started, replacement of user views cannot be stopped or reversed. This review performs no migration; require client test-portal evidence before considering that operation.migration
LINKTest navigation, permissions, redirects and target behavior with a representative user; no destination is visited by this tool.Analyzer assessment
MISSINGSupply the missing source section or field. Absence from this fixture does not establish absence from the live integration.Analyzer assessment
PERMISSIONSNew app configuration separates permitted fetch, iframe and image URLs, and requires HTTPS. This tool does not generate or verify that configuration.configuration
PLATFORMVerify projects framework 2025.2 or newer, installed scopes, replacement cards and applicable feature flags. The migration guide requires deleting hs-release-app-cards and hs-hide-crm-cards when applicable before view migration.migration
SAMPLES_ONLYCollect representative empty, normal, error and permission-dependent responses. No sample proves all live branches are covered.Analyzer assessment
SETTINGSThe converter presents a settings button rather than the legacy footer action. Compare the customer workflow.converter
SUNSETHubSpot lists October 31, 2026 as the legacy card sunset. Recheck the current announcement when planning delivery.sunset
TICKET_LOCATIONSTicket migration requires replacements for crm.record.sidebar and helpdesk.sidebar, with distinct titles and both replacement IDs.migration
TITLEThe converter's card title is static; counts can be placed inside card content. Compare this against the legacy user experience.converter
UNKNOWN_TYPEThe type is outside this analyzer's reviewed display set. This is not a declaration that HubSpot rejects it.Analyzer assessment

Unresolved evidence

Client acceptance test plan — all tests pending

IDCaseAcceptance evidenceEnvironmentStatus
T01Source completenessReconcile every deployed legacy card and object type against the inventory; explain missing sources and unknown fields.Client source reviewnot_run
T02Record data and empty statesCompare normal, empty, missing-property, duplicate-result and large-result cases in both card locations that apply.Client test portalnot_run
T03Backend request contractsCapture sanitized request metadata and compare method, query, JSON/form parsing, extra parameters and request verification without storing credentials.Client test portal and backendnot_run
T04Failure handlingInject timeout, unreachable endpoint, 401/403, 404, 429, malformed response and 5xx; verify understandable errors and bounded retries.Client test portal and controlled backendnot_run
T05Action integrityVerify confirm/cancel, double click, replay and retry. A repeated request must not duplicate a charge, deletion or other irreversible effect.Client test portal with synthetic recordsnot_run
T06Iframe and link flowTest permitted targets, session expiry, framing restrictions, redirects, navigation and close/cancel with representative user permissions.Client test portalnot_run
T07Least privilege and isolationTest limited users, multiple installed accounts and denied record access; data and actions remain scoped to the correct account and user.Client test portal and backendnot_run
T08Rollout evidenceRecheck current docs, replacement IDs, all locations, scope grants and flag state; record test evidence and a client-controlled cutover decision before irreversible view migration.Client-controlled rollout reviewnot_run

Sources

Limits and handling

Input SHA-256: fbcdbaf767c38610b3210a1e9e55d7a618374eadb57fb01e589a8ce2f2c9eed4

Get this review for your own cards.

$750 USD + applicable tax · Up to 2 cards in 1 public/unlisted app. Receive an independent, AI-assisted source review and prioritized change/test plan within 2 business days after payment is verified, complete sanitized inputs are accepted, and we confirm the start.

Full migration and production troubleshooting are excluded. Implementation is separately scoped from $4,500. Cancel before work starts for a refund.