GKP Facebook Ads
What It Should Do
Section titled “What It Should Do”This should check on how your Facebook ads for Go Kart Park are doing — how much money you spent, how many people saw your ad, how many clicked on it, and how many actually booked a party. It should sort the ads from “cheapest to get a booking” at the top to “waste of money” at the bottom, so you know which ads to keep and which to shut off. It should also compare this week to last week so you can tell when an ad is getting old and stale.
When To Use
Section titled “When To Use”- Before deciding whether to duplicate / pause a campaign. Know which creatives are working.
- When spend feels off. Did a campaign silently blow through its budget overnight?
- Weekly during party season (spring, summer). Party booking demand is seasonal and ad response changes fast.
- When you say: “check GKP Facebook ads”, “how are my ads doing”, “GKP ad performance”.
How To Invoke (Target)
Section titled “How To Invoke (Target)”python3 ~/apps/go-kart-park/scripts/fb-ads-report.py# OR eventually:python3 ~/apps/ai-assistant/scripts/gkp-fb-ads.pyNeither script exists yet. See Known Gaps.
Prerequisites
Section titled “Prerequisites”| Requirement | Where | Status |
|---|---|---|
Facebook user access token with ads_read scope | shared-secrets.env → FB_PAGE_ACCESS_TOKEN (misnamed — it is actually a user token, not a page token) | ✅ Available |
| Facebook ad account ID for Go Kart Park | Stored in GKP memory | ✅ Known |
| CAPI access token (for conversions) | shared-secrets.env → FB_CAPI_ACCESS_TOKEN | ✅ Available |
| Facebook Marketing API access | via Graph API v21.0+ | ✅ Available |
| The actual script to call the API | ~/apps/go-kart-park/ or similar | ❌ Missing |
The memory file reference_fb_ads_token.md notes the correct token to use for reads — the misnamed FB_PAGE_ACCESS_TOKEN, not FB_CAPI_ACCESS_TOKEN.
Where It Lives
Section titled “Where It Lives”- Today: Nowhere. There is no standalone GKP Facebook ad report script.
- Closest existing capability:
~/apps/gmail-notify/ath-report.pyqueries Cloudflare analytics and wraps it in an HTML email — the same pattern could wrap the FB Marketing API. - GKP booking engine:
~/apps/claude-code-crm/— owns customer messaging, but does not touch ads. - Scanner:
~/apps/ai-assistant/— scans GKP contacts but does not look at ad spend.
Known Gaps / TODOs
Section titled “Known Gaps / TODOs”- No script exists. James has the token, has the ad account ID, has the API reference memory, but the actual “call the API and format a report” script has not been written. This is the main gap.
- No automated daily digest. The ATH daily digest emails CRM + Cloudflare stats at 9 AM via cron. A GKP ad digest could follow the same pattern on the VPS.
- No dashboard. Everything would be terminal or email. A small HTML dashboard at
~/apps/cc/gkp-ads.html(following the sync-*-html pattern) would be nice. - No anomaly detection. Cost-per-lead spike > 50% vs 7-day average should trigger a voice notification. Not wired up.
Suggested Next Step
Section titled “Suggested Next Step”Before building the full script, prove the API call works end-to-end with a one-liner:
# Replace ACCOUNT_ID with the GKP ad account IDcurl -s "https://graph.facebook.com/v21.0/act_ACCOUNT_ID/insights?fields=campaign_name,spend,impressions,clicks,ctr,cpc,actions&date_preset=last_7d&access_token=$FB_PAGE_ACCESS_TOKEN" | python3 -m json.toolIf that returns data, wrap it into a proper script. If it 403s, the token scopes need updating.