Client reporting · Agencies and marketing leaders

How to Automate Marketing Reporting and Check the Results

Automated marketing reporting retrieves and formats recurring results using a defined reporting scope. Start with one manual report you trust, automate its data collection through an authorized API, CLI or AI connection, and check the returned dates, currency, metric definitions and completeness before sharing the conclusions. A faster report still needs an explanation of what changed and what to do next.

Paper reports pass through an emerald sorting machine to an editor inspecting the final report with a magnifying lens.

1. Define One Report Before You Schedule It

Choose one decision and one recurring reporting period. A weekly source review, for example, asks which recorded sources received revenue credit and which unexplained changes need investigation. It does not promise to prove which campaign caused the sales.

Write down the website, reporting timezone, closed date range, comparison, attribution model, filters, currency and revenue definition. Decide who reviews the draft and what happens if retrieval fails. A marketing report template gives that agreement a home before you connect another tool.

Keep in the reportWhy it matters
Website and source connectionsA workspace can contain several websites with different currencies or payment coverage.
Closed dates and timezoneToday is still changing. A Monday run can review the previous complete week in the website calendar.
Model and filtersFirst-Touch and Last-Touch allocate credit differently. A filtered audience is not the whole website.
Revenue and cost definitionsRecorded payments after supported refunds differ from settlement, accounting profit and platform-claimed revenue.
Retrieval time, gaps and reviewerReaders need to know when the data was collected and who resolved exceptions.

Keep the first version small: a headline result, a source table, one explanation and one next action. Add a measure only when someone uses it to make a decision. Selecting relevant marketing KPIs is a separate task from automating their retrieval.

2. Choose API, CLI or MCP for the Job

Use the REST API for a repeatable server-side job, the CLI for a terminal or export workflow, and MCP for a compatible AI assistant that retrieves authorized reports while you ask questions. These are different ways to access reporting, not three different kinds of revenue.

RouteUseful starting pointWhat you still provide
REST APIA developer retrieves overview and source results for an existing reporting job.Private credentials, scheduling, validation, storage and delivery controls.
CLIAn analyst reads JSON or exports a supported report as CSV.A signed-in terminal session and a scheduler if a recurring run is needed.
MCPAn authorized assistant reads the overview and asks follow-up source questions.A compatible client, explicit scope and review of its interpretation.
Manual CSV or spreadsheetThe reporting definition is still changing or automation is unnecessary.A consistent export and a review routine.

Attriboo’s CLI is available now. Its report commands use the same public report API, and browser sign-in requests report access by default. Website setup is a separate approval. Installing a terminal command does not create a recurring reporting job or schedule client delivery.

For an AI workflow, start with list_sites, then get_overview and get_breakdown for the selected website and dates. Ask the assistant to preserve the result fields before writing a narrative. Check the MCP tool reference for exact arguments; report data is returned directly within MCP text content rather than inside the REST status/data wrapper.

3. Give the Workflow Appropriate Access

Prefer a report-only OAuth connection when the workflow only needs reports. In Attriboo, analytics:read reads reports; optional sites:write adds separately approved owner/admin website setup. Do not request setup access just to prepare a weekly summary.

A workspace API key is broader: it can read analytics and use supported data-write routes. If an existing server workflow uses that key, keep it in private server configuration, restrict who can use the job, and keep it out of browser bundles, prompts, screenshots and exported reports. The public website ID in a tracking tag is not API authentication.

Owners and admins find the workspace key in Settings → API & MCP. Separately approved AI apps appear under Connected AI apps, where they can be disconnected. Regenerating the workspace key stops the old key; it does not revoke separately approved OAuth connections.

Read-only access still exposes whatever report data the connection can read. Use aggregate overview and source reports when individual sales are unnecessary. The MCP maintainers explain that tool annotations are hints, not a security boundary. Check the actual server, authorization and client behavior rather than trusting a read-only label alone.

4. Retrieve a Small Report With Explicit Scope

In the developer reference, open Overview and read its query parameters. List websites first when the intended website is unclear. Use the returned ID and its saved currency and timezone, then request the overview and source breakdown with the same selections.

Where to find itDevelopers → REST API → Reports → Overview

The endpoint, access label, sidebar and parameter table locate the report. The enlarged date and model fields come from this same untouched public reference capture.

Select the overview to open the full screenshot.

Enlarged detail of the outlined area

Open Developers → REST API → Overview. Preserve the website, inclusive calendar dates and attribution model when scheduling a report.
  1. Choose explicit calendar dates

    Supply both from and to. Input dates are inclusive days in the website timezone; the response returns UTC timestamps with an exclusive end.

  2. Keep the credit rule consistent

    Set model deliberately. A changed credit rule can change source allocations without changing the payments.

Start tracking your revenue free

For a server job, a request path can be /api/v1/stats/overview?site=site_example&from=2026-11-01&to=2026-11-07&compare=none&model=first_touch. site_example is a placeholder: replace it with the returned website ID. Your server supplies the private Authorization header. The API reference provides cURL, JavaScript and Python examples without asking you to put a secret into this article’s browser worksheet.

In a signed-in terminal, the corresponding command is attriboo reports overview --site shop.example.com --from 2026-11-01 --to 2026-11-07 --compare none --model first_touch --json. Replace the domain with your website. Use reports sources for the source breakdown and inspect its cursor fields before treating an export as complete.

