Settings
every field and default.
The five Settings tabs with each field, what it does and its default, plus the optional wp-config.php constants. CryptoMeter has no .env file.
01General
CryptoMeter → Settings has five tabs. Each card saves on its own with Save changes. The key names in code font next to each field are the internal names in the settings export file (option cryptometer_settings).

| Field | What it does | Default |
|---|---|---|
Apply bot policies and log AI traffic enabled | Master switch ("CryptoMeter on this site"). When off, every request passes through untouched, nothing is logged, and the admin header shows Paused. Note: the robots.txt lines, signal headers, /license.xml and /tdmrep.json are also only published while this is on. /llms.txt is not affected. | On |
Count visitors from AI assistants referral_tracking | The referral beacon (see Referrals). | On |
Keep logs for … days log_retention_days | Bot log rows older than this are deleted daily. The small daily counters (traffic and referrals) keep at least 365 days. Payment records are always kept. 7-3650. | 90 |
02Access rules

The screen describes these as "Exceptions that apply before any bot policy." In practice a Block policy still wins (an allowlisted IP using a blocked bot's user agent is still blocked); the rules make reads free for bots that would otherwise be charged.
| Field | What it does | Default |
|---|---|---|
IP addresses and ranges allow_ips | One IP or CIDR per line (IPv4 and IPv6). Invalid lines are dropped on save. | empty |
User agents allow_uas | User-agent fragments, one per line. User agents can be faked; prefer IP rules for anything valuable. | empty |
URL paths exclude_paths | One path per line, * as wildcard (for example /press/*). | empty |
Categories exclude_categories | Posts in these categories are free for AI. | none |
Posts under … words min_words | Short posts are free. 0 = off. | 0 |
Payment requests per IP per minute rate_limit | HTTP 429 with Retry-After: 60 above the limit. This per-IP limit only counts unpaid requests from bots set to Charge (Monetize on and set up). Allowed bots are not counted by it. To slow down any bot, use the per-bot rate limits. 0 = off. | 60 |
Free reads per bot per day bot_daily_free (Monetize) | Metered articles each bot may read free per UTC day before charging. 0 = off. | 0 |
Blocked bots (HTTP 403) block_message | Plain-text body for blocked bots. Empty = "Automated AI access to this content is not permitted by the publisher." | empty |
Payment required (HTTP 402) challenge_message (Monetize) | Message in the 402 body. Placeholders {price} {networks} {title} {site} {url}. | empty |
03Content & discovery

| Field | What it does | Default |
|---|---|---|
Write your bot policy to robots.txt robots_sync | Adds User-agent: … / Disallow: / for every AI bot whose policy is Block (never for search engines), plus a comment line pointing to /llms.txt. Signal lines are controlled under Signals. | On |
Publish /llms.txt llms_txt | A plain-text overview (llmstxt.org style): site name and tagline, an "AI access and licensing" section, a link to the free JSON catalog and your 30 latest articles (posts set to Blocked are left out). Off = 404. | On |
Show bots set to Charge only excerpts in RSS feeds and the REST API protect_feeds | For bots set to Charge (Monetize set up): excerpts only in feeds, archives and /wp-json/wp/v2/…. Bots set to Block get HTTP 403 on feeds and on the REST API content routes whether or not this is on. | On |
What paying agents receive serve_format (Monetize) | Automatic (Markdown if the agent sends Accept: text/markdown, JSON for application/json without text/html, otherwise the page), Always clean Markdown, or Always the normal HTML page. | Automatic |
Teaser in the 402 response teaser_words (Monetize) | Words of preview in the 402 body and in excerpts. 0-500. | 60 |
Announce articles to x402 Bazaar discovery bazaar (Monetize) | Adds the x402 "bazaar" extension to the challenge. Whether a facilitator lists your site is up to it. | Off |
Service name shown to agents service_name (Monetize) | Up to 32 ASCII characters, sent as serviceName. | empty |
Show "AI access licensed via x402" under posts badge (Monetize) | Badge under metered posts (only when payments are set up); or place [cryptometer_badge] anywhere. | Off |
04Notifications

| Field | What it does | Default |
|---|---|---|
Send to notify_email | Recipient. Empty = the site admin address. | empty |
Weekly AI traffic report notify_weekly | Once a week (WP-Cron): AI bot requests, verified, spoofed, blocked, visitors referred by AI assistants (visible referrer only), the crawl-to-referral ratio and the top 5 companies (bot requests / referrals). Not sent in a week without AI requests or referrals. | Off |
Alert me when AI traffic spikes spike_alert, spike_factor | Checked every hour: an e-mail is sent when the last hour had at least 50 AI requests and more than the factor × the average hour of the previous 7 days. At most one alert per 6 hours. (The on-screen wording talks about a day; the code compares hours.) Factor 2-100. | Off, × 5 |
Daily summary notify_digest | Yesterday's numbers (UTC): earned, paid reads, AI bot visits, blocked, unpaid demand. Only sent on days with AI activity. | Off |
E-mail me every time an AI agent pays notify_each (Monetize) | One e-mail per settled payment. | Off |
Webhook URL webhook_url | An https:// URL that receives a JSON POST after every settled payment (Monetize). See Webhooks. | empty |
Signing secret (optional) webhook_secret | Adds X-CryptoMeter-Signature: sha256=…. Masked after saving. | empty |
| Send test event (saved URL) | Sends an event of type test and shows "Webhook delivered · HTTP …" or the error. | - |
E-mails use WordPress's wp_mail(). If you do not receive them, your site may need an SMTP plugin.
05Tools & status

- System status: PHP, WordPress, sodium, DOMDocument, Pretty permalinks, Database tables, Daily maintenance (WP-Cron), Wallet address and Facilitator (only with Monetize), Page cache (detected plugins), Cloudflare (only when the request came through Cloudflare). Green = OK, amber = check, red = problem.
- Export settings → Download JSON. API secrets (CDP secret, bearer token, webhook secret) are never exported.
- Import settings: choose a
.jsonfile and press Import. Only known settings are imported and validated; secrets on this site are kept; the page reloads. A file from another plugin is rejected ("That is not a CryptoMeter settings file."). - Erase data: Test-mode payments and test traffic · Bot request log (Activity) · Referral counters · All statistics (log, referrals and daily counters). Press Delete…, tick "I understand this cannot be undone" and press Delete permanently. Live payments are accounting records and cannot be deleted here.
CryptoMeter also adds suggested text to Settings → Privacy → Policy Guide describing the bot log and the referral beacon.
06wp-config.php constants
CryptoMeter has no .env file. Everything is in the admin screens, plus these optional constants (above /* That's all, stop editing! */):
| Constant | Purpose | Where to get the value |
|---|---|---|
CRYPTOMETER_CDP_KEY_ID | Coinbase CDP API key ID (Monetize). Overrides the stored value. | portal.cdp.coinbase.com |
CRYPTOMETER_CDP_KEY_SECRET | Coinbase CDP key secret (base64 Ed25519 or EC PEM). | Shown once when you create the key |
CRYPTOMETER_DELETE_LEDGER | Set to true before deleting the plugin to also remove the payment ledger and per-post/category prices. | Your decision |