Theme and colour
Theme
Colour

Kept in this browser. The same choices as in the app.

Changelog

What changed, and when.

Last updated: 8 October 2026 · Dated and honest, including the rounds where the audit found something, and including our own mistakes: where an entry below said something that was not true, it is corrected in place, marked with the date of the correction.

2.358 Oct 2026

An audit of the whole product, and what it fixed

  • A seventh review round went through the whole product. Every blocker and every high-severity finding it raised is fixed in this release, each with a test that failed before the fix. The rest are on our list.
  • Simulated is never shown as done. While an account is in dry run, the client report, the Ledger, the Inbox and the Autonomy log say Simulated, and an undo of a live change is refused with a sentence rather than pretended.
  • A client login sees less. It no longer sees your agency’s own AI Chat conversations, the reason you gave for a halt, or an update before it is sent.
  • Budgets in currencies without cents, such as the Hungarian forint, are sent to Meta at the right size.
  • A new agency’s first limits work as intended, in every currency.
  • Undo is no longer blocked by the daily limit on changes.
  • Our own staff console needs two-step sign-in.
  • Portfolio stays quick with many accounts.
2.348 Oct 2026

Light, Dark or System, and a choice of colour

  • Light, Dark or System, in the account menu and in Settings. System follows your computer, and is where everyone starts.
  • The colour of the button that commits a decision can be Loden, Harbour, Sea or Damson. Each one is checked for contrast in both themes.
  • Clearer edges between sections, columns and items on every screen, in both themes.
2.337 Oct 2026

Google App campaigns

  • Build Google App campaigns here: installs, in-app actions, in-app value, engagement and pre-registration, checked by Google before anything is created, and created paused.
  • With App, every campaign type Google lets a tool create can be built in Adspenta. The ones it does not (Video, Local Services, Smart, Hotel) say so and link to Google Ads.
  • Duplicate works for App campaigns.
2.326 Oct 2026

Demand Gen, Shopping and Display, and a new look

  • Build Google Demand Gen, Standard Shopping and Display campaigns here, each checked by Google before anything is created, and created paused.
  • A new look. The Kept mark, a hand holding one stone, and a calmer interface set on paper.
  • The halt switch sits at the foot of the menu on every screen and says whether it is on.
  • The request-access form on this site works without JavaScript.
2.315 Oct 2026

Google Performance Max campaigns

  • Build Performance Max campaigns here, with or without a Merchant Center product feed, checked by Google before anything is created, and created paused.
  • Duplicate works for Performance Max.
2.302 Oct 2026

Google Search campaigns get assets, settings, goals and audiences

  • Assets: sitelinks, callouts, structured snippets, call, price, promotion, lead form, images, business name and logo, new or picked from the account.
  • More settings: ad schedule, devices, location radius, URL options and tracking, shared and total budgets, AI Max, IP exclusions, negative keyword lists and labels.
  • Goals and bidding: conversion goals per campaign, creating conversion actions with their tag, portfolio bid strategies, audiences and demographics.
  • Every Google campaign type is listed. The ones Google lets no tool create (Video, Local Services, Smart) say so and link to Google Ads.
2.2530 Sep 2026

Forgot your password? Somebody can let you back in

  • Settings → People → Reset password. An owner or admin gives a colleague a temporary password (or, where email is set up, the ordinary reset link). They choose their own at their next sign-in; two-step sign-in stays on.
  • A locked-out owner writes to hello@adspenta.com from the address they sign in with, and we reset it. It is recorded, with the reason, in the agency’s own Ledger.
  • Campaigns: Meta, Google Ads and TikTok are separate. A switch at the top of the page shows one platform’s clients at a time.
2.2424 Sep 2026

Google Search campaigns, and one switch to start a campaign

  • Build Google Search campaigns here, checked by Google before anything is created.
  • A new campaign arrives paused, with everything inside it ready. Turning the campaign on is the one step that starts delivery, and it is approved like any other change. Campaigns, ad sets and ads can each be turned on or paused on their own.
  • Google Performance Max campaigns are counted in an account's spend and results.
  • Another review round went through the whole product before this release, and what it found is fixed.
