Skip to main content
HubSpot is included in Archal’s environment catalog. Use it in a sandbox for CRM contacts, companies, deals, tickets, and engagements. Preview means the environment is included for testing, but its upstream coverage is incomplete. Verify the operations your test depends on.

Compatibility boundary

Local catalog validation: All five published samples passed. Checks cover the state contract, relationships, artifact hash, secret scan, and size limit.
Local catalog validation is not hosted proof. Archal checks current certification, reset, and isolation evidence before admitting new sandboxes. Use the authenticated environment catalog for live availability.
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.

Curated starting states

List the five samples with archal sample list hubspot. Each sample is a versioned starting state with a representative read, mutation, expected diff, reset expectation, and verified artifact hash.
List one contact and create another without requiring company or deal associations.Sample ID: hubspot.contact-baseline.v1Category: minimalStarting state: 1 record across contacts: 1Supported surface: Stateful CRM overlays for contacts, companies, deals, products, tickets, and associations.Required capabilities: state.read, state.load, state.reset, rest.crm-contactsFirst read: GET /crm/v3/objects/contacts. Expected result: HTTP 200.Representative mutation: POST /crm/v3/objects/contacts. Expected result: HTTP 200, 201, 204.Mutation input
Expected diff: changes include contacts. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.Expected reset: restores loaded sample.Known limits
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.
Start this sample
Inspect the raw state
The packaged JSON artifact is samples/states/hubspot/contact-baseline/state.json and is 665 bytes. The CLI verifies SHA-256 74252548bf45ce2477e2370a8aadba0fe0ae18cf14985fe3fc15cb3152ec8621 before printing it.Catalog validation: Passed. Hosted availability is determined by Archal’s live certification and admission system, not this static page.
Exercise one contact, company, deal, ticket, product, and workflow whose timestamps need reconciliation.Sample ID: hubspot.stale-crm-team.v1Category: small-teamStarting state: 16 records across automationWorkflows: 1, cmsDomains: 1, companies: 1, contactCompanyAssociations: 1, contacts: 1, crmLists: 3, crmPipelines: 1, crmSchemas: 1, deals: 1, line_items: 1, products: 1, quotes: 2, tickets: 1Supported surface: Stateful CRM overlays for contacts, companies, deals, products, tickets, and associations.Required capabilities: state.read, state.load, state.reset, rest.crm-contactsFirst read: GET /crm/v3/objects/contacts. Expected result: HTTP 200.Representative mutation: POST /crm/v3/objects/contacts. Expected result: HTTP 200, 201, 204.Mutation input
Expected diff: changes include contacts. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.Expected reset: restores loaded sample.Known limits
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.
Start this sample
Inspect the raw state
The packaged JSON artifact is samples/states/hubspot/stale-crm-team/state.json and is 9,206 bytes. The CLI verifies SHA-256 c3423bc62210bc38e1edf3bf56dee703654b9e58945c3a4ba36f4df6063ce9ae before printing it.Catalog validation: Passed. Hosted availability is determined by Archal’s live certification and admission system, not this static page.
Exercise contact, company, deal, product, ticket, and line-item list behavior over the full demo corpus.Sample ID: hubspot.demo-crm-portfolio.v1Category: populatedStarting state: 47 records across companies: 2, contacts: 6, deals: 6, line_items: 11, products: 11, tickets: 11Supported surface: Stateful CRM overlays for contacts, companies, deals, products, tickets, and associations.Required capabilities: state.read, state.load, state.reset, rest.crm-contactsFirst read: GET /crm/v3/objects/contacts. Expected result: HTTP 200.Representative mutation: POST /crm/v3/objects/contacts. Expected result: HTTP 200, 201, 204.Mutation input
Expected diff: changes include contacts. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.Expected reset: restores loaded sample.Known limits
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.
Start this sample
Inspect the raw state
The packaged JSON artifact is samples/states/hubspot/demo-crm-portfolio/state.json and is 18,618 bytes. The CLI verifies SHA-256 463c7c9426e8683719d970df564ff0d702a6d972b433ab711f0342fa7e9b96a1 before printing it.Catalog validation: Passed. Hosted availability is determined by Archal’s live certification and admission system, not this static page.
Verify that an archived contact is excluded from default reads but addressable through archived-object behavior.Sample ID: hubspot.archived-contact.v1Category: edge-caseStarting state: 2 records across contacts: 2Supported surface: Stateful CRM overlays for contacts, companies, deals, products, tickets, and associations.Required capabilities: state.read, state.load, state.reset, rest.crm-contactsFirst read: GET /crm/v3/objects/contacts. Expected result: HTTP 200.Representative mutation: POST /crm/v3/objects/contacts. Expected result: HTTP 200, 201, 204.Mutation input
Expected diff: changes include contacts. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.Expected reset: restores loaded sample.Known limits
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.
Start this sample
Inspect the raw state
The packaged JSON artifact is samples/states/hubspot/archived-contact/state.json and is 1,345 bytes. The CLI verifies SHA-256 1a30cd29d83e415330aa938cdcfc7ae61cbe16be0f688720a0c31f2f56385d6c before printing it.Catalog validation: Passed. Hosted availability is determined by Archal’s live certification and admission system, not this static page.
Start from a linked contact, company, deal, and line item graph, then create and reset one independent contact.Sample ID: hubspot.deal-association-workflow.v1Category: workflowStarting state: 6 records across companies: 1, contactCompanyAssociations: 1, contacts: 2, deals: 1, line_items: 1Supported surface: Stateful CRM overlays for contacts, companies, deals, products, tickets, and associations.Required capabilities: state.read, state.load, state.reset, rest.crm-contactsFirst read: GET /crm/v3/objects/contacts. Expected result: HTTP 200.Representative mutation: POST /crm/v3/objects/contacts. Expected result: HTTP 200, 201, 204.Mutation input
Expected diff: changes include contacts. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.Expected reset: restores loaded sample.Known limits
  • Broad non-CRM aliases remain replay-backed and are not general stateful guarantees.
Start this sample
Inspect the raw state
The packaged JSON artifact is samples/states/hubspot/deal-association-workflow/state.json and is 2,637 bytes. The CLI verifies SHA-256 e2149db70547a31843cd4a745890dec48cf514f52294cf3a6e4035bcc23a60fb before printing it.Catalog validation: Passed. Hosted availability is determined by Archal’s live certification and admission system, not this static page.

Use custom state

Start from a sample when possible. For custom state, inspect the contract with archal environment describe hubspot, then validate the file before creating a sandbox:
Loading state replaces the current collections and establishes a new reset baseline. See Starting state before replacing state in an existing sandbox.