Use a Meta Business Manager system user token for campaign-management scripts. Do not use Graph API Explorer tokens for recurring work; those are temporary user tokens and will keep expiring.
act_237498386928767.George Sites Ads Automation.act_237498386928767: admin access if scripts create/update
campaigns, or analyst access for read-only reporting.1021980367669603: access if scripts create ads using that Page
identity.321894611536162: access if scripts read or manage events.ads_read for reporting and verification.ads_management for creating, updating, pausing, or activating campaigns.business_management only if scripts need to manage business assets or
permissions.export META_SYSTEM_USER_TOKEN="EAAB..."
For local compatibility, the scripts also accept META_ACCESS_TOKEN,
META_TOKEN, and /tmp/gsuk_george_meta_token, but META_SYSTEM_USER_TOKEN
is the preferred long-term name.
Keep these separate:
META_SYSTEM_USER_TOKEN: Marketing API access for campaign and ad-account
operations.FACEBOOK_CONVERSION_API_TOKEN: Pixel/Conversions API event sending from
the website.FACEBOOK_PIXEL_ID: Pixel/dataset ID, currently 321894611536162.The CAPI token can keep powering server-side conversion events. It is not the credential to use for Ads Manager automation.
From the repository root:
cd "/Users/georgelane/Dropbox/Projects/Georges-Sites-UK"
export META_SYSTEM_USER_TOKEN="EAAB..."
python3 ad-creative/facebook-june-2026/verify_paused.py
python3 ad-creative/facebook-june-2026/upload_embarrassment_replacements.py --check
python3 ad-creative/facebook-june-2026/upload_unseen_replacements.py --check
These checks should confirm access without activating anything.
ads_read for checks and
ads_management only for write scripts.ads_management but still fail if the
system user has not been assigned the ad account or Page.meta CLI, authenticate it with the same system-user
token where supported, or keep using the environment variable for Python
scripts.