2.2323 Sep 2026

Leave with your data, without asking

  • Settings → Your data → Download JSON: everything the agency holds here, as one file.
  • CorrectionCorrected 8 Oct 2026: the file holds up to 20,000 rows of each kind and says when it left some out, and once deletion is requested the download is no longer offered. Download first, then delete.
  • Delete this agency, by the owner, with the short name typed and the password again: suspended that second, erased seven days later, one email to cancel. The deletion page says exactly how.
2.2223 Sep 2026

Two-step sign-in

  • Settings → Two-step sign-in. Scan a QR code with any authenticator app, enter one code to prove it, save eight recovery codes. From then on your password alone opens nothing.
  • Turning it off needs the password and a current code. Recovery codes work once each and can be replaced. The operator console has the same.
2.2123 Sep 2026

Copied targeting is checked before a campaign exists

  • A housing, credit or employment campaign that copies an ad set's targeting is checked against Meta's special-category rules at the Create button, before anything is made. It used to be refused by Meta after the campaign object already existed.
  • CorrectionCorrected 8 Oct 2026: Meta has since replaced its credit category with financial products and services. Release 2.35 uses the new one.
2.2023 Sep 2026

Undo says what it undid

  • Every ledger row about an Undo now ends with what it reversed, in the words you already read for the original change. The pair reads as a pair.
  • Operators get a "Forgot your password?" link on their own door, and one screen in the console shows every refusal and failure across all agencies for the week, grouped by what stopped it.
2.1923 Sep 2026

Support can see your screens, read-only, and you can see that it did

  • An operator can open an agency's own screens from the console, as a viewer. Nothing can be changed from it: every write is refused by the server, not hidden by the interface. It ends when they leave, on sign-out, or after half an hour of nothing.
  • Each session and each screen opened goes into the agency's access log as "opened Campaigns", "opened the Ledger", with a start and an end. The security page now says exactly this.
  • A banner on every screen says whose account it is and offers the way back.
2.1823 Sep 2026

The learning phase, by Meta's own count

  • Learning-phase suggestions now quote Meta's own figures for that ad set instead of counting days.
2.1723 Sep 2026

Autonomy can step itself back

  • If the changes made on Act stop working, that kind of change steps back to Suggest on its own. The system never moves anything up by itself.
  • It says so where you look: at the top of the Inbox, on the Autonomy row with the two measurements, and in the ledger. "Set back to Act" is one click away if you disagree.
2.1623 Sep 2026

Google Ads is written to, not only read

  • Budget changes, pause and resume now reach Google Ads through the same approval, take-back window, guardrails and read-back as Meta. A Google account can have live writes turned on like any other.
  • Anything that would change more than the one thing approved is refused rather than changed, and nothing is ever removed on Google, where removal is permanent; pausing is as far as it goes.
2.1523 Sep 2026

Send a client update from your own mailbox

  • Connect Gmail or Microsoft 365 once, and an approved client update can be sent from your own address. It leaves through your provider and lands in your own Sent folder; to your client it is an ordinary email from you. Adspenta owns no mail server and no address a client would see.
  • Approve and Send stay two decisions. Send is only offered on a draft somebody has already approved, and nothing automated can press it.
  • The permission covers sending only. Adspenta never asks to read a mailbox, and disconnecting hands the permission back.
2.1423 Sep 2026

Passwords by link, and a morning email when something is waiting

  • Forgot your password. A link from the sign-in page, good for an hour and only once. Nobody has to make you a new one.
  • Invitations by email. A new teammate, or a new agency, gets a link to choose their own password. Nobody reads a password out over chat any more.
  • A morning email, only when it matters. On days when a proposal is waiting for you or a change was refused, one email says so. On days when nothing is, nothing arrives. Off with one click in Settings.
  • Added 24 Sep 2026: all three arrive once email is switched on for this service, which happens after the email provider is named on the subprocessor page and customers have been told. Until then, invitations still use a temporary password shown once, and the sign-in page has no "Forgot your password?" link.
