Back to Campaign Performance Reporting

Process Runbook / SOP

How the automation works day-to-day: what is automatic, what needs a human, how exceptions are handled, and who to contact.

4 pagesPDF · Operations
FS-DOC-03Operations

Process Runbook / SOP

Campaign Performance Reporting

[YourCompany.com] · Marketing Department · Prepared by FullSpec · [Today's Date]

This runbook is the operating guide for the Campaign Performance Reporting automation. It tells you exactly what the system does on its own, what your one remaining task is each reporting cycle, how to handle anything unexpected, and who to call when you need help. FullSpec built, tested, and monitors this automation end to end. Your team's only regular responsibility is reviewing the draft commentary before the report is distributed.

01Process overview

Each reporting cycle, the automation platform fires on a fixed schedule: weekly for the standard performance report and monthly for the executive summary. Three agents collect raw campaign metrics from Meta Ads Manager, Google Analytics, and HubSpot without any manual exports, combine and clean the data in Google Sheets, calculate derived KPIs, and draft a plain-English commentary paragraph. Once the Google Sheet and the Looker Studio dashboard are updated, the system pauses for a brief human review of the draft commentary. After approval, the Distribution Agent posts the final summary to the designated Slack channel with a link to the live dashboard. The entire process runs in under twenty minutes from trigger to distribution, compared to two and a half hours manually.

Process name
Campaign Performance Reporting
Trigger
Scheduled: weekly (performance report) and monthly (executive summary). No manual start required.
Final output
A Slack message with top-line campaign metrics, underperformance flags, and a direct link to the refreshed Looker Studio dashboard.
Agents running
Data Collection Agent, Normalisation and Insight Agent, Distribution Agent
Tools involved
Meta Ads Manager, Google Analytics, HubSpot, Google Sheets, Google Looker Studio, Slack
Weekly volume
Approximately 4 report runs per month across weekly and monthly cadences
Human checkpoint
Marketing Manager reviews and approves the AI-drafted commentary paragraph before Slack distribution (approximately 10 to 20 minutes per cycle)
Process owner
[Your name], Marketing Manager
Process Runbook / SOPPage 1 of 4
FS-DOC-03Operations

02Step-by-step: what happens and who acts

What you actually need to do: Your only regular task in this process is Step 7, reviewing the draft commentary the system has written and either approving it or making edits before the report is sent. Everything else runs automatically on schedule. You do not need to log into Meta, Google Analytics, HubSpot, or Looker Studio as part of the reporting cycle.
Step
What happens
Who acts
Type
1
The schedule fires automatically at the configured day and time for either the weekly performance report or the monthly executive summary. No one needs to start this manually.
Automation platform
Automated
2
The Data Collection Agent calls the Meta Marketing API and retrieves impressions, clicks, spend, and conversions for every active campaign within the reporting window. Results are written to a staging area in Google Sheets.
Data Collection Agent
Automated
3
The same agent calls the Google Analytics Data API and fetches sessions, goal completions, and traffic source breakdowns for the identical date range, using UTM parameters to align the data with the Meta export.
Data Collection Agent
Automated
4
The agent pulls new contacts and associated deals from HubSpot filtered by campaign source and reporting period, then maps them to the corresponding ad spend records already collected.
Data Collection Agent
Automated
5
The Normalisation and Insight Agent combines all three datasets, resolves column name differences, corrects date formats, removes duplicate rows, and calculates derived KPIs including cost per lead, click-through rate, conversion rate, and return on ad spend. The clean output is written to the master Google Sheet.
Normalisation and Insight Agent
Automated
6
The agent identifies campaigns that missed their target thresholds, flags them in the sheet, and drafts a plain-English commentary paragraph naming the week's top performer, biggest underperformer, and one recommended action.
Normalisation and Insight Agent
Automated
7
You receive a notification that the draft commentary is ready for review. You read the paragraph, check it makes sense in context, edit it if needed, and approve it. This step takes approximately 10 to 20 minutes and is your only required action each cycle.
Marketing Manager
Human
8
Once commentary is approved, the Distribution Agent triggers a data source refresh in Looker Studio so the live dashboard reflects the latest figures without any manual chart updates.
Distribution Agent
Automated
9
The Distribution Agent formats the final Slack message with top-line numbers, campaign flags, and the approved commentary, then posts it to the designated Slack channel with a clickable link to the Looker Studio dashboard.
Distribution Agent
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations

03Handling exceptions

The table below covers the most realistic exceptions this process may encounter. The system handles most of these automatically. Your action is only needed in the situations marked in the 'What you do' column.

Situation
What the system does
What you do
One or more platforms return no data for the period (for example, no active Meta campaigns were running)
The Data Collection Agent writes a zero-row result for that source and flags it in the staging sheet. The Normalisation Agent notes the missing source in the draft commentary and marks those KPI fields as 'No data this period' rather than zero.
Review the draft commentary as normal. If the absence of data is expected (for example, a campaign was paused intentionally), approve and send. If it is unexpected, check the platform directly and contact FullSpec support if the API connection appears to be the cause.
Duplicate campaign rows appear in the master Google Sheet (for example, overlapping date windows from a previous run)
The Normalisation and Insight Agent applies deduplication logic based on campaign ID and date range before writing to the master sheet. Duplicate rows are removed automatically and a note is logged.
No action required in most cases. If you notice a metric looks unusually high, check the sheet's deduplication log tab and contact FullSpec support if the same campaign row appears more than once after deduplication.
A campaign ID in HubSpot does not match any ID in the Meta or Google Analytics data (UTM mismatch or missing attribution)
The agent flags the unmatched HubSpot record in a separate 'Unmatched contacts' tab in the Google Sheet and excludes it from the main derived metric calculations to avoid inflating or deflating figures.
Review the unmatched contacts tab after each run. A small number of unmatched records is normal due to last-touch attribution differences. If the volume of unmatched records grows significantly, notify FullSpec support so the mapping logic can be reviewed.
You do not review or approve the draft commentary within the configured review window (default: 2 hours after the draft is ready)
After the review window passes with no response, the system sends you a reminder notification via Slack. If a second window (default: 1 additional hour) also passes with no response, the report is held and not distributed until you approve it.
Check your Slack notifications. If you are unavailable, ask a delegated team member to review and approve on your behalf. If the report is time-sensitive, contact FullSpec support to temporarily extend the review window or configure a backup approver.
Meta Ads Manager API is unavailable or returns an error during data collection
The Data Collection Agent retries the API call up to three times with a 5-minute gap between attempts. If all three attempts fail, it logs the error, skips the Meta data source for this run, and flags the partial dataset in the draft commentary so you know Meta figures are missing.
If the Meta API failure is temporary (for example, a known outage), no action is needed. The next scheduled run will collect a full dataset. If the failure repeats across multiple runs, contact FullSpec support at support@gofullspec.com so the authentication credentials and API status can be checked.
The Looker Studio dashboard fails to refresh after the Google Sheet is updated
The Distribution Agent detects the failed refresh, logs the error, and posts the Slack summary anyway with a note that the dashboard may show figures from the previous cycle. It does not hold the report.
Check the Looker Studio data source connection in the dashboard settings. The most common cause is a broken link between the dashboard and the master Google Sheet, which can happen if the sheet was renamed or moved. Contact FullSpec support if the connection cannot be restored manually within 15 minutes.

04Who to contact and when

Fill in the rows below once your team is confirmed. Keep this table updated whenever a team member changes role or leaves, so there is always a clear owner for the commentary review step and a named escalation path.

Role
Name
How to reach them
Process owner (commentary review and approval)
[Your name]
[Your email or Slack handle]
Backup approver (covers the process owner when unavailable)
[Backup name]
[Backup email or Slack handle]
Operations Lead (internal escalation for process decisions)
[Rep name]
[Rep email]
FullSpec builder (technical issues, configuration changes, scope questions)
FullSpec team
support@gofullspec.com
FullSpec support (errors, unexpected behaviour, API failures, urgent issues)
FullSpec support
support@gofullspec.com
For any situation where the automation has not posted a report at its expected time, or where data looks clearly wrong (for example, all metrics show zero or a platform is missing entirely), contact FullSpec support at support@gofullspec.com before making any manual changes to the Google Sheet or Looker Studio data sources. Manual edits to the master sheet structure can break the normalisation logic.
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations

05Ongoing maintenance

This automation is designed to run without regular intervention, but a small number of maintenance tasks keep it accurate and reliable over time. The table below sets out when each task should happen, what it involves, and who is responsible.

When
What to do
Who
Whenever a new campaign is launched or an existing campaign is paused or renamed
Notify FullSpec support so the Data Collection Agent's campaign filters and the normalisation mapping can be updated. Campaign name changes in Meta or HubSpot can cause new rows to appear as unmatched records if the mapping is not updated.
Process owner notifies FullSpec support
Whenever the commentary template or report structure needs to change (for example, new KPIs, different tone, additional sections)
Send the requested changes to FullSpec support with a brief description of what should change and why. Changes to the Normalisation and Insight Agent's prompt or output format are a configuration update, not a rebuild.
Process owner requests, FullSpec team implements
Monthly spot-check (first working day of each month)
Open the master Google Sheet and confirm that all three data sources have populated figures for the most recent weekly report. Check the unmatched contacts tab and confirm the volume is within the expected range (a small number of unmatched records per cycle is normal).
Process owner
Monthly error-log review
FullSpec monitors the automation's error logs and will flag any recurring failures by email. Review any flagged issues and confirm with FullSpec support whether a configuration change is needed or whether the errors are self-resolving (for example, intermittent API timeouts that resolved on retry).
FullSpec team flags, process owner acknowledges
Whenever a team member who has access to the Google Sheet, Looker Studio dashboard, or Slack channel joins or leaves
Update access permissions in Google Workspace and Slack to reflect the change. Notify FullSpec support if the departing person held any API credentials or had admin access to the automation configuration.
Operations Lead or process owner
Quarterly volume review (every three months)
Review whether the report cadence and distribution list still match the business's needs. If the number of active campaigns, platforms, or stakeholders has grown significantly, contact FullSpec support to assess whether the current build can handle the increased volume or whether a configuration update is warranted.
Process owner, with FullSpec support input
The single most common maintenance issue for this process is a broken HubSpot UTM mapping after a campaign is renamed or relaunched. When a campaign name in HubSpot no longer matches the identifier used in Meta or Google Analytics, the normalisation agent cannot reconcile the records and the unmatched contacts tab grows each cycle. If you notice the unmatched record count increasing run-on-run, contact FullSpec support before the mismatch compounds across multiple reporting periods.
Process Runbook / SOPPage 4 of 4

More documents for this process

Every document generated for Campaign Performance Reporting.

Launch Plan
Operations · Owner
View
ROI and Business Case
Finance · Owner
View
Developer Handover Pack
Technical · Developer
View
Integration and API Spec
Technical · Developer
View
Test and QA Plan
Quality · Developer
View