ott.
  • Pricing
  • Blog
  • Documentation
  • FAQ
  • Contact
Sign InStart Free Trial
ott.

The PPC analytics platform for marketing agencies. Manage Meta campaigns, track Telegram conversions, and optimize performance across all your clients.

© Copyright 2026 Ott. All Rights Reserved.

About
  • Blog
  • Contact
Product
  • Documentation
  • Pricing
  • PPC Reporting Tool
Use Cases
  • CAMPAIGN TRIAGE
  • CONVERSION & CUSTOM KPI TRACKING
  • CRYPTO & WEB3 AGENCIES
  • FOREX & PROP FIRM AGENCIES
  • HIGH-RISK & REGULATED AGENCIES
  • iGAMING AFFILIATES & OPERATORS
  • MULTI-BRAND CLIENT MANAGEMENT
  • SIGNAL PROVIDERS & COPY-TRADING
  • TELEGRAM CONVERSION TRACKING
  • TOPUP & BUDGET TRACKING
Comparisons
  • vs. Adzooma
  • vs. AgencyAnalytics
  • vs. Bïrch
  • vs. ClickGram
  • vs. DashThis
  • vs. Databox
  • vs. Looker Studio
  • vs. Madgicx
  • vs. NinjaCat
  • vs. Supermetrics
  • vs. Swydo
  • vs. TGTracker
Legal
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
Product Updates·Agency Operations·Finance PPC

Your Client Asks Why Spend Dropped Tuesday. Ott's Activity Markers Now Have the Receipt.

Meta's activity log has always told you something happened — never what. 'Campaign budget updated' × 22 doesn't answer the question. Ott now surfaces real before/after values on chart markers ('Campaign budget: €100 per day → €300 per day'), named status actions instead of generic strings, and signal-tier filtering that strips Meta pipeline noise from the chart. For finance agencies answering client questions with regulatory consequences, the difference between 'something changed' and 'this changed, by this much, at this time' is the difference between guessing and knowing.

By Lukas·8 min read·Aug 4, 2026

Last week, hovering a day on Ott’s Performance Trends chart told you something happened. Meta told us a campaign status was updated, or a budget was modified. The tooltip would show something like “Campaign status updated — AGI_SafeCamp_21July26” and then, helpfully, “Campaign status updated — AGI_SafeCamp_21July26” again. And then “+22 more.”

Twenty-two events. All the same generic string. None of them telling you what actually moved.

This week, that tooltip reads differently. “Campaign deactivated — AGI_SafeCamp_21July26.” “Campaign budget: €100 per day → €300 per day — AGI_SafeCamp_21July26.” “Spending limit: $24,652.51 → $29,402.51 — [PlugReact] otternative.”

The markers now carry the receipt. Not just that something happened — what happened, by how much, and which campaign it hit. For a finance agency answering a client who wants to know why Tuesday’s CPM spiked, that’s the difference between pulling a client call together from five tabs and pointing at the chart and saying “right there.”

The Problem: Meta Tells You Something Happened. Never What.

Meta’s activity tracking has a translation layer. Every campaign event gets assigned a translated_event_type — a generic category label like “Campaign budget updated” or “Campaign status updated.” That’s what Ott used to surface on the chart markers.

The problem isn’t that the data is wrong. It’s that it’s useless. “Campaign budget updated” doesn’t tell you whether the budget went up or down, from what to what, or whether it was a manual change or an automated rule. “Campaign status updated” doesn’t tell you whether the campaign was paused, activated, or deleted.

For a generalist e-commerce brand running performance marketing, that’s annoying. For a finance agency managing 50 clients across forex, crypto, iGaming, and prop trading — where every budget shift has regulatory implications and every status change needs an audit trail — it’s a liability.

The client asks why spend dropped Tuesday at 2pm. You open the Brand Control Room, navigate to Performance Trends, hover Tuesday. Meta says “Campaign budget updated.” You don’t know which campaign. You don’t know from what to what. You don’t know who did it. You’re about to spend 20 minutes cross-referencing the Ad Activity feed against the chart, matching timestamps, and reconstructing what happened.

That workflow is now one hover.

What Changed: Three Things

PR #267 shipped three changes to the activity markers system.

1. Real before/after values

Value changes now show the two numbers. The arrow stays because the arrow IS the information — the numbers around it tell the story.

Before: “Campaign budget updated — AGI_SafeCamp_21July26”

After: “Campaign budget: €100 per day → €300 per day — AGI_SafeCamp_21July26”

Before: “Spending limit updated — [PlugReact] otternative”

After: “Spending limit: $24,652.51 → $29,402.51 — [PlugReact] otternative”

You can see the magnitude of the change without leaving the chart. A €200 daily budget increase and a $4,750 spending limit increase tell different stories — and both stories are visible in the tooltip, on the marker, at the exact day they happened.

2. Named status actions

Status changes now use human-readable action names instead of Meta’s generic label. The system matches Meta’s status values against known patterns (activated, deactivated, paused, deleted, disapproved) and renders them as actions.

Before: “Campaign status updated — AGI_SafeCamp_21July26” (was it activated? deactivated? you’re guessing)

After: “Campaign deactivated — AGI_SafeCamp_21July26”

Before: “Ad status updated — [PlugReact] otternative”

After: “Ad disapproved — [PlugReact] otternative”

The matching is case-insensitive and handles Meta’s internal status values. If Meta sends a status the system doesn’t recognize — a localized value, say, or a new status type Meta hasn’t documented yet — it falls back to showing the raw old → new values. You get something instead of nothing either way.