2.1319 Sep 2026

The console says whether last night's backup ran

  • Backups on the operator's screen. The console now says whether last night's backup ran and whether the off-site copy went, and treats silence as the alarm: a night with no record reads as a problem, not as nothing to report.
  • CorrectionCorrected 24 Sep 2026: this line used to sit under 2.14, the release after the one it shipped in.
2.1219 Sep 2026

Open a campaign and see how it is doing

  • A page per campaign. Spend, conversions, cost per conversion and return, against the same number of days immediately before, with a chart by day and every ad set and ad underneath. The parts add up to the whole because they are one rollup of the same rows, not three separate reports.
  • It says when it was read. The figures come from the last collection, and the screen says when that was rather than implying a number that moves. It also stops short of the last few days, because conversions are still being attributed then and a half-counted day makes a fine week look like a collapse.
  • Disconnecting one agency no longer signs the other one out. Where two organisations authorised the same platform login, removing one used to revoke it for both.
  • Ask the assistant about the whole agency, not one account at a time.
2.1118 Sep 2026

A cleaner first hour, and one account can only be managed by one agency

  • Your accounts are read the moment you connect them. Connecting used to hand you a portfolio of accounts with no numbers in it until the next scheduled read. The first read now starts immediately, and the screen says it is running rather than warning you that your data is stale.
  • One ad account, one agency. If the same ad account is connected by two Adspenta organisations, neither can send changes to it until one disconnects. Two sets of limits enforced separately on one client's account is not two safeguards, it is none.
  • CorrectionCorrected 8 Oct 2026: this holds for changes to existing campaigns. Building a new campaign, and the uploads and conversion actions it needs, does not check it yet.
  • Refresh reaches the platform. On the portfolio it used to reload the page. It now asks Meta for the latest, the same as the button on the campaigns screen.
  • Fewer things shouting at you. Spend is no longer reported as behind plan when no budget has been set, and an account that has simply never been read is no longer described as broken.
2.1016 Sep 2026

Changes are judged on results, and the assistant can go and look

  • Every live change is measured. Seven and fourteen days after a change lands, the account is read again and compared against its own baseline from before. The ledger says whether it improved things, made them worse, or moved nothing, and says not enough data when that is the truth.
  • The assistant does its own research. It was a single question and a single answer against a fixed snapshot. It now reads metrics for any window, checks findings, reads what has changed recently, drafts a client email, and shows you where each answer came from. It still cannot send anything to a platform.
  • A first-run checklist. Five steps in the order they actually depend on each other, worked out from what your account has rather than stored as progress. Nothing to dismiss and nothing to get stuck halfway through.
  • Nothing is ever silently simulated. Every reason a change would not reach a platform is named on the screen where you approve it, in the same words, everywhere.
  • CorrectionCorrected 8 Oct 2026: until release 2.35 the client report, the Ledger and the Autonomy log could call a simulated change Applied or Done. Since 2.35 they say Simulated.
2.915 Sep 2026

One inbox, and a history written in sentences

  • Today and Approvals became one Inbox. Two screens showing overlapping versions of the same work is one screen too many.
  • Every history row is a sentence. Not an event type and an entity id, what happened, to which campaign, who did it, and how it turned out. A refusal always says why it was refused.
  • Guardrails are editable in the product, per account, with the current values shown in words on every proposal they constrain. Each save is a new version, written to the ledger.
  • Campaigns, rebuilt. Account first, active by default, archived out of the way, with the whole tree expandable in place and one confirmation that names every campaign a bulk action will touch.
  • Undo works. It is a new change, through the same guardrails and the same ledger as any other, never a rewind.
2.5 to 2.811 to 14 Sep 2026

