Snippets: Pull properties from multiple associated records of the same object in one snippet

Summary

Allow a single snippet to reference properties from more than one record of the same object type through associations. Example: in one email, introduce two Contacts using the same property field, such as Bio, once for Contact A and once for Contact B.

Problem

Today, snippets and personalization tokens work well for the primary record you are on, but they do not let you insert the same property from a second record of the same object. This blocks common use cases like warm introductions, partner intros, or multi-party notes. Users end up copy-pasting, creating duplicate custom properties, or writing two separate emails.

Requested capability

Enable snippets to select another associated record of the same object and pull its properties into the same snippet.

  • Generic across all HubSpot objects. Example scenarios:
    • From a Contact record, insert Bio for Contact A (this record) and Bio for Contact B (an associated Contact).
    • From a Deal, insert Job Title for two associated Contacts with different association labels.
    • From a Company, insert Domain for two associated Companies when using a multi-company data model.

Proposed UX

Two complementary options would both be useful:

  1. Picker in the snippet insert flow
  • When inserting a personalization token inside a snippet, add a selector for:
    • Object type
    • Association label or index
    • Specific associated record (search or pick from association list)
  • Example: Insert → Contact → Association label = “Introduced Party” → Property = Bio.

2. Picker in the snippet insert flow for email or note

  • When inserting the snippet in an emial or note the personalization token is applied to the selected records that are associated to that email or note from the dropdown selector.

Acceptance criteria

  • A snippet can contain multiple tokens from multiple records of the same object.
  • Works in one-off emails, sequences, templates, notes, and logged calls.
  • Fully supports association labels and multiple associations.
  • Preview shows the resolved values for each referenced record before sending.
  • Fallbacks are configurable per token. Example: show a placeholder or hide the line when a value is missing.

Example use case

Warm intro email from a Contact record

  • Contact A = the record you are on.
  • Contact B = associated Contact with label “Introduced Party” or the selected associated Contact on the email.
  • Snippet renders:
    • Contact A: {{ contact.bio }}
    • Contact B: {{ contact.associations.contact[label=“Introduced Party”].bio }}

Why this matters

  • Reduces manual copy-paste and errors.
  • Speeds up multi-party communication workflows such as introductions, partner updates, and executive summaries.
  • Keeps data in one place. No need to duplicate properties across objects or create “Contact B Bio” fields.

Current workarounds and limitations

Manually copy bios into the email body.

Create duplicate custom properties, which is brittle and hard to maintain.

Build custom apps to fetch and merge associated data outside the editor.
These are slow, error-prone, and not scalable.

Impact

Broad impact across Sales, Success, Partnerships, and RevOps. Significant time savings, better personalization, and consistent data usage across email, notes, and templates.

Nice to have

  • Ability to pick the associated record directly from the email or note composer via an “Insert associated record” control.
  • Support for multiple objects in one snippet. Example: insert fields from the primary Contact, an associated Company, and two associated Contacts.