By Ivo Kostadinov · Founder, SaveMyBudget
· 3 min read
The SaveMyBudget Toolkit is open source
Today we published the evidence-collection half of SaveMyBudget as open source. It's called the SaveMyBudget Toolkit, it's Apache-2.0, and it runs as one Docker container on a server you control.
What it does
The toolkit records every Google Ads click that lands on your site and keeps what Google can't see from its side: whether the page was ever visible, how long it stayed open, whether anything on it was touched, what network the visit came from, and whether the same click ID turned up more than once.
It then runs ten detection rules over those records — each one documented with its default threshold and its known false positives — and builds the package Google's invalid-clicks form asks for: an evidence file with click IDs, timestamps and addresses; a short factual summary; and a field-by-field guide to the form. You submit it. Google reviews it and decides what, if anything, was invalid.
If you don't want to run the tag, you can import your web server logs or a click export instead. With both, the toolkit can also show which requests arrived at your server without the tag ever running — the clearest sign of a click that no browser made.
What it doesn't do
It doesn't connect to your Google Ads account. It doesn't file claims. It doesn't put a price on flagged clicks — flagged is not the same as invalid, and only Google decides what is credited. It doesn't block anything, though it can export an IP list you may choose to add to your campaign exclusions.
How it's different from the service
The service at savemybudget.io is the same idea run for you. It installs and monitors the tag, connects to your Google Ads account for campaign data and cost, runs additional rules and thresholds calibrated across accounts, and prepares and files the claims. It's no-win-no-fee: when Google confirms a credit, we keep 25%. If Google confirms nothing, there's no charge.
The toolkit is for people who would rather do the collecting and filing themselves — agencies with their own infrastructure, developers who want to read the code before trusting a script on their site, and anyone who wants the evidence but not the relationship. The rule engine and the collector are the same lineage as the service's; the tuning, the cross-account signals and the filing are not in the repository and won't be.
Why open it
Two reasons. A tag on someone's site should be readable. Ours is small, has no dependencies, never reads page content or form fields, and — in the toolkit build — never contacts us at all. That claim is easier to make when anyone can check it.
And Google's form is public. The gap has never been access to it; it's having records good enough to fill it in. If more advertisers keep those records, more well-founded requests get made, which is good for everyone with an ad budget.
Telemetry, since you'll ask
The toolkit sends anonymous usage counts — version, how many sites, how many analyses — and nothing about your visitors. Every field is listed in the repository. One environment variable turns it off.
Getting it
The repository is at github.com/10xlabsio/savemybudget-toolkit. Deployment is a Docker Compose file with Caddy for TLS and takes about ten minutes; the documentation covers Google Tag Manager, Shopify, WordPress, Webflow, Wix and Squarespace. Issues and pull requests are welcome. Changes to the rule defaults go through a discussion first, because a threshold is a product decision, not a code change.
If you'd rather we ran it: the service.
Protect your ad budget. Start tracking clicks on your site and let us prepare the claims for Google to review.
Protect my ad budgetNo win, no fee · No card to start · Setup in about a minute