Campaign building, safer writes, and the things a review found

  • Build a campaign here. Objective, goal, budget, schedule, targeting, placements and creative, reviewed as one plan, checked before anything is created, and created paused; if the platform refuses part-way, you see exactly what exists and nothing is retried on top of it.
  • CorrectionCorrected 24 Sep 2026: the line above used to say a campaign is created "as one unit or not at all". On Meta a campaign is created step by step, and a refusal part-way leaves what was already made; the product lists it rather than hiding it or retrying.
  • Everything a campaign references is checked against the account it is being built in, so no campaign can be created running as another client's page or audience.
  • Backups leave the machine, on a schedule, with a restore exercised rather than assumed, and an alert on the night one fails.
  • CorrectionCorrected 24 Sep 2026: the backups first ran on our own server on 13 September, and until 2.9.3 on 15 September a failed nightly dump alerted nobody: that half of the job had no way to send an alert.
  • A change that fails before it is sent now says so. An unusable platform login used to leave a change waiting forever with nothing to read; it is now a refusal in the inbox that names the cause.
  • Per-account display names, so three accounts the platform calls almost the same thing can be told apart at a glance.
2.410 Sep 2026

Take-back window, client viewers, more detectors, weekly reports

The largest release so far, and the one that makes the loop complete end to end.

  • Five-minute take-back window. Approving a change no longer sends it immediately. For five minutes one click restores the previous value, and nothing has been written to the platform yet. The window, the countdown and the take-back are all recorded in the ledger.
  • Client-scoped viewer logins. A client can be given a read-only login that shows their own account and nothing else: findings, changes, reports. Viewers cannot approve.
  • CorrectionCorrected 8 Oct 2026: this line used to end “Every viewer read is logged like any other access.” Reads by our own staff are logged and shown to you; reads by your team and your clients are not.
  • Detectors. Creative fatigue, cost-per-result drift, budget under-delivery and learning-phase reset joined pacing-over-plan. Each one carries its evidence rows onto the proposal card.
  • Weekly PDF reports. Generated per client from the ledger, written in sentences. Generated automatically; sent by a person after they have read it.
  • Off-site backups. The script that copies the nightly backup off the machine that produced them shipped in this release.
  • CorrectionCorrected 24 Sep 2026: the line above used to say encrypted daily backups now left the machine. On our own server no backup ran until 13 September (see 2.5 to 2.8), and the backups were not encrypted until release 2.24.
2.29 Sep 2026

Operator settings and the platform mode switch

  • Dry run / live is now a switch in our operator console, instead of a deployment setting that took a redeploy to change. The product shows which mode it is in.
  • CorrectionCorrected 24 Sep 2026: the line above used to say the switch was per platform, owned by the customer, and written to the customer's ledger. It is one switch for the whole service, held by us, and every flip is written to our access log with who flipped it. The switches you hold are the per-account live-writes switch below, and the halt.
  • Live writes, per account. A second, independent switch. The service can be live while an individual account stays proposals-only, and new accounts start off.
  • Operator settings screen. The limits moved out of configuration files and into the interface, with the current values shown on every proposal card that they constrain.
  • Halt. One button that stops every pending and future write across every account, and stays stopped until a person turns it back on.
Prototype 28 Sep 2026

Security audit, round 2

The second review round, covering tenant isolation, platform-token handling, the approval path and the operator console. Publishing what it found is the point of publishing it at all.

  • CorrectionCorrected 24 Sep 2026: this entry used to call the review independent and say it was done by people who do not work for us. We cannot stand behind that description, so it is gone; what the review found, and the changes below, are as they were.
  • Tenant isolation moved into the database. The reviewers' main point: application-level checks are one forgotten filter away from a leak. Separation is now enforced by PostgreSQL row-level security, so a query that fails to scope itself returns nothing instead of another agency's data.
  • Platform tokens bound to their connection. Tokens were encrypted, but the encryption was not tied to the row they belonged to. They now are, so a token lifted out of one record cannot be decrypted for use against another.
  • Operator access narrowed and logged. The console we use to run the service lost its remaining routes to campaign data. What an operator can still reach is written to the same append-only log as everything else, and is visible to the tenant.
  • The isolation rules are now covered by tests that run against a real PostgreSQL database on every change, rather than against a stand-in. That suite stands at 840 tests.