TL;DR
- Four main methods exist: Salesforce's native Google Ads connector, iPaaS tools like Zapier, dedicated ETL/ELT connectors like Fivetran, and Google's offline conversion tracking via GCLID. Each serves a different use case.
- The native connector (via Salesforce Marketing Cloud or Data Cloud) is the fastest to set up but the least flexible for analytics — it syncs campaign metrics and audiences, not row-level click data.
- Offline conversion tracking is the highest-leverage configuration: it sends closed-deal data back to Google Ads so the bidding algorithm can optimize for revenue, not just form fills.
- GCLID capture is the critical failure point. If your landing page forms do not reliably capture the Google Click ID, the entire attribution chain breaks.
- ETL tools like Fivetran are the right choice when you need keyword-level data in a data warehouse for attribution modeling or when you need historical backfill.
- Common pitfalls: attribution gaps from missing GCLIDs, offline conversions uploaded outside the 90-day window, duplicate conversion actions, and field-level security blocking the integration user in Salesforce.
Most B2B revenue teams know their Google Ads spend to the dollar. They know their click-through rates, their cost per click, and their conversion rates from click to form fill. What they do not know — and what costs them real money — is which campaigns, keywords, and ad groups actually produce closed revenue, not just leads.
The gap between Google Ads data and Salesforce data is where attribution breaks. Google sees clicks and form fills. Salesforce sees pipeline and closed deals. Without a connection between the two, you are optimizing ad spend based on lead volume — which is a proxy for revenue that is often wildly inaccurate. A keyword that generates fifty leads per month might produce zero closed deals. A keyword that generates five leads might close three of them at high ACV.
Connecting Google Ads to Salesforce closes that gap. Done correctly, it tells you which keywords, campaigns, and audiences produce revenue — not just leads — and lets Google's bidding algorithm optimize toward the outcomes that actually matter. This guide covers the four main methods for making that connection, step-by-step setup instructions for each, a comparison of when to use which, and the common failure points that silently corrupt your attribution data.
Understanding the integration landscape
Before choosing a method, it helps to be clear about what you are actually trying to accomplish. The Google Ads–Salesforce integration serves two distinct purposes that are often conflated:
Pulling Google Ads data into Salesforce means importing campaign performance metrics (impressions, clicks, spend, conversions) into Salesforce objects so that sales reps and RevOps teams can see ad activity alongside CRM data. This is primarily a reporting and attribution use case.
Pushing Salesforce data back to Google Ads means sending closed-deal information — and the GCLID (Google Click Identifier) that ties those deals to original clicks — back to Google so that the bidding algorithm can learn which clicks produced revenue. This is the offline conversion tracking use case, and it is the higher-leverage configuration of the two.
Many teams focus on the first and ignore the second. That is a mistake. The ability to send closed revenue back to Google Ads and have Smart Bidding optimize toward it — rather than toward form fills — is one of the highest-ROI configurations available for paid search programs.
Key concept
GCLID (Google Click Identifier) is a unique parameter Google appends to your landing page URL when someone clicks a paid ad. It looks like ?gclid=CjwKCAjw... in the URL. Capturing and preserving this parameter through your form submission and into Salesforce is the foundation of the entire attribution chain. Every integration method that involves offline conversion tracking depends on GCLID being present in the Salesforce record.
Method 1: Salesforce native Google Ads connector
Salesforce has a native integration with Google Ads available through two products: Marketing Cloud Advertising (formerly Advertising Studio) and Salesforce Data Cloud. The native connector is the fastest to set up and requires no third-party tools, but it comes with meaningful limitations.
What the native connector does
The native connector enables two primary capabilities: audience syncing and campaign reporting. On the audience side, it lets you push Salesforce contact lists (by segment, lifecycle stage, or custom criteria) to Google Ads as Customer Match audiences. On the reporting side, it imports campaign-level and ad group-level performance metrics into Salesforce reports and dashboards.
What it does not do is expose raw click-level data, keyword-level attribution, or allow you to query individual ad impressions as Salesforce records. For reporting that does not require that granularity, it is adequate. For attribution modeling that needs to tie individual contacts to specific keywords, it is insufficient.
Prerequisites
- Salesforce Marketing Cloud with Advertising add-on, or Salesforce Data Cloud license
- Google Ads account with admin access
- Salesforce System Administrator or Marketing Cloud Administrator profile
- Google account linked to the Google Ads account
Setup steps
Step 1: Create a connected app or enable the integration in Marketing Cloud. In Salesforce Marketing Cloud, navigate to Administration → Integrations → Google Ads. You will be prompted to authenticate with the Google account that has admin access to your Google Ads account. Complete the OAuth flow.
Step 2: Link your Google Ads account. After authenticating, select the Google Ads account (or MCC sub-account) you want to connect. If you manage multiple Google Ads accounts under a manager account, you will link the specific accounts individually.
Step 3: Configure audience sync (optional). In Marketing Cloud Advertising, create an Audience Sync configuration that maps a Salesforce data extension or contact filter to a Google Customer Match audience. Specify the sync schedule (typically daily) and the match keys to use (email, phone, and mailing address are the supported Google Customer Match fields).
Step 4: Configure reporting imports. In Salesforce Reports, use the Google Ads report type (available once the connector is enabled) to build campaign performance reports. These pull from the Google Ads API and refresh on a daily schedule.
Step 5: Validate data flow. Run the sync manually for the first cycle and verify that (a) your Salesforce audience is appearing in Google Ads under Audience Manager → Customer Match, and (b) your Salesforce campaign reports are populating with recent Google Ads data.
Method 2: Offline conversion tracking with GCLID
Offline conversion tracking is the most technically involved method covered here — and the one with the highest ROI if done correctly. It works by capturing the GCLID from the original ad click, storing it in Salesforce, and uploading it back to Google when the deal closes. Google then attributes that revenue to the original keyword, campaign, and ad group.
Prerequisites
- Google Ads auto-tagging enabled (Account Settings → Auto-tagging → check "Tag the URL that people click through from my ad")
- A custom field on the Salesforce Lead and Contact objects to store the GCLID (text field, length 255)
- A landing page with a form that captures hidden fields from the URL
- A conversion action created in Google Ads for the offline event (e.g., "Closed Won")
- Access to the Google Ads API or a bulk upload mechanism for conversion data
Setup steps
Step 1: Enable auto-tagging in Google Ads. Navigate to your Google Ads account → Settings → Account Settings → Auto-tagging. Check the box to enable auto-tagging. This causes Google to append the gclid parameter to every landing page URL from paid clicks.
Step 2: Create a GCLID custom field in Salesforce. In Salesforce Setup, go to Object Manager → Lead → Fields & Relationships → New. Create a Text field named "GCLID" with a length of 255 characters. Repeat this for the Contact object. Field-level security must allow write access for the field on all relevant profiles, including the integration user or web-to-lead user.
Step 3: Capture GCLID in your landing page forms. On every landing page tied to Google Ads, add a hidden form field with the name gclid. Use JavaScript to read the GCLID from the URL and populate this field on page load. A minimal implementation looks like this:
function getParam(name) {
var match = new RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
var gclid = getParam('gclid');
if (gclid) {
document.getElementById('gclid_field').value = gclid;
// Optionally persist in localStorage for multi-page flows
localStorage.setItem('gclid', gclid);
}If your form spans multiple pages or uses a CMS, also check localStorage as a fallback on the confirmation or final submission page.
Step 4: Map the form GCLID field to the Salesforce Lead GCLID field. If you use Salesforce Web-to-Lead, add a hidden input with the name equal to the Salesforce field's API name (e.g., GCLID__c). For other form handlers (Pardot, HubSpot form embeds, or custom), ensure the GCLID value routes into the correct Salesforce field on lead creation.
Step 5: Create a conversion action in Google Ads. In Google Ads, go to Tools → Conversions → New Conversion Action → Import → Salesforce or other CRM. Name the conversion action (e.g., "Closed Won - Google Ads"). Set the category to "Purchase" or "Lead" as appropriate. Note the conversion action ID — you will need it for uploads.
Step 6: Build the upload workflow in Salesforce. Create a Salesforce Flow or Process Builder rule that triggers when an Opportunity's Stage changes to "Closed Won." The flow should read the GCLID from the associated Contact or Lead record and compile an upload row: Google Click ID, Conversion Name, Conversion Time, Conversion Value, Conversion Currency. Batch these rows and upload to Google Ads via the API or bulk upload CSV.
Step 7: Validate in Google Ads. After the first upload, go to Google Ads → Conversions and check the conversion action's status. It should show "Recording conversions" within 24 hours. Cross-check the conversion count against the expected number of closed deals in the upload window.
Method 3: iPaaS tools — Zapier and similar
Integration Platform as a Service (iPaaS) tools like Zapier, Make (formerly Integromat), and Workato sit between Google Ads and Salesforce and automate data movement without requiring code. They are the fastest way to build a working integration for teams without engineering resources, with trade-offs in flexibility and cost at scale.
What Zapier can and cannot do
Zapier's Google Ads triggers are limited by the Google Ads API's webhook model — Google Ads does not push real-time events, so Zapier polls the Google Ads API on a schedule (every 5–15 minutes on paid plans, every hour on free plans). The practical actions available in Zapier include: creating or updating Salesforce records when a new Google Ads lead form submission arrives, syncing campaign-level metrics to Salesforce custom objects on a daily schedule, and triggering Salesforce workflows from Google Ads conversion events.
What Zapier cannot do: access keyword-level or search query data at the individual click level, backfill historical data, or handle high-volume flows without introducing latency. It also does not support the GCLID offline conversion upload workflow natively without custom API steps.
Setup steps for a Google Ads Lead Form → Salesforce Lead Zap
Step 1: In Zapier, create a new Zap. Set the trigger app to Google Ads and the trigger event to "New Lead Form Entry." Authenticate with the Google account linked to your Google Ads account and select the Lead Form Extension you want to monitor.
Step 2: Set the action app to Salesforce and the action event to "Create Record." Authenticate with a Salesforce user that has API access and Create permission on the Lead object.
Step 3: Map the Google Ads lead form fields to Salesforce Lead fields. At minimum: First Name, Last Name, Email, and any custom qualification fields from the form. If the lead form includes a phone number or company name, map those as well.
Step 4: Add a filter step (optional but recommended) to prevent duplicate creation — for example, filter to only create a Salesforce Lead if the email address is not already present in your database. Zapier's native deduplication is limited; for production use, consider adding a Salesforce "Find Record" step before the "Create Record" step to check for existing contacts.
Step 5: Test the Zap with a real or test lead form submission. Verify the Lead record appears in Salesforce with the correct field values. Turn on the Zap.
Method 4: ETL connectors — Fivetran, Airbyte, and Stitch
Dedicated ETL/ELT connectors like Fivetran and Airbyte pull Google Ads data — including keyword-level performance, search term reports, click data, and conversion data — into a central data warehouse (Snowflake, BigQuery, Redshift, or similar). From there, the data can be joined with Salesforce data (also loaded via the same ETL tool) and used for attribution modeling, pipeline analysis, and revenue attribution dashboards.
This method does not create a direct Salesforce-to-Google-Ads connection in the traditional sense. Instead, it creates a shared analytical layer in the data warehouse where both data sets live together and can be queried in combination. It is the right approach when you need keyword-level attribution, when you want to understand which campaigns produce pipeline or closed revenue at a granular level, or when RevOps or BI teams need to build their own attribution models.
Setting up Fivetran for Google Ads
Step 1: In Fivetran, create a new connector. Search for "Google Ads" in the connector library. Authenticate with the Google account linked to your Google Ads account and select the Google Ads Customer ID (the 10-digit account number) for the account you want to sync.
Step 2: Configure the sync scope. Fivetran's Google Ads connector syncs a predefined set of tables: campaign, ad_group, keyword, ad, click_performance_report, search_term_view, and several others. Enable all tables relevant to your use case. For attribution analysis, you will need at minimum click_performance_report and keyword.
Step 3: Set the sync frequency. For most RevOps use cases, a daily sync is sufficient. If you need intraday data for campaign pacing or budget monitoring, set the frequency to every hour. Note that click-level data (click_performance_report) has a latency of approximately three hours from Google's side, regardless of sync frequency.
Step 4: Add a Salesforce connector in Fivetran following the same process. Authenticate with a Salesforce user that has API access and read permissions on Opportunities, Leads, Contacts, and Campaigns. Fivetran will replicate these objects to your warehouse on the same schedule.
Step 5: In your data warehouse, build a SQL or dbt model that joins the Google Ads click data to Salesforce Leads and Opportunities via the GCLID field. The join key is the GCLID value that was captured on the landing page and stored in the Salesforce Lead record. This model produces a table that shows, for each closed deal, the originating Google Ads keyword, campaign, and ad group — along with the deal value and close date.
Comparison: which method to use
| Method | Best for | Setup time | Data granularity | Cost |
|---|---|---|---|---|
| Native Salesforce connector | Audience sync + basic campaign reporting | <1 hour | Campaign / ad group | Included in Marketing Cloud / Data Cloud license |
| Offline conversion tracking (GCLID) | Optimizing Smart Bidding toward closed revenue | 1–3 days | Click → deal attribution | No tool cost; engineering time to implement |
| Zapier / iPaaS | Lead form → Salesforce record sync, no-code teams | 1–2 hours | Lead form fields | $20–$100+/mo depending on task volume |
| ETL (Fivetran / Airbyte) | Keyword-level attribution, data warehouse analytics | 1–3 days | Keyword / click / search term | $200–$1,000+/mo depending on volume |
The right choice depends on what you are trying to accomplish. Most RevOps teams should implement at least two methods in combination: offline conversion tracking for bid optimization (this is almost always worth doing regardless of stack) and either the native connector or an ETL tool for reporting, depending on whether you need keyword-level granularity.
Common pitfalls and how to avoid them
GCLID not captured on all form variants
This is the most common and most damaging failure mode. If your website has multiple landing pages, A/B test variants, or a CMS that renders forms conditionally, it is easy to have the GCLID capture script on some pages but not others. The result is partial attribution data — some leads have GCLIDs, others do not — which produces a biased picture of which campaigns are driving revenue.
To diagnose this: pull a Salesforce report of all Leads created in the last 30 days from paid search sources. Calculate what percentage have a non-null GCLID value. If it is less than 80%, there are pages in your paid search path that are not capturing the parameter. Audit your landing pages systematically and add the capture script to every variant.
Offline conversions uploaded outside the 90-day window
Google Ads accepts offline conversions for up to 90 days after the original click. Conversions uploaded for clicks older than 90 days are silently rejected — Google will not error, but the conversions will not appear in your campaign data. For B2B teams with long sales cycles, this window is a real constraint. A deal that takes four months from first click to close will always fall outside the upload window.
There is no workaround for the 90-day limit. The practical mitigations are: upload conversions as soon as deals close rather than batching them weekly or monthly, and supplement Google Ads conversion data with warehouse-based attribution for long-cycle deals where Google's window is insufficient.
Duplicate conversion actions inflating reported conversions
A common error when setting up offline conversions is creating a new conversion action while leaving a pre-existing website conversion tag (for form fills) active and counting the same event. The result is that a single deal appears as two conversions in Google Ads: one from the website tag and one from the offline upload. This inflates conversion data and distorts the efficiency metrics Google uses for Smart Bidding.
Audit your conversion actions in Google Ads → Tools → Conversions. If you see both a website-based "Lead Form Submit" and an offline "Closed Won" action, and both are set to count toward conversion columns, you likely have a duplication issue. For most B2B programs, the cleanest configuration is to count form fills as a secondary conversion (not included in the main "Conversions" column) and closed deals as the primary conversion Google optimizes toward.
Salesforce field-level security blocking the integration user
The GCLID field on the Lead object may have field-level security restrictions that prevent the web-to-lead user or integration user from writing to it. This causes GCLIDs to appear correctly in the form submission but never make it into Salesforce. To check: attempt to create a Lead record via the API with a GCLID value using the integration user's credentials and verify the field is populated on the resulting record. If it is not, the issue is field-level security — grant write access to the GCLID field for the relevant profiles in Salesforce Setup.
Attribution gaps from multi-touch journeys
The GCLID-based offline conversion model attributes the closed deal entirely to the most recent Google Ads click that produced the form fill. It does not account for prior Google Ads touchpoints that influenced the buyer's journey before the form fill click. If a prospect clicked a Google Ad in October, visited the site organically in November, and then clicked another Google Ad and filled out a form in December, the December click gets 100% of the attribution credit — the October touchpoint is invisible in Google Ads reporting.
This is a structural limitation of last-click attribution, not a configuration problem. The remedy is warehouse-based multi-touch attribution using the ETL method described above: load both Google Ads click data and Salesforce Opportunity data into the warehouse, match on GCLID, and build a model that distributes attribution across all touchpoints in the buyer's journey rather than only the last one.