What does the agent do with your marketing data?
It turns a report into a decision you can review. It lists what it sees, flags data limits, and proposes one action to check.
The historical example reports 240 impressions and 7 clicks across June–August 2026. The brand query has a 75% CTR, but that comes from just 8 impressions. Broader queries have impressions without clicks. These are observations from a small dataset, not evidence that a particular content change will increase traffic.
The original agent recommendation was to address the query "ai agent of chatbot" with relevant content and internal links. Before creating anything, check whether a suitable page already exists. A translation should not turn an old recommendation into a new execution claim, or encourage a duplicate page. Our article on SEO with an AI agent covers the wider review workflow. Whether AI search engines can also quote such a page is a separate check; read how to make your pages citable for AI search.
For a new report, ask the agent to retain the exact property, dates, dimensions, filters, and data status alongside its recommendations. Query rows may not add up to property totals because of reporting limits and privacy filtering. Compare the export with the Google interface using matching settings before acting on it. If you work in a team, any colleague can request such a report in a shared channel (see Hermes for teams).
How do you extend the setup to Google Analytics 4?
For GA4, enable the Analytics Data API and add the service account to the property as a Viewer. Use the numeric GA4 property ID, not the G- measurement ID.
You add the service account email through Admin > Property access management. The connector must authenticate with analytics.readonly and call the Data API. Google’s Analytics API quickstart documents the client-library and runReport approach.
Once you have verified access, a short request is enough:
Show sessions by channel for the last 30 complete days in our GA4 property. Include the date range and property ID, and list the top landing pages separately.
State the actual start and end dates in the report and retain the property time zone. Check metric and dimension compatibility instead of assuming any two columns can be combined. Channel sessions and landing-page sessions are separate report views; they should not be joined row by row.
An earlier version of this article used invented values to illustrate the GA4 report layout; those values have been removed. The GA4 section is setup guidance, not a measured report: Voltti itself does not use a GA4 connection.
What else do you need for Google Ads?
Google Ads needs more than Search Console or GA4. Your Cloud project needs at least Explorer access to read a live account. The service account also needs a role in the Ads account, and you configure the right customer ID.
Google Ads supports direct service-account access. An Ads administrator adds the service account email under Admin > Access and security, as described in Google’s service account workflow. Select Read-only access for reporting and check access that a manager account passes down. You do not need to impersonate a human user for the documented direct-access flow.
API access is managed per Google Cloud project. In September 2026, Google wrote on its Ads Developer Blog: “We are sunsetting developer tokens.” You now sign up for the Google Ads API in the Google Cloud Console, without a manager account. A new project starts with Test access, which only reaches test accounts. To read a live account, apply for Explorer access or higher on the Google Ads API Overview page. Check the limits and permitted features in Google’s access-level documentation.
Google Ads uses the adwords OAuth scope, not a separate read-only OAuth scope. Restrict access through the Ads account role and the connector’s allowed reporting methods. Configure the target customer ID and, when you access the account through a manager account, the appropriate login-customer-id. The Ads client library may need its own key-file setting; setting GOOGLE_APPLICATION_CREDENTIALS alone is not a complete Ads configuration.
Add Ads after the first reporting connection works, then verify GA4 separately if you need it. Technically, Ads does not depend on either source. Working incrementally makes it easier to find a wrong account ID, missing role, or access-level restriction. Do not turn an authorization error into an instruction to grant administrator access.
Four errors come up often. A GA4 request fails when you use the G- measurement ID instead of the numeric property ID. Any source returns a permission error when the service account was never added in the product itself. An Ads call to a live account fails when your project only has Test access. In version v25 of the API, the error is CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION; older versions return ACTION_NOT_PERMITTED. The fix is to apply for Explorer access. Through a manager account, a missing or wrong login-customer-id also blocks the request.
Once the Ads connection passes a read test, ask:
Report clicks and cost by campaign for the last full month in the Ads account I confirmed. Use reporting calls only, and show the account currency and exact dates.
Combining sources can show which campaigns bring useful visits. But Search Console impressions, Analytics sessions, and Ads clicks measure different things. Match the date range, time zones, account currency, and attribution assumptions. An agent should explain those differences, not present them as interchangeable totals. In this setup, the agent retrieves each source itself, so you do not paste exports into a chat window. To see which tool fits which task, read Hermes vs ChatGPT and Copilot.
For example, a business using Moneybird could compare campaign statistics with invoices available through its API for the same period. This is a possible workflow, not a customer result. Attributing revenue to a campaign needs a reliable link between the campaign, customer, and invoice; matching dates alone does not establish attribution. Our guide to connecting AI to a CRM or CMS covers the integration approach.
Service account or your own Google account?
Do not share your Google password. User OAuth is a legitimate alternative to a service account: it can also use limited scopes and revocable consent. The comparison is about who owns the automated access and how you manage it. It does not claim that all user authentication gives unlimited access.