Skip to main content

Changelog

What shipped in Launchpad V2, newest first, in plain language. Each entry links to the page that explains the feature. The earlier entries about this documentation site are at the bottom under Documentation history.

All amounts in Launchpad are dollars (19.99 means $19.99).

2026-10-20​

  • Documentation refresh. Added guides for views and breakdowns, status and budgets, exports and Google assets, roles and permissions, Spend Guards, Issues, and scheduled jobs; refreshed the admin, connector, and environment pages to match the current app; and brought this changelog up to date.
  • The documentation site now has its own address, and its contributor wording and links were tidied.
  • A ClickUp task that has been deleted no longer raises a warning in error monitoring.

2026-10-19​

  • New Customers CPA. The report has a New Customers CPA column: what it cost to acquire each first-time buyer. See Views, breakdowns, and filters.
  • If the client list cannot load because an upstream service returned an error page, the message now says what happened in one clean line instead of showing raw page code.
  • Error reports no longer carry request credentials, and short upstream hiccups on reads are retried automatically.

2026-10-18​

  • Breakdown fixes. The Name Element breakdown is split by code type (Image, Copy, Video) so stacked rows add up to the parent row, and click metrics in Tabs breakdowns use the child rows as their base.
  • Follow-up fixes from the latest reporting QA pass, including restoring a client-run campaign line that a guard had emptied for one account.

2026-10-16​

  • Count orders with no ad account. A Super Admin can choose per client whether CRM orders that could not be tied to an ad account are counted (as a "(no ad account)" row per platform) or left out and shown on their own line. See Orders with no ad account.
  • Show CRM New Leads is now a per-client switch.
  • Client pickers list clients that are not active last, labelled "(not active)", and hide demo and system clients.
  • Daily and period breakdowns (daily, weekly, monthly) show every period in date order, and the paged Summary row shows the exact level total.
  • Spend Guards: choose which ad accounts the daily Slack summary lists. See Spend Guards.
  • Serving Status labels now use Title Case to match Effective Status.
  • Accounts without an ad account no longer borrow another account's name, and Tabs drops the empty "no account" ad-account row.

2026-10-15​

A large release of reporting and control features.

  • Edit daily budgets from the report. Super Admins can change Meta and Google campaign and ad set budgets, up to $500 per edit (and never below $1.00), with every attempt logged. Off by default per client. See Status, switches, and budgets.
  • Pause or turn on campaigns and ad sets from the report with an on/off switch (Super Admin, per client, confirmation and audit log).
  • Status, Effective Status, and Serving Status are filled at every level. Effective Status explains every reason an item is not delivering.
  • Performance Max asset view on the Google platform tab, and a weekly Performance Max and Demand Gen asset CSV. See Exports and Google assets.
  • Shared export templates, managed by Super Admins, plus reorderable export columns (the CSV follows your order).
  • Ad account picker next to the client picker.
  • Agency-managed campaign scope. Reports count only campaigns run by the agency (by name prefix), with an admin "Show all" toggle.
  • Campaigns tab opens the Tabs View at campaign level with the CRM columns showing.
  • CRM New Customers column and Google Video Title breakdown (V1 parity), plus Google add-to-cart and checkout steps with step rates.
  • CRM Purch. and CRM CPA are in the default view and added to saved column views.
  • Same-day ad spend refreshes every 30 minutes, and the page shows "as of" times for spend and orders.
  • Break an Asset Type bucket down again by other cuts.
  • Landing Page breakdown groups Facebook ads by the URL each ad actually served.
  • Ad-name element patterns can be edited per client from the client page and through MCP.
  • Large clients load faster: the Ads table is paged and no longer freezes the browser, ad-account bindings page past 1,000 rows, and a loading state shows while data refetches.
  • Fixes: Path view Agency Fee matches Tabs, exact breakdown slices on Path parent rows, name filters in the Breakdown panel, report links open on their date range and client, and many ad-name and Name Element corrections.
  • Sync Health names the ad account behind a stale paid rollup. Builds run database migrations only on the production deployment.

2026-10-14​

  • Sync self-healer can re-send paid syncs that got stuck. It is off until switched on and never pauses or resumes an account. See Scheduled jobs.
  • Unbound ad account detection in Sync Health: revenue credited to ads from an ad account that is not connected to the client is flagged. See Sync health.
  • Daily Google parity check. Google campaign and ad group numbers are compared with Google every day; differences appear under Issues.
  • Name filters now apply in the Breakdown panel, row segments, and CRM-only rows; Tabs ad set and ad rows page past 500 rows; the Spend % column is stamped once over every loaded page.
  • Export columns can be reordered.
  • Faster attribution: the hourly and binding UTM resolves are split into shards.
  • Vrio and Hyros commerce tiles no longer read "never synced", and Converge CRM New Leads is populated for UW.

2026-10-12​

  • Converge rows that share a campaign, ad set, and ad are summed before attribution rows are built, and Converge data is checked against Converge's own analytics.
  • A refunded multi-line Shopify order is counted once.
  • Admin grant and revoke actions now read the person's role from the database instead of the sign-in session.

