Measurement, ROI & AttributionOct 22, 202613 min read

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.

SG

Sophie Grant

Email Signature Specialist, Scribe

How to Track Email Signature Banner Clicks in HubSpot and Salesforce

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_campaign and 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.recorded webhook 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 signature if 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:

MetricWhat it meansBreakdowns
ViewsTimes signatures were displayed to recipientsSignature, teammate, campaign, country
ReachUnique recipients who saw a signatureWorkspace
ClicksClicks on a link, button, banner or iconElement, signature, teammate, campaign, country
CTRClicks divided by viewsSame as clicks
Conversions (SDK)Signups, demos and purchases on your site after a signature clickSignature, 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

  1. Open the signature and select the banner, or any other block with a link.
  2. In its Link field, click Personalize this link.
  3. 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.
  4. Check the preview under Your link will look like and click Save.
  5. Publish the signature. Every teammate's links now carry their own values.
ParameterSuggested valueWhy
utm_sourcescribeIdentifies the channel tool
utm_mediumsignatureKeeps signature traffic out of HubSpot's Email marketing bucket (see below)
utm_campaignCampaign name, such as q4-webinarGroups clicks by banner campaign
utm_contentSmart Fields: First name + Last nameShows which teammate's email drove the click
utm_term (optional)A department or team Smart FieldLets 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_campaign or source. In that bucket, utm_campaign shows as the campaign and utm_content as the email name. That mixes signature clicks with HubSpot's own marketing emails, which use default campaign values such as hs_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. With utm_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:

  1. 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_campaign and utm_content to custom lead fields, or set Lead Source to "Email signature".
  2. 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).
  3. 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

  1. In Scribe, go to Settings > Workspace, copy the Event Tracking ID, and make sure Tracking is enabled. Conversion tracking needs a paid plan.
  2. 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/js and call scribe.init(...) once at startup.
  3. Call scribe.track('demo_booked') or scribe.track('signup', { value: 99, currency: 'USD' }) where the conversion happens. Call scribe.identify(userId, traits) after login if you have user accounts.
  4. Test it from a real signature link. A conversion with no scribe_click_id isn'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_at and your event_id
  • visitor.user_id and visitor.anonymous_id
  • attribution: teammate_uuid, signature_template_uuid, anchor_uuid (the clicked element), email_uuid and marketing_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_uuid in 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-id header. Delivery is at least once, and failed deliveries are retried for about a day.

Step 3b: no-code with Zapier, Make or n8n

  1. In Zapier, Make or n8n, add a webhook trigger and copy its catch hook URL.
  2. In Scribe, open Settings > Webhooks, click Manage webhooks, add the URL, and subscribe it to conversion.recorded.
  3. Send a test delivery from the portal so the tool learns the payload shape.
  4. 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 parametersConversions and webhooks
PlanPart of the signature editor's link settingsA paid plan for conversion tracking, and API access for webhooks
EffortMinutes in the editorSDK on your site, plus an endpoint or a Zap
HubSpotNative: source reports and contact propertiesDeals, events or properties written by you
SalesforceNeeds hidden form fields or a marketing toolLeads, campaign members, opportunities
GranularityCampaign and teammate, through your UTM valuesTeammate, signature, clicked element and campaign
RevenueThrough the CRM's own attributionvalue 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) or consent: false (npm) to stop the SDK storing the click ID until the visitor consents.
  • Putting a teammate's name in utm_content sends 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.

Keep reading

Stripe email signature – Patrick Collison
Notion email signature – Camille Ricketts

Start your 14-day
free trial

Join 10,000+ companies using Scribe to power 15 million daily brand impressions

No card required. All features. Unlimited users.

Nike email signature – Greg Hoffman
Headspace email signature – Andy Puddicombe