HubSpot Scoring With External Data

HubSpot Scoring With External Data

HubSpot scoring is limited to data inside HubSpot. Sync billing, support, and product data to build lead scores that predict conversions. Setup guide.

No credit card required

Free 100k syncs every month

HubSpot's lead scoring engine has a blind spot: it can only score on data that already lives in HubSpot. Your billing data is in Stripe. Support ticket history is in Zendesk. Product usage signals sit in your application database. HubSpot scoring ignores all of it, which is why most teams build scoring models on job title and email opens, then wonder why the scores don't predict conversions.

For the fundamentals of how lead scoring works, see our guide to lead scoring. This guide focuses on the HubSpot-specific workflow: getting external data into HubSpot contact properties so the built-in scoring engine has something meaningful to score on.

What HubSpot scoring is and how the built-in lead scoring works

HubSpot offers two scoring mechanisms. Predictive scoring (Enterprise only) uses machine learning to analyze your contact database and assign a "Likelihood to Close" probability. Manual scoring uses the "HubSpot Score" property, where you define rules that add or subtract points based on contact property values.

Both approaches share the same constraint: they only evaluate data stored in HubSpot contact properties. If a field doesn't exist on the contact record, the scoring engine can't see it.

Out of the box, HubSpot scoring works with form submissions, email engagement, page views tracked by the HubSpot pixel, and manually entered fields. For teams that run their entire sales and marketing operation inside HubSpot, this covers enough ground. For everyone else, it misses the signals that actually predict conversion.

Why HubSpot scoring falls short when data lives outside HubSpot

The gap shows up the moment you ask: "Which leads are most likely to buy?" The answer depends on data from three places HubSpot doesn't touch.

Billing signals from Stripe. Is this lead on a free trial or a paid plan? When does the trial end? Have they upgraded, downgraded, or missed a payment? Subscription status is the strongest single predictor of buying intent for SaaS products, and HubSpot doesn't have it unless you put it there.

Support context from Zendesk or Intercom. How many tickets did this contact open? Were they resolved or escalated? A lead who filed three support tickets about an advanced feature is actively evaluating. A lead with zero engagement might have abandoned the product. Both look identical in HubSpot if support data stays in the support tool.

Product usage from your database. Last login date, features activated, session count, teammates invited. These behavioral signals are the foundation of product-qualified lead (PQL) identification, and they live in your application database, not in HubSpot.

The result: HubSpot scoring runs on demographic data (job title, company size) and marketing engagement (emails opened, forms submitted). It misses billing, support, and product signals entirely. The score tells you who matches your ideal profile and who reads your emails. It doesn't tell you who is actually using the product, paying you money, or struggling with a problem your sales team could solve.

Signal type

Example data

Where it lives

HubSpot has it?

Demographic

Job title, company size

HubSpot

Yes

Marketing engagement

Email opens, form fills

HubSpot

Yes

Billing

Plan, MRR, trial end date

Stripe

No

Support

Ticket count, escalations

Zendesk

No

Product usage

Last login, features used

Your database

No

The three missing rows are the three most predictive signal categories for SaaS and e-commerce teams. Without them, HubSpot scoring is working with half the picture.

How to feed external data into HubSpot scoring for better lead scores

The fix is straightforward: sync the missing data into HubSpot contact properties, then build scoring rules on those properties.

From Stripe: Sync subscription_status, plan_name, current_period_end (renewal date), mrr, and subscription_created. These fields turn every HubSpot contact into a billing-aware record. Your scoring rules can add 20 points for active paid subscribers, 10 for trialing, and subtract 15 for canceled.

From Zendesk or Intercom: Sync open_ticket_count, last_ticket_date, total_tickets, and ticket_tags. A lead with 3+ recent tickets is actively engaged. A lead tagged "billing question" is further down the funnel than one tagged "general inquiry."

From your PostgreSQL database: Sync last_login_at, features_activated, session_count_7d, and teammates_invited. These are PQL signals. A contact who logged in 5 times this week and invited 2 teammates scores higher than one who signed up and never returned.

Each data source connects to Oneprofile separately, and each pushes its fields into the same HubSpot contact record. The contact becomes a unified view: demographic data from HubSpot, billing data from Stripe, support data from Zendesk, and product usage from your database. HubSpot's scoring engine then has access to all of it.

Step-by-step HubSpot lead scoring setup with Oneprofile data sync

1. Connect your data sources. In Oneprofile, add each tool as a source: Stripe with a restricted API key (read access to Customers and Subscriptions), Zendesk with an API token, and your PostgreSQL database with a read-only connection string. Oneprofile validates each credential before saving.

2. Connect HubSpot as a destination. Add HubSpot via OAuth or a private app access token. Grant read/write access to Contacts and Contact Properties. Oneprofile confirms the connection against HubSpot's live API.