2026-10-10 to 2026-10-11​

  • CRM purchases are traceable to order IDs in exports (crm_order_ids), with long ID lists capped for spreadsheets.
  • Audit scripts for Converge coverage per ad account, and fixes for blank or macro campaign IDs.
  • Pup Labs: CAKE conversions are valued at the tracker AOV rather than a fixed payout, and an unreadable tracker tab fails the sync instead of zeroing revenue.
  • Spend Guards: a newly granted permission works without signing in again, and error text is no longer echoed in responses.

2026-10-06 to 2026-10-07​

  • Custom roles can be assigned to users and permissions can be overridden per person; a user has one role. See Roles and permissions.
  • Escalation ceiling. Only a Super Admin can promote to Super Admin or manage the Spend Guards permission, and password resets follow the same limit.
  • Spend Guards daily Slack summary: channel, send time, and message templates, with a preview that renders like Slack.
  • Background jobs re-register themselves after each deploy so new functions go live without a manual sync; the 45-day UTM attribution resolve is sharded to avoid timeouts.
  • Hyros end dates are clamped to now; storage calls retry transient errors.

2026-09-29 to 2026-10-01​

  • Vrio CRM reports connector added as a shadow CRM source. See Connectors.
  • Issues page and sidebar bell collect everything that needs action; failed Spend Guard Slack posts become issues. See Issues.
  • Spend Guards per-ad-account campaign prefixes.
  • Tabs View: page order is stable across pages and loaded pages are kept on refresh; the footer shows the resolved date window, and ?from=&to= opens the date picker on that range.
  • Pup Labs revenue uses CAKE's per-conversion value; Vrio customer counts come from Vrio's per-ad figure.
  • Meta ad names cut off at 255 characters are matched to the one campaign ad they prefix.

2026-09-25​

  • Orders panel: unattributed rows open their orders, orders show the credited campaign, ad set, and ad names, and the panel supports UTMs, export, and resizing.
  • Switchable attribution rule. An administrator can choose strict matching or the V1 rule for chosen clients or all clients, with no resync. See System settings.
  • Reports: drill children sum to their parent, exports default to the visible level, and all ads under a selected ad set load so they sum to it.
  • MCP sign-in now requires consent before a code is issued. See MCP guide.
  • Spend Guards table columns are sortable and show percent of cap.

2026-09-23 to 2026-09-24​

  • Spend Guards launched. Per-ad-account velocity alerts and an optional hard daily cap that pauses campaigns, with a Slack summary, an admin screen, and activity log. See Spend Guards.
  • Paused and archived clients are listed on the Clients page.
  • Google reporting stores exact totals at every drill level and a daily campaign and ad group parity check runs.
  • Orders are re-read for the last 30 days once a day to pick up late changes. Name filters now work in Tabs View, and exports show the same names as the drill-down.
  • Dormant ad accounts are named from their Launchpad display name.

2026-09-18 to 2026-09-21​

  • Validation sign-off on ad accounts, shown next to client and account names, and exclude unmanaged ad accounts from client reporting. See Managing a client's ad accounts.
  • Active and Non-Active cohort per ad account and a client-engagement filter.
  • Frozen first column and no nested scroll box on report tables; conditional-formatting fixes, including previous-period rules. See Conditional formatting.
  • Chargebee and SamCart connectors added; the Converge reader supports its column-per-model layout; the per-client URL term is applied when reading the ad ID.
  • Export added to the Ads section.
  • An operator's campaign approval is authoritative, all campaigns are stored with visibility applied at read time, and real ad account names replace the platform fallback.

2026-09-09 to 2026-09-11​

  • Configurable performance and order exports, with lifecycle revenue and provenance reconciled.
  • Reporting sources: inspect account source details, aggregate and unassigned source records, and zero-purchase drilldowns.

2026-09-01 to 2026-09-02​

  • Per-product CPA targets by platform, with a dated, forward-only change history.
  • Refunded Shopify orders can count as purchases for opted-in clients.
  • Error monitoring captures Inngest errors only on the final attempt.

Documentation history​

Notable changes to this documentation site before the product entries above.

2026-09-21​

  • Documented the September punch-list changes: conditional formatting (including previous-period rules and why a rule may paint nothing), the frozen first column and removal of the nested scroll box, and the client status filter behind "a client vanished from the selector".
  • New page on managing a client's ad accounts, with annotated screenshots.
  • Recorded why reporting exclusion is per account and cannot be per product (spend carries no product dimension).

2026-08-26​

  • Reconciled connector, schema, environment, credential, data-model, reporting, onboarding, and disaster-recovery guidance with current source contracts.
  • Corrected the canonical deployment host and edit links; made broken links, Markdown links, and anchors build failures.
  • Consolidated 31 overlapping or obsolete spec pages into seven normalized master specifications, with redirects for previous URLs.
  • Completed a 96-page source audit across Help, surfaces, architecture, runbooks, reference, onboarding, and specs.

2026-08-17​

  • Initial handoff docs published. Covers architecture, runbooks, reference, and onboarding.

Each entry is dated (YYYY-MM-DD) and bulleted. Keep entries terse; the git history is the detail record.