FS-DOC-03Operations
Process Runbook / SOP
Paid Ad Campaign Management
[YourCompany.com] · Marketing Department · Prepared by FullSpec · [Today's Date]
This runbook is the day-to-day operating guide for the Marketing Manager responsible for paid ad campaign oversight. It describes exactly what the automation handles, what you need to do, how to respond when something goes wrong, and how to keep the system healthy over time. FullSpec built and configured everything described here. Your role is limited to acting on Slack alerts, adjusting thresholds when campaign strategy changes, and escalating to FullSpec if a technical fault occurs.
01Process overview
This process automates the daily collection of spend and performance data from Google Ads and Meta Ads Manager, compares it against configured budget thresholds, logs the results to a Google Sheets master log, refreshes the Looker Studio reporting dashboard, and writes conversion attribution data to HubSpot. When a campaign metric crosses a threshold, a Slack alert is sent to the Marketing Manager with a description of the anomaly and a recommended action. The manager reviews the alert and decides whether to adjust a budget or pause a campaign. All other steps run without human involvement. Previously this process consumed approximately six hours of manual effort each week. Under the automated flow, the manager's active time is reduced to roughly five minutes per alert, on days when an alert is triggered.
Process name
Paid Ad Campaign Management
Trigger
Daily schedule fires each morning (9 am) OR a campaign metric crosses a configured threshold such as daily spend percentage or cost-per-click ceiling
Final output
Google Sheets master log updated, Looker Studio dashboard refreshed, HubSpot attribution records written, and a Slack alert sent to the Marketing Manager for any campaign requiring a decision
Agents running
Ad Data Sync Agent; Campaign Analysis and Alert Agent
Tools involved
Google Ads, Meta Ads Manager, Google Sheets, Slack, HubSpot, Google Looker Studio
Weekly volume
Approximately 20 active campaigns/month across both platforms; daily runs 7 days/week
Human checkpoint
Marketing Manager reviews Slack alert and decides whether to adjust budget or pause a campaign in the relevant ad platform
Process owner
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: There is one human step in this entire process. When you receive a Slack alert naming a flagged campaign, open the relevant ad platform (Google Ads or Meta Ads Manager), review the metric described in the alert, and either adjust the daily budget or pause the campaign. This typically takes around five minutes. Everything else runs automatically.
Step
What happens
Who acts
Type
1
A daily schedule fires at 9 am each morning. If a campaign metric has breached a configured threshold at any point during the day, a second trigger fires immediately at that moment. Both paths feed into the same workflow.
Automation platform
Automated
2
The Ad Data Sync Agent connects to the Google Ads API and pulls yesterday's spend, clicks, impressions, and conversions for every active campaign. The data is held in a structured object ready for the next step.
Ad Data Sync Agent
Automated
3
In parallel, the same agent queries the Meta Ads Manager API and retrieves the equivalent metrics for all active Facebook and Instagram campaigns, combining them into the same data structure as the Google Ads results.
Ad Data Sync Agent
Automated
4
The Campaign Analysis and Alert Agent reads the combined data, compares each campaign's spend and conversion rate against the budget and KPI thresholds stored in the Google Sheets configuration table, and assigns an anomaly score to each campaign.
Campaign Analysis and Alert Agent
Automated
5
The Ad Data Sync Agent writes the full set of daily metrics, including the anomaly flags from the analysis step, to the correct rows in the Google Sheets master log. No manual copying is required.
Ad Data Sync Agent
Automated
6
If one or more campaigns are flagged as anomalous, the Campaign Analysis and Alert Agent sends a Slack message to the marketing channel. The message names the campaign, states the metric that triggered the flag (for example, daily spend at 94% of cap by 11 am), and suggests a recommended action.
Campaign Analysis and Alert Agent
Automated
7
The Marketing Manager reads the Slack alert, opens the relevant ad platform, and decides whether to adjust the daily budget, reallocate spend, or pause the campaign. This is the only step that requires a human judgement call. The manager acts directly in Google Ads or Meta Ads Manager.
Marketing Manager
Human
8
The Looker Studio dashboard connected to the Google Sheets master log refreshes automatically. Stakeholders can view current campaign performance data at any time without a manually assembled report.
Campaign Analysis and Alert Agent
Automated
9
Conversion events from both ad platforms are written to the matching HubSpot contact records as deal source properties. CRM attribution is kept current daily without any manual cross-referencing.
Campaign Analysis and Alert Agent
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations
03Handling exceptions
Situation
What the system does
What you do
A campaign is missing spend or conversion data in the API response (for example, a newly created campaign with zero activity or a data gap from the platform)
The Ad Data Sync Agent logs a null or zero value for the affected metric and adds an "incomplete data" flag to that row in the Google Sheets master log. The Campaign Analysis and Alert Agent skips anomaly scoring for that campaign and notes it in the run log.
Check the Google Sheets master log for the incomplete data flag. If the campaign genuinely had no activity, no action is needed. If data should exist, log into the relevant platform to confirm the campaign is active, then contact FullSpec at support@gofullspec.com if the gap persists the following day.
A duplicate row appears in the Google Sheets master log (for example, the daily trigger fires twice due to a platform hiccup)
The Ad Data Sync Agent checks for an existing row matching today's date and campaign ID before writing. If a duplicate is detected, the agent overwrites the existing row rather than adding a new one, and logs the overwrite event.
If you notice an unexpected duplicate that the agent did not catch, delete the older row manually and note the date. Report the occurrence to FullSpec so the deduplication logic can be reviewed.
A HubSpot contact record cannot be matched for a conversion event (for example, the UTM parameters are missing or inconsistent in the ad URL)
The Campaign Analysis and Alert Agent logs the unmatched conversion to a dedicated "unmatched attributions" tab in the Google Sheets master log and skips the HubSpot write for that record. It does not stop the rest of the workflow.
Review the unmatched attributions tab weekly. For each unmatched row, check whether the ad URL is missing a UTM parameter or whether the contact exists in HubSpot under a different email. Update UTM parameters on the relevant ad, and manually attribute the contact in HubSpot if needed. Contact FullSpec if the volume of unmatched records increases significantly.
A Slack alert is sent but the Marketing Manager does not act on it within a defined window (for example, the manager is out of office and no one covers the alert)
The system does not automatically act on the flagged campaign. Budget changes and pauses remain a human decision. The campaign continues to run as configured in the ad platform.
Before going out of office, delegate alert coverage to another team member and ensure they have access to Google Ads and Meta Ads Manager. If an alert is missed and a campaign overspends, log into the relevant platform and pause or adjust the campaign manually. Review the Looker Studio dashboard on your return to assess any spend impact.
The Google Ads or Meta Ads API is temporarily unavailable (for example, a platform outage or rate limit breach)
The automation platform retries the API call up to three times with a five-minute gap between attempts. If all retries fail, the workflow stops for that run, logs the failure, and sends a Slack notification to the marketing channel stating which platform was unreachable and at what time.
No action is required during a temporary outage. The automation will retry successfully once the platform is available again on the next scheduled run. If the outage lasts more than 24 hours, check the relevant platform's status page and consider pulling data manually for that day. Notify FullSpec at support@gofullspec.com if the failure continues beyond one day.
The Google Sheets master log structure is changed manually (for example, columns are renamed, rows are inserted, or the configuration table is edited incorrectly)
The Ad Data Sync Agent will fail to write to the expected column positions and log a schema mismatch error. A Slack notification is sent to the marketing channel describing the write failure.
Do not rename or reorder columns in the master log without first consulting FullSpec. If a schema mismatch error appears, restore the column headers to their original names (refer to the column reference in the implementation notes shared at go-live) and contact FullSpec at support@gofullspec.com to confirm the fix before the next scheduled run.
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations
04Who to contact and when
Fill in the rows marked with placeholders once your team is confirmed. The FullSpec rows are fixed and do not need to be edited. Use this table as your first reference whenever you need to escalate an issue, request a change to a threshold or alert condition, or report a technical fault.
Role
Name
How to reach them
Marketing Manager (process owner)
[Your name]
[Rep email]
Marketing Director (escalation)
[Your name]
[Rep email]
FullSpec builder
FullSpec team
support@gofullspec.com
FullSpec support
FullSpec support
support@gofullspec.com
Contact FullSpec at support@gofullspec.com for any of the following: an API connection failure lasting more than one run, a schema mismatch error in the master log, a Slack alert that stops arriving entirely, or a request to change the budget threshold logic or add a new ad platform. Changes to campaign-level budget thresholds stored in the Google Sheets configuration table can be made by you directly without involving FullSpec.
05Ongoing maintenance
Whenever campaign budgets or KPI targets change
Update the budget and KPI threshold values in the configuration table within the Google Sheets master log. The agents read from this table on every run, so no code change is needed. Double-check that the column structure has not been accidentally altered after saving.
Marketing Manager
Whenever a Slack alert message format or recipient channel needs to change
Submit a change request to FullSpec at support@gofullspec.com with the new alert wording or channel name. Do not attempt to edit alert templates directly as they are managed within the automation platform configuration.
Marketing Manager (request) / FullSpec (action)
Monthly spot-check (first Monday of each month)
Open the Google Sheets master log and verify that daily rows are being written correctly for all active campaigns. Cross-check three random days against the figures shown in Google Ads and Meta Ads Manager dashboards. Confirm the Looker Studio dashboard is refreshing and HubSpot attribution records are being updated.
Marketing Manager
Weekly error-log review (every Friday)
Check the run log tab in the Google Sheets master log for any failed runs, incomplete data flags, or unmatched HubSpot attribution entries from the past seven days. Resolve or escalate each flagged item before the following Monday.
Marketing Manager
Whenever a team member changes (new hire, role change, or departure)
Update the contact table in this runbook. If the departing person held the Google Ads or Meta Ads Manager account credentials used for API access, notify FullSpec immediately so API tokens can be refreshed before the next scheduled run. Do not revoke access tokens without confirming with FullSpec first.
Marketing Manager / FullSpec
Quarterly volume review (every three months)
Review the number of active campaigns and compare against the volume assumptions used at build time (approximately 20 campaigns/month). If volume has grown significantly or new ad platforms have been added, contact FullSpec to assess whether the existing build handles the load or whether an upgrade is needed.
Marketing Manager / FullSpec
The most common maintenance issue for this process is a mismatch between the budget thresholds stored in the Google Sheets configuration table and the actual budgets set inside Google Ads or Meta Ads Manager. This typically happens when campaign budgets are updated in the ad platforms but the configuration table is not updated to match, causing either false anomaly alerts or missed overruns. Make it a habit to update the configuration table at the same time as you change a campaign budget in the platform.
Process Runbook / SOPPage 4 of 4