Google Ads · Final URL suffix
Calendly + Pipedrive UTM tracking for Google Ads
If Pipedrive creates contacts from Calendly but UTMs are empty, the break is almost never “Pipedrive forgot ROI” — the five Calendly tracking keys never arrived on the invitee, or the CRM sync never mapped them.
You do not need a custom endpoint that merges cookies with Calendly webhooks. Proven path: land UTMs on the page → pass them into the Calendly embed → map Calendly’s invitee UTM fields into Pipedrive Person custom fields with Zapier, Make, or a Calendly↔Pipedrive sync app.
Official Calendly docs: source-track embeds with UTMs. Full embed/GTM walkthrough: Calendly UTM tracking guide.
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={keyword}&utm_content={creative}
Why UTMs disappear
- Ad click never carries the five keys — Tracking template owned by a redirect, empty suffix, or wrong field.
- Page has UTMs, embed does not — Calendly ignores parent
location.searchunless you pass autmobject (or bake keys intodata-url). - Invitee has UTMs, Pipedrive does not — native/simple syncs often create Person + Activity from name/email only and skip tracking fields.
Fix the chain in order. A webhook that reads cookies cannot repair step 1 or 2.
1. Google Ads Final URL suffix
- Open Google Ads → Admin → Account settings → Tracking.
- Paste into Final URL suffix (not Tracking template).
- Save, then verify a click URL contains your parameters.
Prefer Final URL suffix so a click-fraud redirect can still own Tracking template. Calendly only stores utm_source, utm_medium, utm_campaign, utm_term, and utm_content — nothing else.
2. Pass UTMs into the Calendly embed
On the scheduling page, feed the query string into Calendly’s JS utm object (Option 3 in Calendly Help):
function getUrlVars() {
const vars = {};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (_m, k, v) {
vars[k] = decodeURIComponent(v);
});
return vars;
}
const utms = getUrlVars();
Calendly.initInlineWidget({
url: 'https://calendly.com/YOUR_LINK/30min',
parentElement: document.getElementById('calendly-embed'),
utm: {
utmSource: utms.utm_source,
utmMedium: utms.utm_medium,
utmCampaign: utms.utm_campaign,
utmContent: utms.utm_content,
utmTerm: utms.utm_term,
},
});
Book a test meeting and confirm the five values appear on the invitee in Calendly (Meetings / invitee details) before touching Pipedrive.
3. Map invitee UTMs into Pipedrive
Create five Person custom fields in Pipedrive (text), e.g. utm_source, utm_medium, utm_campaign, utm_term, utm_content — same names your reports expect.
Simplest reliable sync (recommended):
- Zapier or Make: trigger Calendly → Invitee Created (or Created/Rescheduled).
- Action Pipedrive → Find or Create Person by email.
- Map Calendly tracking / UTM fields from the trigger into those five custom fields (and update on reschedule if you need the latest campaign).
- Optionally create/update a Deal or Activity — UTMs belong on the Person so ROI survives deal recreates.
Marketplace sync apps (e.g. Outfunnel Calendly Sync) work the same way if they expose field mapping for Calendly UTM / tracking properties — turn that on; contact-only sync is what drops ROI.
When a custom webhook is worth it
Only if you must merge data Calendly never stores (extra cookie IDs, non-UTM keys, multi-touch). For standard campaign ROI, Zapier/Make field mapping is the proven middle ground — less ops than a merge API, more control than hope-native-sync.
Go-live checks
- Ad preview / test click → landing URL shows all five
utm_*keys. - Calendly invitee shows the same five values.
- Pipedrive Person custom fields match after the Zap/Make run (check task history).
- Reschedule test: confirm you update fields if marketers change campaigns mid-funnel.
Related
FAQ
Do I need a custom webhook that merges cookies with Calendly?
Usually no. If the five UTMs are on the Calendly invitee, map them into Pipedrive with Zapier, Make, or a sync app that supports field mapping. Custom merge endpoints are for data Calendly cannot store.
Why does Pipedrive create the contact but leave UTM fields blank?
Most Calendly→Pipedrive connections sync name, email and the meeting activity only. Add Person custom fields and explicitly map Calendly’s utm_source / medium / campaign / term / content (or “tracking”) properties.
Should UTMs live on the Person or the Deal in Pipedrive?
Prefer the Person. Deals get recreated; attribution for ROI reporting should survive on the contact. You can copy campaign onto the Deal title or a deal field for pipeline views.
Does Calendly store gclid for Pipedrive?
No — only the five UTM keys. Keep gclid for Google Ads / Enhanced Conversions on the page, or use the gclid → utm_content recipe if you need the click ID inside Calendly and CRM.