How to Track Email Signature Banner Clicks in HubSpot and Salesforce
Two honest ways to see email signature banner clicks and conversions in HubSpot and Salesforce: per-teammate UTM parameters, and Scribe conversion tracking with webhooks through your own code or Zapier, Make or n8n.
Sophie Grant
Email Signature Specialist, Scribe

On this page
- What does Scribe track on its own?
- Method 1: per-teammate UTM parameters
- Set it up in the Scribe editor
- What HubSpot does with signature UTMs
- What Salesforce does with signature UTMs
- Method 2: conversion tracking and webhooks into the CRM
- Step 1: record conversions with the Scribe SDK
- Step 2: subscribe to the conversion.recorded webhook
- Step 3a: write it to the CRM with your own endpoint
- Step 3b: no-code with Zapier, Make or n8n
- Which method should you use?
- How to report signature-influenced pipeline
- Privacy and consent
- Frequently asked questions
- Can I see email signature clicks in HubSpot?
- Does Scribe integrate with HubSpot or Salesforce for analytics?
- Which UTM medium should I use for email signatures in HubSpot?
- How do I get UTM values into Salesforce?
- What does the Scribe conversion.recorded webhook contain?
- Can I send signature conversions to HubSpot without writing code?
- Why don't Scribe's click numbers match HubSpot or Google Analytics?
- Next step
Last updated October 2026
TL;DR
- Scribe has no native HubSpot or Salesforce integration for signature analytics. Views, clicks and CTR are reported in Scribe itself.
- Method 1, per-teammate UTM links (no code): add
utm_source,utm_medium,utm_campaignand a Smart Field such as the teammate's name to signature links. HubSpot's tracking code reads them automatically. Salesforce needs them captured in hidden form fields. - Method 2, conversions plus webhooks (paid plan, a little code or a no-code tool): record signups and demos with the Scribe JavaScript SDK, then push each
conversion.recordedwebhook into HubSpot or Salesforce with your own endpoint or with Zapier, Make or n8n. - In HubSpot, any UTM value that contains "email" puts the visit under Email marketing, alongside HubSpot's own emails. Use a medium such as
signatureif you want signature traffic reported separately. - The numbers in Scribe and in your CRM won't match one to one. They are two datasets, each counted by its own rules.
"Can I see signature banner clicks in HubSpot?" is one of the first questions marketing and RevOps teams ask once their email signatures carry a campaign banner. The honest answer has two parts. Scribe doesn't sync click data into HubSpot or Salesforce through a native app. But with two well-documented methods, you can see signature traffic, leads and pipeline inside both CRMs. This guide sets up both, step by step.
What does Scribe track on its own?
With tracking turned on in your workspace, Scribe's analytics measure every signature automatically:
| Metric | What it means | Breakdowns |
|---|---|---|
| Views | Times signatures were displayed to recipients | Signature, teammate, campaign, country |
| Reach | Unique recipients who saw a signature | Workspace |
| Clicks | Clicks on a link, button, banner or icon | Element, signature, teammate, campaign, country |
| CTR | Clicks divided by views | Same as clicks |
| Conversions (SDK) | Signups, demos and purchases on your site after a signature click | Signature, teammate, campaign, country |
Analytics are on every plan, with 30 days of history on Free and one year on paid plans. Banner campaigns are on the Business and Enterprise plans. Your CRM still won't know which contact clicked, or which deal followed. The two methods below fill that gap.
Method 1: per-teammate UTM parameters
Every link in a Scribe signature (a button, an image, a banner, a social icon or a text link) can carry extra URL parameters. Values can be fixed text or a Smart Field that fills in per teammate. Scribe documents this in Personalize links with Smart Fields.
Set it up in the Scribe editor
- Open the signature and select the banner, or any other block with a link.
- In its Link field, click Personalize this link.
- Add one detail for each UTM parameter, using the values in the table below. For
utm_content, bind the value to the First name Smart Field, click Add value, then bind Last name. Scribe joins them with a space. - Check the preview under Your link will look like and click Save.
- Publish the signature. Every teammate's links now carry their own values.
| Parameter | Suggested value | Why |
|---|---|---|
utm_source | scribe | Identifies the channel tool |
utm_medium | signature | Keeps signature traffic out of HubSpot's Email marketing bucket (see below) |
utm_campaign | Campaign name, such as q4-webinar | Groups clicks by banner campaign |
utm_content | Smart Fields: First name + Last name | Shows which teammate's email drove the click |
utm_term (optional) | A department or team Smart Field | Lets you compare Sales and Customer Success, for example |
Good to know: if a teammate's Smart Field is empty, that value is left out and the link still works. Parameters already in the URL are kept. mailto: and tel: links can't be personalized. When a recipient clicks, Scribe redirects them to your page and adds a scribe_click_id parameter. That parameter powers Scribe's own tracking and doesn't replace your UTMs.
What HubSpot does with signature UTMs
If the HubSpot tracking code is on your website, HubSpot reads UTMs on every visit, with no extra setup. Two rules from HubSpot's traffic source documentation (updated August 2026) matter here:
- "Email" anywhere means Email marketing. A visit goes to Email marketing when "email" appears in
utm_source,utm_medium,utm_campaignorsource. In that bucket,utm_campaignshows as the campaign andutm_contentas the email name. That mixes signature clicks with HubSpot's own marketing emails, which use default campaign values such ashs_email. - Otherwise it's Other campaigns. A visit with UTM parameters and none of "email", "adword", "ppc" or "cpc" goes to Other campaigns. There you can drill into
utm_campaign, then into source and medium. Withutm_medium=signature, signature traffic gets its own clean line.
Choose deliberately. If leadership wants all email in one number, use utm_medium=email. If you want to prove what signatures do on their own, keep "email" out of every parameter. You can build the base links in HubSpot's tracking URL builder and add the per-teammate value in Scribe.
When a signature visitor fills in a HubSpot form, the visit is tied to the contact. If it was their first known interaction, the contact's Original Traffic Source records it. HubSpot sets that property automatically, and it can't be edited by hand (traffic source properties). Deals inherit the original source of the associated contact with the earliest activity.
What Salesforce does with signature UTMs
Salesforce doesn't read UTM parameters from a page URL by itself. You need a form or a marketing tool to capture them:
- Web-to-Lead. Add hidden fields to your Web-to-Lead form and fill them from the URL with a few lines of JavaScript. Salesforce supports hidden parameters, and field names must be lowercase. Map
utm_campaignandutm_contentto custom lead fields, or set Lead Source to "Email signature". - Campaign membership. To add signature leads to a Salesforce campaign, include hidden Campaign ID and member status fields. Both must be valid for your org. Without a member status, the lead isn't added to the campaign (Associate a Web-to-Lead to a Campaign).
- Marketing automation. If you use Account Engagement, HubSpot synced to Salesforce, or another marketing platform, capture UTMs there and let the existing sync map them to lead and campaign fields.
Method 2: conversion tracking and webhooks into the CRM
UTMs tell your CRM where a visit came from. Scribe's conversion tracking goes one step further. It attributes each signup, demo or purchase to the exact signature, teammate, link and campaign, and webhooks then push that conversion into HubSpot or Salesforce as it happens.
Step 1: record conversions with the Scribe SDK
- In Scribe, go to Settings > Workspace, copy the Event Tracking ID, and make sure Tracking is enabled. Conversion tracking needs a paid plan.
- Add the script before
</head>:<script src="https://cdn-1.scribe-mail.com/v1/tracking.js" data-workspace="YOUR_EVENT_TRACKING_ID" async></script>. Or install the npm package@scribemail/jsand callscribe.init(...)once at startup. - Call
scribe.track('demo_booked')orscribe.track('signup', { value: 99, currency: 'USD' })where the conversion happens. Callscribe.identify(userId, traits)after login if you have user accounts. - Test it from a real signature link. A conversion with no
scribe_click_idisn't recorded.
Scribe matches a conversion to a click for up to 30 days after the click. It only stores conversions it can tie back to a signature click.
Step 2: subscribe to the conversion.recorded webhook
Workspace owners and admins can add an endpoint under Settings > Webhooks > Manage webhooks. This needs a plan with API access. Subscribe to conversion.recorded, and to visitor.identified if you identify users. Each conversion.recorded payload includes:
name,value,currency,occurred_atand yourevent_idvisitor.user_idandvisitor.anonymous_idattribution:teammate_uuid,signature_template_uuid,anchor_uuid(the clicked element),email_uuidandmarketing_campaign_uuid. A value is an empty string when it couldn't be resolved.
Note that the payload carries Scribe IDs, not names. To set the HubSpot contact owner or the Salesforce opportunity owner, map teammate_uuid to a rep. Keep a lookup table, or fetch teammates from the Scribe API once and cache them.
Step 3a: write it to the CRM with your own endpoint
This sample is adapted from Scribe's webhook use cases. Verify the Svix signature first, return a 2xx within 15 seconds, and do the CRM write from a queue:
async function onConversionRecorded(event, deliveryId) {
const { visitor, attribution, properties } = event;
await crm.upsertOpportunity({
externalId: event.event_id ?? deliveryId, // idempotency
contactExternalId: visitor.user_id,
name: event.name,
amount: event.value,
currency: event.currency,
closedAt: event.occurred_at,
source: "Email signature",
ownerUuid: attribution.teammate_uuid || null,
campaignUuid: attribution.marketing_campaign_uuid || null,
plan: properties?.plan,
});
}
- HubSpot: upsert the contact by your user ID or email, then create a deal or a custom event. Store
marketing_campaign_uuidin a custom property such as "Signature campaign". - Salesforce: upsert the lead or contact, add it as a member of an "Email signature" campaign, and create or update the opportunity with Lead Source set to "Email signature".
- Deduplicate on the
svix-idheader. Delivery is at least once, and failed deliveries are retried for about a day.
Step 3b: no-code with Zapier, Make or n8n
- In Zapier, Make or n8n, add a webhook trigger and copy its catch hook URL.
- In Scribe, open Settings > Webhooks, click Manage webhooks, add the URL, and subscribe it to
conversion.recorded. - Send a test delivery from the portal so the tool learns the payload shape.
- Route on
type, then map fields into a HubSpot or Salesforce action: create or update a contact, a deal or opportunity, or a campaign member.
Scribe's documentation adds a caution: most automation platforms don't verify webhook signatures, so anyone who learns the URL can post to it. Use catch hooks for low-stakes steps, or add a verification step before anything writes to your CRM.
Which method should you use?
| UTM parameters | Conversions and webhooks | |
|---|---|---|
| Plan | Part of the signature editor's link settings | A paid plan for conversion tracking, and API access for webhooks |
| Effort | Minutes in the editor | SDK on your site, plus an endpoint or a Zap |
| HubSpot | Native: source reports and contact properties | Deals, events or properties written by you |
| Salesforce | Needs hidden form fields or a marketing tool | Leads, campaign members, opportunities |
| Granularity | Campaign and teammate, through your UTM values | Teammate, signature, clicked element and campaign |
| Revenue | Through the CRM's own attribution | value and currency on every conversion |
Most teams start with UTMs on the banner, then add conversion tracking once someone asks for signature-sourced pipeline in dollars. Our guide to email signatures for lead generation covers which banners are worth measuring.
How to report signature-influenced pipeline
- In HubSpot: in the traffic analytics Sources tab, open Other campaigns and filter by your signature
utm_campaign. Build a contact or deal report filtered on Original Traffic Source = Other campaigns, plus drill-down = the campaign. Add your custom signature properties if you use webhooks. - In Salesforce: report on campaign members and opportunities for the "Email signature" campaign, or on leads where Lead Source = Email signature.
- In Scribe: compare signatures, teammates and campaigns by CTR and conversions. Analysts can also pull click and view breakdowns through the analytics endpoints of the REST API, or ask an AI assistant connected to the Scribe MCP server.
Expect different numbers in each place. Scribe counts every click on the signature link. Your analytics tool and CRM apply their own sessions, filters, bot rules and consent handling. Treat each as the source of truth for what it measures. For the ROI side, Scribe's ROI calculator estimates the time saved and the leads signatures can generate, based on your headcount, and signature analytics compared covers what other tools report.
Privacy and consent
- Turn on workspace tracking only once you have the consent your region requires. It carries the same responsibility as any analytics pixel.
- The Scribe SDK hashes IP addresses before storing them, and strips keys that look like personal data from event properties.
- Use
data-consent="denied"(snippet) orconsent: false(npm) to stop the SDK storing the click ID until the visitor consents. - Putting a teammate's name in
utm_contentsends it to your analytics tool. If your works council or policy objects, use an employee ID Smart Field instead.
For the setup that comes before tracking, see our guides on HubSpot email signatures and Salesforce email signatures, or Scribe for marketing teams. To put managed signatures on reps' HubSpot sales emails in the first place, see HubSpot email signatures for teams, and for coverage across every sales tool, email signatures for sales teams using a CRM.
Frequently asked questions
Can I see email signature clicks in HubSpot?
Yes, through UTM parameters. Add utm_source, utm_medium, utm_campaign and a per-teammate utm_content to your signature links. HubSpot's tracking code then attributes the visits in its source reports and on contacts. Scribe has no native HubSpot integration, so click counts themselves stay in Scribe's analytics.
Does Scribe integrate with HubSpot or Salesforce for analytics?
No. Scribe doesn't sync analytics into either CRM natively. You can get signature data there with per-teammate UTM links, or by sending Scribe's conversion.recorded webhook to the CRM with your own code or with Zapier, Make or n8n. Separately, Scribe's Salesforce integration installs signatures in Salesforce on the web.
Which UTM medium should I use for email signatures in HubSpot?
Use a value without the word "email", such as utm_medium=signature, if you want signature traffic reported separately under Other campaigns. Any UTM value containing "email" puts the visit under Email marketing, together with HubSpot's own marketing emails.
How do I get UTM values into Salesforce?
Salesforce doesn't read UTMs from the URL by itself. Capture them in hidden fields on your Web-to-Lead form, or in your marketing automation tool. Then map them to lead fields, Lead Source or a campaign, using hidden Campaign ID and member status fields.
What does the Scribe conversion.recorded webhook contain?
The conversion name, value, currency, time and your event ID, the visitor's user ID and anonymous ID, and attribution IDs for the teammate, signature template, clicked element, email and marketing campaign. Unresolved attribution IDs arrive as empty strings.
Can I send signature conversions to HubSpot without writing code?
Yes. Create a webhook trigger in Zapier, Make or n8n, register its URL in Scribe under Settings > Webhooks, send a test delivery, and map the fields to a HubSpot action. Most automation tools don't verify webhook signatures, so add a check before writing to your CRM.
Why don't Scribe's click numbers match HubSpot or Google Analytics?
They're separate datasets. Scribe counts every click on a signature link. Web analytics and CRMs count sessions and apply their own filters, bot rules and consent handling, so their totals are usually lower and differently grouped.
Next step
Add per-teammate UTMs to your next signature banner today, and check HubSpot's Other campaigns report after a week. When you're ready to tie signatures to revenue, set up conversion tracking on a paid plan. Scribe's 14-day free trial includes all features, with no card required.
Get started with Scribe
Build a professional email signature
Free 14-day trial — no credit card.






