Measure

HubSpot and GoHighLevel

Connect HubSpot or GoHighLevel in one click. Won deals count as sales, and each profile goes back with where the person came from.

The HubSpot and GoHighLevel connectors work in two directions:

  • In: contacts join your customer profiles. Deal stages, wins and losses show on each person's timeline. A won deal counts as a sale in revenue and in the Attribution report.
  • Out: Sporetag sends each person who gave you an email to your CRM as a contact, with their first and last source, campaign, ad platform, landing page, short link, visits, revenue and orders.

It is on paid plans: Solo, Studio, Agency and Custom. Free does not include it.

Each connector needs Sporetag's own HubSpot or GoHighLevel app. Until it is set up for this server, the row says (when shipped). A webhook to Zapier or Make can do the same job until then.

Connect

1. In Sporetag, open your site, then Integrations. Under CRMs and sending, click Connect next to HubSpot or GoHighLevel. The login opens in a new tab. 2. Log in and approve what Sporetag asks for. - HubSpot: pick the HubSpot account if you have more than one. - GoHighLevel: pick one sub-account (location). Agency logins are not supported. Connect each client's sub-account on that client's site. 3. You land on the connector's page. The import of the last 90 days starts right away.

What Sporetag asks for:

ToolPermissionsWhy
HubSpotcrm.objects.contacts.read, crm.objects.deals.readRead contacts and deals
HubSpotcrm.objects.contacts.write, crm.schemas.contacts.read, crm.schemas.contacts.writeSend profiles back, and add the Sporetag properties
GoHighLevelcontacts.readonly, opportunities.readonly, locations.readonlyRead contacts, opportunities and the sub-account name
GoHighLevelcontacts.write, locations/customFields.readonly, locations/customFields.writeSend profiles back, and add the Sporetag custom fields

Sporetag never deletes anything in your CRM, and never changes a deal or an opportunity.

If you already connected the same CRM account on another site, the page offers Use that login, so you do not log in again.

What comes in

  • Contacts made in the last 90 days become customer profiles, with an Added to CRM item. The item keeps the CRM's own source, like "Paid social, Facebook" in HubSpot or "Facebook form" in GoHighLevel.
  • Older contacts only join people Sporetag already knows (by email or phone). A big CRM does not fill your profiles with people who never visited.
  • UTM tags and click ids the CRM kept become the person's first touch, when they are older than what Sporetag saw. HubSpot keeps them in the first page address. GoHighLevel keeps them in the contact's attribution.
  • Deals (HubSpot) and opportunities (GoHighLevel): each stage the deal entered is a Deal stage changed item, then Deal won or Deal lost. HubSpot keeps every stage with its time. GoHighLevel only says the current stage, so Sporetag stores the stages it sees.

After the first import, Sporetag checks every 15 minutes, and reads one day back each time so late changes are not missed. Each item is stored once.

Won deals as sales

A won deal with a value counts as a sale:

  • It adds to the person's orders and revenue.
  • It counts as a conversion of your goals on the Purchase event in the Attribution report, at the time it was won. When the person never visited your site, the deal is credited to the UTM tags on their CRM contact.
  • It counts once, however often Sporetag reads it. Its id is hubspot-deal- or ghl-opp- and the CRM's id.
  • It is never sent to Meta, since it is not a website purchase.

If the same sales already come from Stripe or Shopify, turn off Count won deals as sales. The wins stay on the timeline, with their amount, but are not counted twice. The switch applies to deals won from then on.

GoHighLevel: its API does not say which currency your opportunity values are in. Pick it under Contacts and opportunities in. It is USD until you do.

What goes out

Under Send profiles to HubSpot (or GoHighLevel), tick the fields to send and click Start sending.

FieldHubSpot propertyGoHighLevel custom field
NameFirst name and last nameFirst name and last name
PhonePhone numberPhone
First source, campaign and ad platformsporetag_first_source, sporetag_first_campaign, sporetag_first_platformSporetag first source, and so on
First seensporetag_first_seen (a date)Sporetag first seen
Last source, campaign and ad platformsporetag_last_source, sporetag_last_campaign, sporetag_last_platformSporetag last source, and so on
Landing pagesporetag_landing_pageSporetag landing page
Short linksporetag_short_linkSporetag short link
Visits, revenue, orderssporetag_visits, sporetag_revenue, sporetag_ordersSporetag visits, and so on
Profilesporetag_profile_url (a link to the profile in Sporetag)Sporetag profile
  • Sporetag makes the properties (in a HubSpot group named Sporetag) and the custom fields the first time it sends.
  • People are matched on email. Someone new is added as a contact. Someone the CRM has is updated.
  • Name and phone replace what the CRM has. Untick them to leave the CRM's own.
  • A field with no value is left out, never sent empty.
  • Pick a segment under Who to send only some people.

When people go out

  • Right away when your site identifies someone with an email: a form, a checkout on your site, or sporetag('identify').
  • Within 15 minutes for everyone else whose profile changed: a Stripe or Shopify sale, an import, a new touch.
  • Send everyone now sends every profile once more.

A profile goes out again only when one of its values changed.

Who is not sent

  • People with no email.
  • Everyone, while Show contact details is off. Sporetag then keeps only hashed emails, so it has no email to send. Turn it on in the Customers tab.
  • People Sporetag only knows from this same CRM. There is nothing new to add.

When something fails

A failed send waits 1, 5, 15, 30, then 60 minutes before the next try, without a warning. From the sixth failure in a row, the row says Needs attention with the reason, and Sporetag keeps trying every 15 minutes.

If the login ends, the row says Reconnect. One click opens the login again. Nothing already imported is lost.

Disconnect

Disconnect on the connector's page deletes the saved login and stops sending. Contacts and deals already imported stay on your customers. Properties and contacts already in your CRM stay there.

Something missing or wrong? Email hello@sporetag.com.