πŸ€–chiliad
ClaudePricing
Help Center

Scripts and deployment

Create and edit scripts, keep version history, set per-account values and deploy to Google Ads with a single loader.

A script in chiliad has two parts: the code, hosted and versioned by chiliad, and a small loader that you paste into Google Ads once. The loader fetches the current code and settings on every run, so you never edit scripts inside Google Ads again.

On this page

  • Your script library
  • Writing and editing code
  • Version history
  • Script variables
  • Assign accounts
  • Per-account values
  • Deploy with the loader
  • Running at manager (MCC) level

Your script library

Scripts lists every script in the workspace with its status, last run and success rate.

app.chiliad.io/scripts
Scripts
RefreshCreate Script1

Total Scripts

14

8 active

Total Executions

847

Success Rate

94%

Errors

51

Search scripts...All StatusesAll Types
NameStatusLast RunExecutionsSuccess Rate
Budget Pacing MonitorActive2m ago41299%
ROAS Bid AdjusterError22h ago18871%
Negative Keyword SweepUpdate available3Active5h ago96100%
Link CheckerNot configuredNever0β€”
  1. 1

    Create Script β€” start blank or from a template. Marketplace installs land in this list too.

  2. 2

    Status shows health at a glance: Active, Error when recent runs failed, Not configured when no accounts are assigned yet.

  3. 3

    Update available marks a marketplace script whose original has a newer version.

Writing and editing code

Open a script to edit it. The editor highlights JavaScript, underlines syntax errors as you type and autocompletes Google Ads objects such as AdsApp. and SpreadsheetApp..

Code needs a function main() entry point. Put settings in top-level var declarations with UPPER_SNAKE_CASE names so they can become variables.

Save with the button or Cmd+S / Ctrl+S. Saving is blocked while the code has syntax errors.

app.chiliad.io/scripts/budget-pacing-monitor

Budget Pacing Monitor

Enabled
ScriptVariables (3)VersionsHistoryAccounts (3)
1
Script CodeLoaderAnalytics
2
3Save*
var MONTHLY_BUDGET = 5000;
var ALERT_EMAIL = "you@example.com";

function main() {
  var spend = AdsApp.currentAccount()
    .getStatsFor("THIS_MONTH").getCost();
  if (spend > MONTHLY_BUDGET * 0.9) notify(spend);
}
  1. 1

    Tabs for the code, variables, version history, execution history and assigned accounts.

  2. 2

    Switch between your Script Code, the Loader to paste into Google Ads, and the Analytics snippet.

  3. 3

    Save publishes immediately: accounts pick up the new code on their next run. The amber dot means unsaved changes.

Version history

Every save creates a version, whoever or whatever made it.

app.chiliad.io/scripts/budget-pacing-monitor

Budget Pacing Monitor

Enabled
ScriptVariables (3)VersionsHistoryAccounts (3)

Code versions

Latest savedΒ· 2h agoAnna K.Claude (MCP)1

var MONTHLY_BUDGET = 5000; var ALERT_EMAIL = …

CompareCurrent
Version 3Β· 3d agoAnna K.Dashboard

var MONTHLY_BUDGET = 5000; var ALERT_EMAIL = …

Compare2Restore3
Version 2Β· 9d agoMarco D.Marketplace update

var MONTHLY_BUDGET = 5000; var ALERT_EMAIL = …

CompareRestore
  1. 1

    Each version records the author and the source: the dashboard, Claude, a restore or a marketplace update.

  2. 2

    Compare shows a side-by-side diff against the current code.

  3. 3

    Restore makes an old version current again.

Tip

The same tab lists Config changes: who changed which per-account value, and when.

Script variables

Variables are the settings a script exposes β€” budgets, thresholds, email addresses, spreadsheet URLs. Declaring them lets you change values per account without touching the code.

app.chiliad.io/scripts/budget-pacing-monitor

Budget Pacing Monitor

Enabled
ScriptVariables (3)VersionsHistoryAccounts (3)
Detected from codePACING_THRESHOLDAdd all1
Script variables
Save variables3
KeyLabelTypeDefault value 2
MONTHLY_BUDGETMonthly budgetNumber5000
ALERT_EMAILAlert emailTextyou@example.com
SHEET_URLReport sheetURLNo default
Add variable
  1. 1

    chiliad detects top-level settings in your code and offers to add them as variables.

  2. 2

    Each variable has a type (text, number, boolean, URL or JSON) and a default value that every account uses unless you override it.

  3. 3

    Save variables to make them available in the per-account table.

Assign accounts

The Setup Guide on a new script opens a three-step wizard. Later, manage assignments in the script's Accounts tab.