3. Map fields from each source to HubSpot properties. For each source, create a sync config. Map Stripe fields to HubSpot custom contact properties:

Source tool

Source field

HubSpot property

Field type

Stripe

subscription.status

subscription_status

Single-line text

Stripe

plan.nickname

plan_name

Single-line text

Stripe

subscription.current_period_end

renewal_date

Date

Zendesk

open_ticket_count

open_tickets

Number

Zendesk

last_ticket.created_at

last_ticket_date

Date

PostgreSQL

last_login_at

last_login

Date

PostgreSQL

features_activated

features_used

Number

Oneprofile creates custom HubSpot properties automatically when they don't exist. Use email as the matching key across all three syncs.

4. Select sync mode and schedule. Use "Update or Create" mode for Stripe (creates HubSpot contacts for Stripe customers who don't exist in HubSpot yet). Use "Update" mode for Zendesk and PostgreSQL if you only want to enrich existing contacts. Set all three syncs to a 15-minute schedule.

5. Run the initial sync. The first run backfills all historical records. Open a contact in HubSpot and confirm that billing, support, and product fields are populated. Subsequent syncs process only records that changed since the last run.

6. Build HubSpot Score rules. Navigate to Settings > Properties > HubSpot Score. Add positive and negative criteria:

  • subscription_status is "active" → +20 points

  • plan_name is "Team" or "Enterprise" → +15 points

  • features_used is greater than 3 → +10 points

  • last_login is within last 7 days → +10 points

  • open_tickets is greater than 0 → +5 points (engagement signal)

  • last_login is more than 30 days ago → -15 points

  • subscription_status is "canceled" → -20 points

Scores recalculate automatically when synced fields update. A contact who upgrades from free to paid in Stripe at 2 PM has an updated HubSpot score by 2:15 PM.

HubSpot lead scoring best practices for SaaS and e-commerce teams

Score on revenue signals first, not marketing signals. An email open is worth 1 point. An active paid subscription is worth 20. Weight your model toward billing and product data. Marketing engagement matters, but it's a weaker predictor than actual buying behavior.

Use negative scoring aggressively. Leads who canceled, stopped logging in, or haven't engaged in 30+ days should lose points. Without negative scoring, your pipeline fills with stale contacts who scored high six months ago and haven't returned since. A contact with subscription_status = canceled and last_login > 60 days ago should score near zero regardless of their job title.

Create separate scores for different motions. HubSpot supports multiple custom score properties. Create one for product-led growth (weighted toward product usage and billing data) and one for sales-led growth (weighted toward demographic fit and marketing engagement). Route PQL-high contacts to automated upgrade emails. Route sales-high contacts to your rep queue.

Set score thresholds based on your data, not intuition. After one month of enriched scoring, pull your closed-won deals and check what score range they had at time of close. If 80% of conversions come from contacts scoring 60+, set that as your SQL threshold. Adjust quarterly as your data accumulates.

Monitor sync health, not just score distributions. A scoring model running on stale data produces stale scores. Check that your Oneprofile syncs run on schedule, that the dead letter queue is empty, and that field values update as expected. A broken sync degrades your entire scoring model silently.

Ready to get started?

No credit card required

Free 100k syncs every month

Ready to get started?

No credit card required

Free 100k syncs every month

Ready to get started?

No credit card required

Free 100k syncs every month

Does HubSpot scoring work with data from other tools?

Only if that data is in HubSpot contact properties. HubSpot scores on its own fields. Syncing external data (billing status, product usage, support tickets) into HubSpot properties lets the scoring engine use it.

Do I need HubSpot Enterprise for lead scoring?

Predictive scoring requires Enterprise. Manual scoring with the HubSpot Score property is available on Professional. With enriched contact data from external tools, manual scoring is effective enough for most teams.

How often should HubSpot lead scoring data refresh?

Every 15 minutes. Scores built on stale data send reps to the wrong leads. Incremental sync pushes only changed fields, keeping scores current without hitting HubSpot API rate limits.

Can I score on Stripe billing data in HubSpot?

Yes. Sync subscription_status, plan_name, and MRR from Stripe to HubSpot contact properties. Then create scoring rules: paid plan adds 20 points, trial adds 10, canceled subtracts 15. Scores reflect real revenue signals.

What if I use Salesforce instead of HubSpot?

The approach is the same. Sync external data into Salesforce contact or lead fields, then build scoring rules on those fields. Oneprofile supports both HubSpot and Salesforce as sources and destinations.

© 2026 Oneprofile Software

455 Market Street, San Francisco, CA 94105

© 2026 Oneprofile Software

455 Market Street, San Francisco, CA 94105

© 2026 Oneprofile Software

455 Market Street, San Francisco, CA 94105