Conversion upload monitoring
Google said 200.
An hour later it rejected every conversion.
Offline conversion uploads fail quietly. Tokens expire, click IDs get mangled, a release stops calling the job. Convwatch checks what Google Ads, Meta and Microsoft Ads actually kept, and tells you in Slack within the hour.
For teams that upload conversions from their own backend or CRM. Built for the move to Google's Data Manager API. Read the field test.
| Uploaded | Request | Sent | Answer | After processing |
|---|---|---|---|---|
| 13:49 | 8edf4943… | 2 | 200 OK | FAILED · 0 kept |
| 13:49 | 138b9e87… | 1 | 200 OK | FAILED · 0 kept |
| 13:49 | adabf874… | 1 | 200 OK | FAILED · 0 kept |
| 13:49 | d1842cc5… | 1 | 200 OK | FAILED · 0 kept |
How it works
Two lines next to the code you already have.
Convwatch watches from the sender's side, so it sees the failure the moment it happens and the reason Google gives for it later.
Add the SDK where you send conversions
// unchanged call, now observed
await monitor.track.dataManager(req,
() => client.ingestEvents(req));
Your upload runs exactly as before and returns the same result. If Convwatch has a problem, your code never sees it.
Sent, answered, and kept after processing
For every batch we record what you sent and what the platform answered. An hour later the SDK asks Google for its final verdict with your own credentials and reports the counts and reason codes.
A Slack message when something breaks, and one when it's fixed
One alert per problem, written for the person who runs the ads, with the technical detail underneath for whoever fixes it.
What it catches
The five ways conversion uploads go dark.
- Uploads stopped
- Your job usually sends every 20 minutes and has been silent for 9 hours.
- Access broken
- Expired OAuth token, missing permission, conversion action deleted, account not allowlisted after the June 2026 cutoff.
- Rejection spike
- The platform normally rejects 2% of your events and rejected 40% in the last six hours.
- Volume drop
- You usually send 300 conversions a day and sent 40 yesterday.
- Rejected after processing
- The upload was accepted, then Google discarded the events an hour later. The alert names the reason, such as an invalid GCLID or missing consent.
What leaves your servers
Counts and error codes. Nothing about the people behind the clicks.
Convwatch never asks for access to your ad accounts. Diagnostics are fetched by the SDK, inside your infrastructure, with credentials you already have.
We receive
- Platform, account ID and conversion action ID
- How many events you sent and how many were rejected
- Platform error codes, such as
INVALID_GCLIDor190.463 - Request IDs, so a later verdict can be matched to its upload
We never receive
- Click IDs: gclid, gbraid, wbraid, fbclid, msclkid
- Emails, phone numbers, names or addresses, hashed or not
- IP addresses or user agents of your visitors
- Your Google, Meta or Microsoft credentials
Our server refuses any report that looks like it carries user data, so a misconfigured integration can't leak it to us by accident.
Planned pricing
Free catches the problem. Paid covers your whole setup.
Free
- One platform, up to 3 conversion actions
- All five alerts, including rejected-after-processing
- One Slack channel, 7-day history
- Up to 10,000 upload reports a month
Team
- Google Ads, Meta and Microsoft Ads
- Unlimited conversion actions and reports
- Several Slack channels and email, 90-day history
Agency
- Everything in Team for up to 25 client businesses
- A Slack channel per client
- Weekly upload-health summary per client
Every account starts with 14 days of Team, then moves to Free unless you upgrade. Conversion actions over your plan's limit are still recorded and shown as not monitored, never dropped silently.
Founding members get 40% off for life. Everyone on the waitlist before launch qualifies.
Questions
Before you ask.
Doesn't Google already show this?
Google Ads shows a diagnostics status in its interface and warns when a source has been silent for 48 hours. You have to go and look. It also can't tell you that your own release stopped calling the upload, and it doesn't cover Meta or Microsoft.
Which platforms and languages?
Google Ads (Data Manager API and the legacy offline import), Meta Conversions API and Microsoft Ads offline conversions. The SDK is for Node.js today; any language can report through a plain HTTPS API. Python and PHP SDKs are planned.
We send through Zapier or a CDP. Does this help?
Not yet. Convwatch is built for teams whose own code or CRM integration sends the conversions. Tell us your setup on the form; it shapes what we build next.
What happens if Convwatch is down?
Your uploads carry on. The SDK reports in the background, never blocks the upload, and never throws into your code.
Waitlist
Get the first invites, and the founding-member price.
We're onboarding a handful of teams by hand first. If you upload conversions from your own code, we'd like to hear how it last broke.