HubSpot social media attribution: see which post brought each contact
Where HubSpot stores the social post behind a contact, how to report on it, what HubSpot's social tool can't show, and a step-by-step setup with Tracee.
HubSpot already records where each contact came from. The trick is reading the right two fields, and tagging posts so those fields name a post instead of a network. This guide shows where to look, what HubSpot's own social tool does and doesn't cover, and how to set up post-level attribution step by step.
HubSpot social media attribution means using a contact's Original traffic source and its two drill-down properties to identify the social post or ad that first brought that person to your site. For social traffic, drill-down 2 holds the utm_campaign value of the first tracked visit, so a post-specific tag turns that field into a post-level answer.
Where does HubSpot store the post that brought a contact?
HubSpot keeps it in three contact properties: Original traffic source, Original traffic source drill-down 1, and drill-down 2. Original traffic source is "the first known web source through which a contact interacted with your business," per HubSpot's traffic source properties article (updated August 4, 2026).
The drill-downs depend on the source. For social traffic, HubSpot documents them like this:
| Original traffic source | Drill-down 1 | Drill-down 2 |
|---|---|---|
| Organic social | Social media site | Campaign name retrieved from the URL's utm_campaign parameter |
| Paid social | Social media site | Campaign name retrieved from the URL's utm_campaign parameter |
| Other campaigns | Campaign name from utm_campaign | Source / Medium |
| Direct traffic | Entrance URL | N/A |
The same article states that the drill-downs are "automatically set by HubSpot and cannot be updated manually," and that companies and deals associated with a contact mirror these properties. That last point means a deal inherits the post that brought its contact, with no extra setup.
Drill-down 2 can only name a post if the post had its own utm_campaign. If 30 LinkedIn posts shared utm_campaign=q4-content, drill-down 2 says q4-content for all of them.
How does HubSpot decide a visit was organic or paid social?
HubSpot checks the first page URL and referrer against an ordered list of rules. The social ones, from HubSpot's traffic sources article (updated August 1, 2026):
- Organic social if
utm_mediumis "social" andutm_source"is exactly the name of a recognized social network." - Paid social if
utm_mediumcontains "paid", "ppc" or "cpc" with a recognized social network as source, or if source or medium contains "paidsocial". - Other campaigns if any UTM is present but nothing above matched.
- Organic social if there are no tags and the referring domain is a social media site.
Two consequences matter. Untagged posts still count as Organic social through the referrer, but drill-down 2 can't name them. And a tag with the wrong medium moves the contact out of social entirely, into Other campaigns. Our UTM guide for social posts has a naming table that passes HubSpot's rules.
How do you find the post behind a contact, step by step?
You can do this in any HubSpot account that runs the tracking code on your site. It takes about ten minutes the first time.
- Open the contacts index. Go to CRM, then Contacts.
- Add three columns. Edit columns and add Original traffic source, Original traffic source drill-down 1, and Original traffic source drill-down 2. Add Lifecycle stage and Create date too.
- Filter to social. Add a filter: Original traffic source is any of Organic social, Paid social.
- Narrow the date. Filter Create date to the period you're reviewing, for example last month.
- Sort by drill-down 2. Contacts with the same post tag now sit together. Count them per tag, and note which reached MQL, SQL or Customer.
- Map tags to posts. If your tags are post IDs, look each one up in your publishing log. If they are campaign names, you have campaign-level results only.
- Save the view. Save it as "Social contacts by post" so the team can reopen it.
For a chart, build a custom contacts report grouped by drill-down 2. For multi-touch credit across a deal's whole history, you need HubSpot's attribution reports, covered below.
What can HubSpot's own social tool show, and what can't it?
HubSpot's social tool publishes posts and reports on them, but its post-level reporting has firm limits. These come from HubSpot's post performance article (updated October 12, 2026) and its link shortening article (updated March 6, 2026).
| Question | What HubSpot's social tool does (as of November 2026) |
|---|---|
| Which plans include social reports? | Marketing Hub Professional and Enterprise |
| How long is post data collected? | "HubSpot collects post-specific data for 30 days after a post is published" |
| Are boosted posts and ads included? | No: "Social reports do not include data from boosted posts or social ad campaigns" |
| How are contacts counted? | "New contacts" = contacts created "as a result of web sessions driven by social media" in the date range |
| Can I use my own tracking URLs? | No: "Custom tracking URLs are not supported in social posts published through HubSpot" |
| Which UTMs are added? | HubSpot appends utm_content, utm_medium and utm_source to links |
| How far back does the new view go? | Not before July 1, 2025; older data is in the classic view |
For a B2B team, the 30-day window is the limit that bites hardest. A post that brings a reader who books a demo seven weeks later still shows in the contact's original source, but not in that post's own report. And because boosted posts and ads are excluded, organic and paid social results live in different places.
Which HubSpot attribution reports need which plan?
HubSpot's attribution reports give credit across several touches, but they're tiered. According to HubSpot's attribution reports article (updated August 18, 2026):
- Contact create attribution: Marketing Hub or Content Hub, Professional or Enterprise.
- Deal create attribution: Marketing Hub Enterprise only.
- Revenue attribution: Marketing Hub Enterprise only.
Available models include first touch, last touch, linear, time decay and an empirical model that replaced the older U-shaped, W-shaped, J-shaped and inverse J-shaped models.
On Professional, the original source properties plus a contacts report usually answer "which post brought this contact" well enough. Multi-touch models help once you have enough tagged touches per deal to compare, and they depend on the same UTM hygiene.
What are the common HubSpot attribution gaps?
Most unexplained social contacts come from a few repeatable causes.
- Ad blockers and declined cookies. HubSpot notes an ad-blocker may block its tracking cookies and affect these values. The contact then shows a later source or none.
- Forms outside your tracked pages. A scheduler or third-party form that doesn't pass HubSpot's visitor cookie creates contacts without web history.
- Imported or sales-created contacts. These show Offline sources. HubSpot recommends the Record source property for tracking how such records were created.
- Long gaps. HubSpot's visitor cookies expire after six months (HubSpot cookie list). A first click older than that is forgotten.
- Shared tagged links. If someone forwards your tagged link, their colleagues' visits credit your post. Usually harmless, sometimes inflating.
The general version of this checklist, with fixes, is in the guide to finding the post that brought a customer.
How do you set up post-level attribution with Tracee?
Tracee reads HubSpot and matches each contact to the post or ad campaign that brought it in, using the contact's own source data, so a post published two months ago still gets credit and paid campaigns sit in the same view. Here is the setup.
- Connect HubSpot. In Tracee, connect HubSpot in one click, or with a private app token that has read access to contacts. Tracee reads contacts, lifecycle stages and original source on a schedule.
- Connect your social channels. LinkedIn, Facebook, Instagram, X, TikTok, YouTube and the other supported networks connect by signing in.
- Publish from Tracee. Every link in a post goes out with
utm_sourceset to the network,utm_medium=social, and autm_campaignunique to the post, in the formtracee-plus eight characters. Existing UTM values on the link are replaced. HubSpot then files these visits as Organic social, with the post's tag in drill-down 2. - Connect ad accounts (optional). Meta Ads, Google Ads and LinkedIn Ads connect read-only, so paid campaigns are matched alongside posts. Tracee never edits campaigns, budgets or bids.
- Read the matches. Each contact shows the evidence used (a Tracee post tag, a campaign name in
utm_campaign, or HubSpot's paid source detail) and its lifecycle stage. Contacts that can't be matched are listed with the reason. - Ask your AI. If you connected Claude or ChatGPT over MCP, ask "Which posts last month brought MQLs?" The analytics tool reports contacts and MQLs per post as well as per ad campaign.
Tracee reads from HubSpot; it doesn't change HubSpot records unless you set up a workflow to do so, and agent requests to change data in a connected app always wait for a person. The Tracee FAQ covers the matching rules in more detail.
Next step
Build the "Social contacts by post" view in HubSpot this week and see how many rows have a useful drill-down 2. If most say a campaign name or nothing, the fix is post-level tags. Tracee adds them to every post on every plan; pricing has the current plans (at the time of writing, November 2026).
Frequently asked questions
How do I see which social post created a contact in HubSpot?
Open the contact and look at Original traffic source, drill-down 1 and drill-down 2. For organic and paid social, drill-down 1 is the network and drill-down 2 is the utm_campaign from the first tracked visit. If each post had its own utm_campaign, drill-down 2 names the post. If posts shared one campaign value, you only see the campaign.
Does HubSpot track social posts I publish outside HubSpot?
Only through the link. HubSpot's social reports cover posts published or connected through its social tool. For posts published natively or from another tool, HubSpot still records the visit and the contact's original source from the UTM tags on the link. Untagged links show up as Organic social with the network name and an empty or generic drill-down 2.
Can I change a contact's original source in HubSpot?
You can change the Original traffic source value, but the two drill-down properties are set by HubSpot and cannot be updated manually, according to HubSpot's knowledge base. Changing the source clears both drill-downs. For contacts created offline, HubSpot recommends recording the channel in the Record source property instead.
Which HubSpot plan do I need for social media attribution?
The original traffic source properties exist on every HubSpot account that uses the tracking code. Social post analytics need Marketing Hub Professional or Enterprise. Contact create attribution reports need Marketing Hub or Content Hub Professional or Enterprise, and deal create and revenue attribution reports need Marketing Hub Enterprise, as of November 2026.
Why are my social contacts showing as Other campaigns in HubSpot?
HubSpot files a visit as Organic social only when utm_medium is exactly social and utm_source is exactly a recognized social network name. Values like social-media, organic_social or a capitalized source fail that rule, and any tagged visit that matches no other rule falls into Other campaigns. Switch to lowercase network names and utm_medium=social.