Integration: Google Ads

How ClickClickBlock integrates with Google Ads

When a customer connects their Google Ads account, ClickClickBlock automatically syncs blocked fraudulent IP addresses to their campaign exclusion lists — at the narrowest possible permission scope. We never modify campaigns, bids, or creative. We only manage the IP exclusion lists that prevent fraudulent traffic from seeing the customer's ads.

OAuth 2.0 consent · One click API methods used · 4 Refresh tokens · AES-256-GCM encrypted Disconnect · Any time, instant revocation

What ClickClickBlock does with your Google Ads account

Our integration with the Google Ads API has a single, narrowly-scoped purpose: add fraudulent IPs to your campaign or account-level exclusion list so those IPs stop seeing your ads. Below is an exhaustive list of what we do and, critically, what we do not.

We add fraudulent IPs to negative campaign criteria. Using CampaignCriterionService.Mutate, we append IPs flagged as fraud by our detection rules to your campaigns' IP exclusion lists. Your ad still runs — Google just stops showing it to those specific IP addresses.
We add fraudulent IPs at customer (account) level for Performance Max campaigns. Using CustomerNegativeCriterionService.Mutate, we apply IP exclusions to the customer level so Performance Max campaigns are protected too.
We read your campaign names and IDs. Via GoogleAdsService.SearchStream, to know which campaigns to attach IP exclusions to. No other data is pulled.
We remove IPs you manually unblock. If you unblock a visitor in your dashboard, we remove their IP from your Google Ads exclusion lists on the next sync cycle.
We respect the 500-IPs-per-campaign cap. When an exclusion list would exceed Google's limit, we rotate out the oldest entries.
×
We do NOT create campaigns. Ever. Your campaigns are yours.
×
We do NOT pause or edit campaigns, ad groups, ads, or keywords. Nothing else in your Google Ads account is touched.
×
We do NOT modify bids, budgets, or targeting. You control your spend; we protect it from fraud.
×
We do NOT pull performance metrics, conversion data, or audience lists. We don't need them for click-fraud protection, so we don't retrieve them.
×
We do NOT share, sell, or aggregate your Google Ads data. Your data stays in your account and in our encrypted storage, never leaving either.
×
We do NOT have an agency relationship with your account. You retain full ownership and can disconnect us any time.

The OAuth 2.0 consent flow

ClickClickBlock never stores, requests, or requires your Google Ads password. All access is obtained through Google's standard three-legged OAuth 2.0 flow using the narrow https://www.googleapis.com/auth/adwords scope. You initiate the flow from inside the ClickClickBlock dashboard — nothing happens until you click Connect.

You click "Connect Google Ads" in the dashboard

From the Account tab. No credentials are entered in our interface.

Your browser is redirected to accounts.google.com

Using our Google Cloud OAuth client_id, the adwords scope, and access_type=offline. The request is signed with a short-lived JWT carrying your tenant ID so the callback can prove authenticity.

You sign in with your own Google identity and review the consent screen

Google displays the consent screen showing ClickClickBlock wants to "manage your AdWords campaigns" — which is Google's own wording for the adwords scope. You can decline at any time.

On approval, Google redirects back to /oauth/google/callback

With a short-lived authorization code. Our server validates the signed JWT state parameter to prevent CSRF.

We exchange the code for access + refresh tokens

Via oauth2.googleapis.com/token. The access token is kept only in memory for the duration of the sync cycle and never persisted.

The refresh token is encrypted and stored

Encrypted with AES-256-GCM using a per-instance master key held in our environment configuration (never in source code). Written to your tenant's row in our database.

We call ListAccessibleCustomers once

To confirm which customer_id the consenting user has access to, so we know which account to target for IP exclusion writes.

Your dashboard now shows "Google Ads: Connected"

Fraudulent IPs will sync to your Google Ads account every 2 minutes from this point forward.

Exact API methods we call

These are the only Google Ads API services ClickClickBlock ever calls. Every call is scoped to the authenticating customer's own customer_id.

Service / methodTypePurpose
GoogleAdsService.SearchStreamReadList your enabled campaigns and their IDs, so we know where to attach negative IP criteria.
CustomerService.ListAccessibleCustomersReadOne-time call after OAuth to confirm which customer_id the user can act on.
CampaignCriterionService.MutateWriteAdd or remove IP_BLOCK negative criteria on specific campaigns (Search, Display, Shopping, Video).
CustomerNegativeCriterionService.MutateWriteAdd or remove IP_BLOCK negative criteria at the customer (account) level to cover Performance Max.

Not used

We never call: KeywordPlanService, RecommendationService, ConversionActionService, CustomerClientService (beyond list-accessible), BatchJobService, ReachPlanService, AudienceService, or any reporting beyond campaign name/status lookup.

Disconnecting your Google Ads account

Three ways to disconnect, depending on which side you prefer to drive from:

From within ClickClickBlock

From your Google Account security page

On subscription cancellation

If you cancel your ClickClickBlock subscription, your stored Google Ads refresh token is revoked and deleted within 24 hours.

Data handling & security

Summary We encrypt refresh tokens at rest with AES-256-GCM. All API traffic is HTTPS-only with TLS 1.2+. We retain no Google Ads data beyond what's needed to perform IP exclusion sync. We never share Google Ads data with any third party.

What we store

What we do NOT store

Infrastructure

Compliance commitments

Related resources Privacy Policy · Terms of Service · How ClickClickBlock works (overview) · Contact the team

Ready to protect your Google Ads campaigns?

14-day free trial, no credit card. Install the snippet, connect Google Ads, done.

Start free trial →