3. Signal-tier filtering

This is the change that matters most for agencies running daily sweeps. Meta’s activity pipeline is noisy. For every real campaign change — budget increase, bid adjustment, creative swap — there are three to five events that don’t mean anything: pending review states, auto-generated Advantage+ audience updates, billing charge events, role permission changes.

Chart markers now filter by signal tier. Three tiers exist: delivery (real changes that could move the performance line), review (Meta’s internal review pipeline), and admin (permission changes, auto-generated audiences, billing). Only delivery events appear on the chart.

The Ad Activity feed still shows everything. The chart shows what matters.

For one brand’s last 30 days: 260 delivery events instead of 396 total. That’s 136 pipeline-noise events stripped from the markers — events that were cluttering the chart without telling you anything about campaign performance. Same data. Smarter filter.

Duplicate collapsing

When Meta generates multiple events with identical summaries — which happens when an automated rule or bulk action hits several campaigns simultaneously — identical markers collapse into one line with a ×N multiplier.

Before: “Campaign budget updated — AGI_SafeCamp_21July26” × 22

After: “Campaign budget: €100 per day → €300 per day — AGI_SafeCamp_21July26” × 5

The multiplier stays, but it’s now accurate. Five campaigns had their budgets tripled. Not twenty-two unknowns.

Why This Matters for Finance Agencies

Finance agencies don’t ask “what happened” out of curiosity. They ask it because a client’s compliance officer needs documentation, or because a CPM spike Tuesday morning needs an explanation before end of day, or because a regulator wants to see the chain of custody on a campaign change that affected ad delivery in a restricted jurisdiction.

Four scenarios where the new markers change the workflow:

The CPM spike question. Client: “Why did our CPM double Tuesday?” You open the Brand Control Room, hover Tuesday on the Performance Trends chart. “Campaign budget: €100 per day → €300 per day — AGI_SafeCamp_21July26.” The budget tripled at 9:14am. The CPM spiked by 11am — Meta’s delivery algorithm was optimizing toward the new budget and bidding more aggressively to spend it. You have the answer in one hover. No cross-referencing. No reconstructing.

The compliance audit. FCA auditor: “Provide all campaign changes for FCA-jurisdiction accounts between June 1 and August 1, with before/after values and actor attribution.” The Ad Activity feed has the complete history — every event, every change, every actor. The chart markers now surface the same data on the timeline, with the before/after values visible without leaving the performance view. The feed gives you the full audit trail. The markers give you the visual confirmation that the timeline matches the documentation.

The unauthorized change. A team member adjusts a spending limit at 11pm without approval. The old markers would show “Spending limit updated” — which could be anything. The new markers show “Spending limit: $24,652.51 → $29,402.51 — [PlugReact] otternative” at 11:07pm on Wednesday. The magnitude is visible. The campaign is named. The actor is attributed. You know exactly what happened, who did it, and whether it needs escalation.

The morning sweep. Before the markers improved, a PPC manager opening the morning sweep had to ignore most of what they saw on the chart. A day with 15 markers might have 4 real changes and 11 “Campaign status updated” noise events. You learned to tune them out — which meant sometimes tuning out the thing that actually mattered. Now, with signal-tier filtering, a day with 8 markers means 8 delivery events. Each one deserves attention. The markers went from “scroll past the noise” to “scan for the signal.” That changes what a morning sweep actually catches.

The behavioral shift matters. When markers are unreliable, you stop trusting the chart. You open Meta Ads Manager directly. You cross-reference timestamps manually. The chart becomes decoration. When markers are precise, you trust them — and the chart becomes the single source of truth for “what happened to this campaign’s performance and why.”

The Architecture Behind the Markers

The activity markers aren’t a standalone feature. They’re built on Ott’s Activity Logging engine — the same foundation that powers the Ad Activity feed, audit trail exports, and the Brand Control Room timeline. Every event that appears on a chart marker is the same event stored in the feed, with the same actor attribution, the same timestamp, and the same before/after data.

The signal-tier filtering doesn’t delete data. It filters the view. The Ad Activity feed retains every event — delivery, review, admin — so the audit trail is complete. The chart shows what’s relevant for understanding performance. You get both: a clean chart and a complete record.

This architecture matters because it means historical data benefits from the improvement retroactively. If you synced campaign history for a brand last month, those events now surface with the same before/after values and named status actions as events from today. The improvement applies to your existing data, not just new events going forward.

The Difference Between Guessing and Knowing

The gap between “something happened” and “this specific thing happened, by this amount, at this time” might look small. It isn’t. It’s the gap between reconstructing a timeline from five tabs and pointing at one marker. Between telling a client “we’ll look into it” and telling them “the budget tripled at 9:14am, the CPM spiked by 11am, here’s the chart.”

For finance agencies in regulated verticals, that gap is also the difference between a compliance answer that satisfies a regulator and one that doesn’t. “Campaign budget updated” tells an auditor that something changed. “Campaign budget: €100 per day → €300 per day” tells them what changed, by how much, when, and on which campaign. One is an event. The other is a receipt.

The markers now carry the receipt.

Ott surfaces real before/after values on your campaign activity markers — not Meta’s generic event strings. $29–$199/month, flat pricing, all features included. Start your free trial. See it in your brand’s Analysis tab today.

Meta PPC analytics, built for finance agencies.

Campaign analytics, Telegram and FTD tracking, and client hierarchy in one platform. Flat pricing, no per-client fees.

Start Free TrialBook a Demo