app.chiliad.io/scripts/budget-pacing-monitor
Set up Budget Pacing Monitor
1Assign accounts→2Set values→3Copy the loader1
Search accounts...
Apex Digital MCC123-456-7890
Manager
GrowthLab Store234-567-8901
2
ClickSmart SaaS345-678-9012
AdScale Pro456-789-0123
Assign & Continue (3)3
  1. 1

    Three steps: assign accounts, set values, copy the loader.

  2. 2

    Tick the accounts that should run this script.

  3. 3

    Assign & Continue saves the assignment and moves on to the values table.

Per-account values

The Configure view of the Accounts tab is a table with one row per account and one column per variable. Fill in only what differs; everything else uses the script default.

app.chiliad.io/scripts/budget-pacing-monitor

Budget Pacing Monitor

Enabled
ScriptVariables (3)VersionsHistoryAccounts (3)
Assigned Accounts (3)
ListConfigure
Assign to Account
Search accounts…Only missing values1OverrideDefaultMissing
AccountMONTHLY_BUDGETALERT_EMAILSHEET_URL
GrowthLab Store234-567-8901120002you@example.comsheets/…/growthlab
ClickSmart SaaS345-678-90125000saas@clicksmart.io3
AdScale Pro456-789-01232500you@example.comsheets/…/adscale
Save changes4
  1. 1

    The legend explains the three cell states.

  2. 2

    Override β€” this account uses its own value.

  3. 3

    Missing β€” the variable has no default and no value for this account, so the script would run with an empty setting.

  4. 4

    Save changes takes effect on each account's next run. The loader in Google Ads does not change.

Tip

Column menus save time on long lists: Fill all with…, Copy from account and Clear all overrides.

Deploy with the loader

The loader is the same snippet for every account that runs the script.

  1. Copy it from the last step of the wizard, the Loader view of the editor, or Get Loader in the Accounts tab.
  2. In Google Ads open Tools β†’ Bulk actions β†’ Scripts, add a new script and paste.
  3. Authorize, run a preview to check the logs, then set the frequency.

From now on, edit code and values only in chiliad.

app.chiliad.io

Loader in chiliad 1

/**
 * Budget Pacing Monitor β€” chiliad loader
 */
function main() {
  if (typeof AdsManagerApp !== 'undefined') {
    var ids = chiliadAssignedAccounts();
    AdsManagerApp.accounts().withIds(ids)
      .executeInParallel('budgetPacingMonitor');
  } else {
    budgetPacingMonitor();
  }
}
Copy to ClipboardDownload .js
ads.google.com/aw/bulk/scripts

New script in Google Ads 2

chiliad Β· Budget Pacing Monitor

function main() {

…

}

AuthorizePreviewRunFrequency: Daily3
  1. 1

    Copy or download the loader in chiliad.

  2. 2

    Paste it as a new script in Google Ads β€” in a client account, or in the manager account to cover many clients at once.

  3. 3

    Authorize once, preview, then schedule. The schedule is always set in Google Ads.

Tip

If a script later starts using another Google service (Sheets, Drive, Gmail), copy the loader again so Google Ads asks for the extra permission.

Running at manager (MCC) level

Pasted into a manager account, the loader asks chiliad which accounts the script is assigned to and runs only those, in parallel. Assigning or unassigning an account in chiliad changes the targeting on the next run; the snippet in Google Ads stays untouched.

  • If no accounts are assigned, the run is skipped and the Google Ads log says so. This stops a script from running across a whole manager account by accident.
  • If chiliad cannot be reached, the run is skipped as well rather than guessing.
  • Scripts that contain their own AdsManagerApp logic select accounts themselves.

Articles on this topic

  • How to add a script to Google Ads
  • How Google Ads script authorization works
  • How to schedule a Google Ads script
  • Preview vs Run in Google Ads scripts: what is the difference?
  • Google Ads script limits: execution time, accounts and quotas
  • How to run one Google Ads script on multiple accounts
  • How to update a Google Ads script in every account at once
  • How to use different script settings for each account
  • How to roll back a Google Ads script to an earlier version
  • How a Google Ads script is structured: main(), settings and helpers
  • How to use Google Sheets from a Google Ads script
  • How to send email alerts from a Google Ads script

Related guides

Using the marketplace

Monitoring and alerts

Claude connector

Quick answers on this topic in the FAQ

Still stuck?

Send us a question from the help center β€” we read every message.

Ask a question

On this page

  • Your script library
  • Writing and editing code
  • Version history
  • Script variables
  • Assign accounts
  • Per-account values
  • Deploy with the loader
  • Running at manager (MCC) level
πŸ€–chiliad

The platform for managing and automating Google Ads scripts at scale. Built for PPC agencies and freelancers.

chiliad β€” Google Ads Script Management - Monitor and manage Google Ads scripts across every account | Product Hunt

Product

  • Use Cases
  • Features
  • Claude connector
  • Pricing
  • Marketplace
  • Blog
  • About
  • Roadmap
  • Changelog

Support

  • Contact Us
  • Help Center
  • Terms of Service
  • Privacy Policy

Β© 2026 chiliad. All rights reserved.