Memberships Purchased → HubSpot Deals

Last updated: May 29, 2026

What this is

When someone buys a Membership in SmartRec, the integration creates a Deal in HubSpot in the Membership Purchased stage of the default pipeline. The deal is linked to the buyer's Contact and to the Membership product (App Object).

Screenshot 2026-05-29 at 9.28.09 AM.png

When it syncs

  • Real-time — webhook on MembershipPurchased (Create and Delete)

  • Historical backfillGET /memberships/sold, default last 30 days

Field mapping

SmartRec field

HubSpot property

HubSpot label

Property group

Type

{Person.FullName} (P{Person.Id}) / {Membership.Name}

dealname

Deal Name

dealinformation

String

HubSpot default pipeline

pipeline

Pipeline

deal_activity

Enumeration

HubSpot "Membership Purchased" stage

dealstage

Deal Stage

deal_activity

Enumeration

API PurchasedDateUtc or Webhook EventTime

closedate

Close Date

dealinformation

Datetime

API InvoiceItemId or Webhook InvoiceItem.Id

smartrec_membership_invoice_item_id

Membership Invoice Item ID

smartrec_membership

String

Membership.Id

smartrec_membership_id

Membership ID

smartrec_membership

String

Membership.Name

smartrec_membership

Membership

smartrec_membership

Enumeration (integration adds missing options)

API Id or Webhook SubscriptionId

smartrec_subscription_id

Subscription ID (unique)

smartrec_membership

String

API State or Webhook SubscriptionState

smartrec_subscription_state

Subscription State

smartrec_membership

Enumeration

API PurchasedDateUtc or Webhook EventTime

smartrec_membership_purchased_date

Membership Purchased Date

smartrec_membership

Datetime

EffectiveDate

smartrec_membership_effective_date

Effective Date

smartrec_membership

Datetime

ExpirationDate

smartrec_membership_expiration_date

Expiration Date

smartrec_membership

Datetime

Person.Id

smartrec_person_id

Person ID

smartrec_person

String

Person.FullName

smartrec_full_name

Full Name

smartrec_person

String

Person.Email

smartrec_email

Email

smartrec_person

String

Person.Telephone

smartrec_telephone

Telephone

smartrec_person

Phone number

Person.TelephoneMobile

smartrec_telephone_mobile

Mobile Phone

smartrec_person

Phone number

Person.TelephoneWork

smartrec_telephone_work

Work Phone

smartrec_person

Phone number

(sync timestamp)

smartrec_last_sync_timestamp

Last Sync Timestamp

smartrec_person

Datetime

(branch)

smartrec_organization

Organization

smartrec_person

Enumeration (select)

Unique identifier: smartrec_subscription_id

Custom intake fields via Extra Questions

If your SmartRec memberships ask custom intake questions (emergency contact, t-shirt size, waiver signed, etc.), the integration can sync those answers as HubSpot properties on the membership deal.

How it works:

  1. You provide a list of question name strings in the smartrecExtraQuestions configuration.

  2. For each membership webhook, the integration fetches the person's answers: GET /memberships/{Membership.Id}/extraQuestions/{Person.Id}.

  3. Returned questions are matched against your configured list (case-insensitive, whitespace-normalized, startsWith matching).

  4. Matching answers are written to dynamically created HubSpot properties on the membership deal.

Property naming: Each extra question becomes smartrec_ex_{slugified_question_name} (lowercase, alphanumeric, underscores) in the smartrec_membership property group.

Answer types:

SmartRec AnswerType

HubSpot type

HubSpot field type

String

String

Text

DateTime

Datetime

Date

Date

Date

Date

Time

String

Text

YesNo

Enumeration

Boolean checkbox

YesNoSpecify

String

Text

CheckBox

Enumeration

Boolean checkbox

CheckBoxList

Enumeration

Checkbox (multi-select, semicolon-separated)

DropDownList

Enumeration

Select

RadioButtonList

Enumeration

Select

Note: Unmapped AnswerTypes are skipped. For enumeration types (other than boolean checkboxes), the integration adds new options to the property as it sees new answer values.

📸 Screenshot: HubSpot deal sidebar showing the smartrec_membership property group expanded, with extra question properties visible.

Associations

From

To

What it represents

Deal

Contact

The buyer — linked by Person ID, labeled "Membership Purchased"

Deal

App Object (Membership/MultiPass)

The Membership product they bought — linked by Membership ID

Things to know

  • Close Date is set once. On webhook Update actions, closedate and smartrec_membership_purchased_date are not overwritten.

  • smartrec_subscription_state default options: Active, Cancelled, Paused, Expired.

  • Delete behavior is different. A MembershipPurchased Delete webhook moves the deal to your configured "Membership Archived" stage rather than archiving the deal. See How Deletions & Archiving Work.

Related articles