Store requested selections, retrieval time and returned period metadata beside the result. Attriboo accepts inclusive website-local from/to dates, while period.from and period.to are UTC timestamps with an exclusive end. Read period.timezone rather than assuming UTC or the computer’s timezone.

A compatible assistant can use this instruction: “Read only the selected website’s overview and sources for November 1–7 with compare none and First-Touch. Return the website, currency, timezone, date boundaries, metric definitions and any coverage or continuation fields. Separate observations from possible explanations. Stop on an error or incomplete result, and do not send the report.” Replace the website and dates before using it.

5. Check Numbers Before Writing the Summary

Compare the automated overview with Dashboard using the same website, dates, model and filters. Check the raw fields before judging the prose. Google’s reporting guidance likewise identifies mismatched date ranges, dimensions, metrics, filters and reporting identity as reasons API and interface results can differ.

For an example USD response, revenue=120000 means $1,200.00 and ad_spend=30000 means $300.00. Their ratio is 4. That is recorded revenue per unit of ad spend, not a claim of $900 accounting profit. Attriboo’s net_profit field subtracts ad spend from recorded revenue; product costs, fees and other expenses still need their own treatment.

A reporting workflow retrieves scoped records, checks dates and coverage, verifies cents and ratios, and prepares a human-reviewed draft. Example: 120000 cents equals 1200 dollars and 1200 divided by 300 is 4.
Example: preserve scope and units through collection, validation and review. An error follows the exception route; it is not replaced by a zero.

Check the report before the narrative

Review an Overview Response

Try the example or paste only an aggregate REST overview response. Remove private identifiers and credentials first. Entries stay in this browser; this tool makes no account request.

Download the Offline Report Review Worksheet ↓

Keep missing values distinct from measured zero. ROAS is null when spend is unavailable; a comparison change can be null when no comparison data exists. A failed request is not a report of zero visitors or zero sales. Investigate an unexplained mismatch before the narrative tells someone to cut a channel.

The worksheet checks an aggregate REST overview shape and selected scope fields. It does not validate every report type or prove that an input is authentic. Keep hidden filters and provider coverage in the manual review, and do not paste customer-level sales or credentials into it.

6. Make Incomplete and Failed Runs Visible

Set a clear exception outcome: hold the current draft, identify the failed retrieval and notify the person responsible for the workflow. If you show the last successful report, display its original dates and retrieval time. Reusing old figures without that label makes a failed run look like fresh evidence.

Attriboo report history covers available records in the latest 365 days. That window does not reconstruct visits from before installation or guarantee that every imported payment matches a visitor. Provider-specific import limits, missing records and refunds remain relevant even when retrieval itself succeeds.

For row reports that return next_cursor, continue with that exact value and preserve the original website, dates, model and filters. Inspect optional coverage fields when supplied. Headline totals and a limited row page have different scopes; do not add the first 50 source rows and silently label the sum a complete website total.

The documented REST report limit is 120 requests per minute per key per server instance. Handle 429 responses using the returned rate-limit information and bounded retries. Treat authentication errors as an access problem and capacity errors as failed retrievals. Do not retry forever or turn an error into a blank success.

7. Review the Explanation Before Client Delivery

Ask the reviewer to distinguish an observation, a possible explanation and an action. “Recorded paid-source revenue declined” can be an observation. “The new creative caused the decline” needs additional evidence. A missing source tag, delayed payment or changed reporting selection can produce a different explanation.

  1. Confirm the data and reporting scope, including remaining gaps.
  2. Explain the largest relevant change without inventing a cause.
  3. Assign one investigation or test, an owner and a review date.
  4. Approve the audience and delivery separately from data access.

For budget decisions, attribution credit and incremental impact answer different questions. Use a suitable experiment when you need evidence of causal lift. Automated collection can support that work, but an AI summary cannot turn recorded source credit into an experiment.

Start with one website and two manually reviewed runs. Resolve any unexplained differences, then decide whether a scheduler saves enough work to maintain. If your report is still changing every week, a consistent spreadsheet and a named reviewer may be the more useful next step.

Common questions

Can I automate marketing reports without an AI assistant?

Yes. A server job can retrieve an API response, validate it and populate a template. The Attriboo CLI can also produce JSON or CSV for supported reports. AI is optional; scheduling, metric definitions and exception handling still need to be configured.

Does connecting Attriboo through MCP schedule or send a client report?

No. MCP provides authorized access to supported tools through a compatible client. A recurring job and delivery workflow require their own configuration and approval. Attriboo report tools retrieve results; they do not authorize sending a report to someone else.

Why do my automated report and dashboard disagree?

First compare website, dates, timezone, model and filters. Then inspect currency units, refund treatment, retrieval times and row limits. When comparing Google Analytics API and interface results, also check reporting identity and the requested dimensions and metrics. Do not assume the summary is correct because the request succeeded.

Should I replace null metrics or failed requests with zero?

No. A measured zero, an unavailable ratio and a failed retrieval mean different things. Preserve null as unavailable where the contract uses it, retain the error for investigation, and hold any conclusion that depends on missing data.

Is the workspace API key restricted to reporting?

No. It can read analytics and use supported data-write routes, so it belongs in private server configuration. Prefer report-only OAuth when the workflow needs only reports. Regenerating that key does not disconnect separately approved OAuth apps.

Jay Kang, founder of Attriboo
Written by Jay Kang

Ten years in SEO, building products and helping clients connect marketing work to business results. Founder of Attriboo.

Get to know Jay · Follow on LinkedIn