Platform Settings
Preferred Currency
Sets currency across all dashboards.
Live Exchange Rates (EUR base)
Payment Settings
Enable payment methods for top-ups and payouts.
Stripe
Cards
PayPal
PayPal
Bank
IBAN/SWIFT
Platform Fees
Payout Cadence
How often the platform automatically creates payout requests for eligible publishers. Set to Manual to disable auto-scheduling (publishers can still request payouts manually).
bin/run-payout-schedule daily)
Currency Vault
Multi-currency wallet feature. OFF by default — flip the master flag only after stages 3–5 ship and you've tested. Settings below are read by the new WalletService / FxService when enabled.
Currency publishers receive payouts in. System auto-converts from their vault balance.
Platform's cut on currency conversions. 50 bps = 0.5%. Earned on every internal exchange.
Payout Fees
Per-provider fee schedule. Used by PayoutFeeService when calculating publisher net payouts. Seeded with public-rate defaults — override as needed.
+ Add new fee rule
AI Studio (Anthropic)
Required for AI copy generation, compliance checks, translations, and scripts.
Get your key at console.anthropic.com
Analytics Tracking
Paste Matomo, GA4, or any tracking snippet. Loads on public pages only — never on the admin panel or on publisher/advertiser dashboards (any path under /admin, /dashboard, /publisher, /advertiser, /settings). Advertiser landing pages (/lp/*) are tracked. If you add a new authenticated section under a different path prefix, add that prefix to $__cmAppPrefixes in main.php so the tag stays off it.
Anti-Spam & Messaging
Rate-limit user messaging to deter spam and abuse. Set any value to 0 to disable that limit. Only the messages-per-hour limit is currently enforced server-side; the others are stored for future enforcement and operator reference.
Enforced. Counts all messages a user sends across all threads.
Not yet enforced.
Not yet enforced.
Not yet enforced.
Email Notifications
Master kill switch for all platform emails (welcome, growth alerts, message notifications). Useful during incidents or testing.
When unchecked, no platform email is delivered (per-thread mutes still apply too). The MAIL_ENABLED env var still wins when explicitly set to false.
Anti-Ad-Block Mode
First-party / inline / native rendering that helps ads survive client-side blocking. Effective only when all three opt in: admin (you, here), advertiser (per-campaign), publisher (per-site). Any one OFF → silent fallback to standard delivery.
Note: this delivers ads with neutral DOM class names and inline injection. It does not change the SDK script URL or the request path — true ad-block evasion via a first-party customer-domain proxy is a separate, larger piece that needs DNS/CDN cooperation from each publisher.
Periodic Digest Emails
Role-aware summary emails (advertiser, publisher, admin) on each user's chosen cadence — daily, weekly, monthly, or off. Per-user cadence lives in Settings → Notifications.
When a user gets this many empty digest cycles in a row, the cron stops sending and the user must click "Reactivate digests" or change cadence to resume.
Crontab entry: 0,15,30,45 * * * * /opt/local/bin/php83 /home2/ghostbanner/bin/send-digests >> /home2/ghostbanner/storage/logs/digests.log 2>&1
File Uploads
Limits applied to user uploads (creative banners, message attachments, dataset files). Backend services and the JS uploader on every page read from these values, so you can dial them down or up without a deploy.
Comma-separated. SVG deliberately excluded by default (XSS via embedded scripts).
Comma-separated. The current defaults cover PDF, common images, plain/CSV text, Office docs (docx/xlsx/pptx), and ZIP. Be cautious adding executable types.
AI Creative Suggestions
When an advertiser's ad underperforms (CTR below their account median), Claude designs an improved version. Each generation is billed from the advertiser's own pre-funded wallet — never your account. Read live; no deploy needed.
SDK Assets (pre-compression)
Regenerates pre-compressed .gz and .br variants of sdk.js, app.min.js and app.min.css so Apache serves the smaller payloads directly. Run this after deploying a new sdk.js.
