DocsSet up ad tracking
Guide

Set up ad tracking

To see which ad brought each lead, paste one line of parameters into each ad platform once. The platform then fills in the campaign and the ad on every click, and Jellyhook shows that ad on the lead, in Acquisition and in hook messages in Slack.

What it gives you

  • Acquisition shows each campaign and each ad, with its visitors, leads and hooked leads.
  • Acquisition → Ads lists every ad that brought a click. Add its video link and thumbnail there once.
  • Hook messages in Slack can show "Came from: Meta · Ads · Spring sale · 2026 Core Demo Video", the thumbnail and a Watch the ad button.
Optional
Without these parameters, Jellyhook still knows the platform and whether a visit was paid (from the ad network's own click id or the referrer). The parameters add the campaign and the ad.

Meta (Facebook and Instagram)

  1. In Ads Manager, open the ad, or select several ads and edit them together.
  2. Scroll to Tracking at the bottom of the ad.
  3. Paste this into URL parameters (not into the website URL):
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&campaign_id={{campaign.id}}&utm_content={{ad.id}}&ad_name={{ad.name}}

Meta replaces each value in double braces with the real campaign and ad on every click.

Google Ads (Search, YouTube, Display)

  1. Go to Admin (or Settings) → Account settings → Tracking.
  2. Paste this into Final URL suffix. It applies to every campaign in the account:
utm_source=google&utm_medium=cpc&campaign_id={campaignid}&utm_content={creative}
  • Use the Final URL suffix, not a tracking template of the form {lpurl}?...: a template like that breaks landing pages whose address already contains parameters, while the suffix is added correctly to any landing page.
  • Keep auto-tagging on. Its click id (gclid) tells Jellyhook a visit came from a Google ad even without parameters.
  • Google has no value for a campaign's name, only its id, so Google campaigns appear as "Campaign 2134...". To show a name, add utm_campaign=Your name to that campaign's own Final URL suffix.

TikTok Ads

  1. In Ads Manager, open the ad.
  2. Under tracking settings, paste this into URL parameters, or add it to the end of the destination URL:
utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__&campaign_id=__CAMPAIGN_ID__&utm_content=__CID__&ad_name=__AD_NAME__

What each parameter carries

ParameterHoldsUsed for
utm_sourceThe platformThe source row (Meta, Google, TikTok)
utm_mediumpaid_social or cpcMarks the visit as paid
utm_campaignThe campaign's nameThe campaign level
campaign_idThe campaign's idThe campaign when there is no name (Google)
utm_contentThe ad's idThe ad level and the Ads library
ad_nameThe ad's nameHow the ad is named until you give it a tag

Check that it works

  1. Open your site in a private window with a test link, for example:
    https://yoursite.com/?utm_source=facebook&utm_medium=paid_social&utm_campaign=Test&utm_content=12345&ad_name=Core+Demo
  2. Open Jellyhook → Acquisition → Ads: the ad "Core Demo" (id 12345) is listed. Add a tag, a video link and a thumbnail.
  3. Send your form in that same window. In Acquisition → Overview, open Meta · Ads → Test: the lead is there.
  4. If a hook with Slack caught the lead, its message shows the ad. To see the message without a lead, use Send a test to Slack in the hook editor.

Clicks made before the parameters were pasted do not carry an ad. Real ads start showing with their first click after the change.

Related