Using Middle and HubSpot workflows, you can automate deal pipelines that track intro session bookings, attendance, and final acquisition through training package purchases (both PIF and recurring packages). Middle consolidates member, event, purchase, and recurring service data into a single Deal object using custom properties and pipeline. This process gives trainers and sales teams clear, close-to-real-time visibility into the personal training acquisition journey for both new and existing members.
Central to the integration is an introductory event, such as a new member workout or free a introductory session, that introduces members to the gym’s training programs. Middle workflows identify these events based on the event name. When the event is booked, Middle either updates an existing Deal to a Booked stage or creates a new Deal with a Booked status. Subsequent changes to the event status, such as an attendance, cancellation, or no-show, automatically advance the Deal through the pipeline.
Event status normalization
ABC Ignite events have two statuses: a class or appointment status and a status for the attendee. Middle’s integration takes these two statuses into account and compensates for when events are not marked correctly by the trainer. The four normalized values for an intro event are Attended, Canceled, No Show, and Pending. This status is passed directly to the HubSpot deal to help power the pipeline stage and communications.
Default event normalization
Middle's suggested event status normalization is as follows (this may differ based on your gym's operations):
Attended
If attendedStatus = “Attended”
Canceled
If attendedStatus = “Canceled”
No Show
If eventTimestamp is in the past and attendedStatus != “Attended” or “Canceled”
Pending
If eventTimestamp is in the future and attendedStatus != “Attended” or “Canceled”
This logic can be customized in the workflow template in step 3 in the probable_status definition.
Multiple bookings
If a member has more than one intro event in the past 30 days, such as when they need to rebook after a cancellation, Middle deciphers which event should be given priority based on the normalised event status and event timestamp. Preference is first given to the normalised event status in the following order:
Attended
Pending
Canceled & No Show
From there, preference is given to the earliest event. By determining which event should receive priority, Middle can reconcile an array of event data into a single Deal.
Package Purchased
When Middle sees a training package purchase, a checkbox flag is set on the Deal to indicate that the member purchased a deal-eligible package. The setting of this flag should automatically mark the Deal as closed-won.
The amount of the Deal is set by the ABC Ignite package total.
Recurring services versus paid-in-full packages
Training packages can be configured as recurring services or paid-in-full packages in ABC Ignite. It’s important to understand if only one or both of these package types should influence whether a Deal is closed-won. Recurring services can be pulled from ABC Ignite’s members/recurringservices and transactions/pos endpoints. Paid-in-full package purchases show up in the transactions/pos endpoint.
Filters can be applied to Middle workflows to include or exclude purchases and services.
Templates
Event attendance
Member Recurring Service
POS Sale
HubSpot Deal configuration
Pipeline stages
Core to the integration are Deal pipeline stages. Below are the assumed pipeline stages:
Not booked: An initial stage where a prospective training client is identified, but has not yet booked an introduction session
Booked: The prospect booked an introsession
No show: The prospect booked an intro session and didn’t show up
Missed: The prospect attended the intro session but has not yet converted to a training client
Closed Won: The prospect converted to a training client
Closed Lost: The prospect either fell off or communicated they are not interested
Hubspot Deal Properties to Create
Below are the properties that should be created to power the pipeline stage, communications, troubleshooting, and idempotency:
Idempotency properties
abc_guide (Unique single-line text): A primary identifier for the deal to keep duplicates from being created. The Middle workflow is set up to pass in a concatenation of pipeline ID and member ID: {pipeline}:{member_id}.
Event properties
intro_event_status (Dropdown): Normalized to Attended, Canceled, Pending, or No Show
intro_event_timestamp (Datetime): It’s important to tailor communications to whether or not this timestamp is in the future of the past
intro_session_key (Unique single-line text): To identify the preferred event (corresponding to the ABC Ignite event attendance key). This will help keep duplicate deals from being created if a deal is closed-lost and a Middle ABC Ignite Event workflow is unintentionally triggered.
Package purchase properties
pt_package_purchased (Checkbox): A flag to indicate whether the member purchased a training package
pt_package_key (Single-line text): To identify the data point that indicated a training package purchase (either the recurring service ID or POS purchase ID)
Member properties
member_id: The primary identifier for the member. Used to associate the deal to the correct contact.
HubSpot workflow configuration
Using Deal segments to trigger HubSpot workflows, you can automatically set deal stages based on the ABC Ignite data Middle sends to HubSpot.
Since these types of deals can go back a stage, it’s important to configure workflows for re-enrollment.
Intro Session - Booked
Segment filter logic: If the Intro event status is “Pending,” the Intro event timestamp is in the future, and PT Package Purchased? is no or unknown, then mark the pipeline stage as Booked.
Intro Session - No Show:
Segment filter logic: If the Intro event status is “No Show” or “Canceled,” or the Intro event timestamp is in the past and the Intro event status is “Pending,” and PT Package Purchased? is no or unknown, then mark the pipeline stage as No Show.
Mark Deal as Missed:
Segment filter logic: If the Intro event status is “Attended” and PT Package Purchased? is no or unknown, then mark the pipeline stage as Missed.
Mark Deal as Closed-Won:
Segment filter logic: If PT Package Purchased? is yes, then mark the pipeline stage as Closed-Won.
Clear the idempotency key if Closed-Lost:
If you want Middle to create new deals for existing members, then the GUID property will need to be cleared to allow for a new deal to be created in the future.
Associate Deal using member ID:
A workflow will need to associate Deals to Contacts using a match on member ID.