---
title: Read your first campaign snapshot
description: Run a synthetic Google Ads read, then replace the demo client with caller-resolved credentials.
---

Use this tutorial to learn the smallest supported Google Ads path. It runs the real Worker-safe client and a synthetic fetch boundary, so it needs no credentials and sends no network request.

```ts
const snapshot = await runHelloWorldCampaignSnapshot();
console.log(snapshot.campaignName, snapshot.spend);
```

The result includes the normalized customer ID, campaign name, clicks, spend, and safe provider request ID. For live use, keep `fetchCampaignSnapshot()` and replace only the synthetic client with `createGoogleAdsClient()`. Pass an already resolved access-token provider and developer token. The connector does not load environment files or resolve logical secret handles.

Detailed source tutorial: [hello-world campaign snapshot](https://github.com/patronage/agentic-marketing-connectors/blob/main/packages/google-ads/examples/hello-world-campaign-snapshot.ts).

Next, [review search terms with Flue](/tutorials/flue-search-term-review) to add a validate-only mutation boundary.
