Reference

Logging and trace fees

Every other line in this estate is priced by account or by tenant. Logs and traces are priced by traffic. They are the lines that move when the product gets used, and they are set by four switches most teams never open.

Audience Business analyst, platform engineer, compliance reviewer Status Current · Version 1.0 Owner Platform engineer (role) Evidence basis Vendor list prices read 16 September 2026 Review cycle Quarterly, and whenever a vendor announces a billing change Related BYO Xano and BigQuery against Google's agent platform


At a glance: metered or flat

Open the interactive comparison: Metered or Flat

The same loyalty event stream, carried two ways. Both paths start at the Cloudflare Worker, which receives Shopify's webhooks and runs the permissions boundary, and both end in BigQuery. Only the middle differs, and lines that cost the same in both are grouped first. Totals: $99.00 vs $90.01 at 300k events, $183 vs $90.15 at 3M, $1,032 vs $103 at 30M.

<style>.fee-tabs{margin:18px 0 8px}.fee-tabs>input{position:absolute;opacity:0;pointer-events:none}.fee-tabs>label{display:inline-block;font:600 12px/1 var(--mono,ui-monospace,Menlo,monospace);letter-spacing:.06em;padding:9px 14px;border:1px solid currentColor;margin:0 -1px 10px 0;cursor:pointer;font-variant-numeric:tabular-nums}.fee-tabs>input:checked+label{background:#0a0a0a;color:#fff;border-color:#0a0a0a}.fee-tabs>input:focus-visible+label{outline:2px solid #0a0a0a;outline-offset:3px}.fee-tabs .fee-panel{display:none}#fee-300k:checked~.fee-panels .fee-p-300k,#fee-3m:checked~.fee-panels .fee-p-3m,#fee-30m:checked~.fee-panels .fee-p-30m{display:block}.fee-tabs .fee-note{font-size:12.5px;margin-left:10px}.doc .fee-table td small{font-size:12px}.doc .fee-table .fee-n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.doc .fee-table tr.fee-group td{font:600 10.5px/1.3 var(--mono,ui-monospace,Menlo,monospace);letter-spacing:.1em;text-transform:uppercase;background:#fafafa;padding-top:7px;padding-bottom:7px}.doc .fee-table tr.fee-total td{border-top:2px solid #0a0a0a;font-weight:600}.doc .fee-table td.fee-hot{background:#0a0a0a;color:#fff;font-weight:600}.doc .fee-tag{display:inline-block;font:600 9.5px/1.4 var(--mono,ui-monospace,Menlo,monospace);letter-spacing:.08em;text-transform:uppercase;padding:1px 5px;border:1px solid #0a0a0a;white-space:nowrap;vertical-align:1px}.doc .fee-tag.fee-m{background:#0a0a0a;color:#fff}.doc .fee-tag.fee-f{border-style:dashed}@media print{.fee-tabs>input,.fee-tabs>label{display:none}.fee-tabs .fee-panel{display:block!important}.fee-tabs .fee-panel::before{content:attr(aria-label);font:600 11px var(--mono,monospace);text-transform:uppercase}}</style><div class="fee-tabs" role="tablist" aria-label="Events per month"><input type="radio" name="fee-vol" id="fee-300k"><label for="fee-300k">300k</label><input type="radio" name="fee-vol" id="fee-3m"><label for="fee-3m">3M</label><input type="radio" name="fee-vol" id="fee-30m" checked><label for="fee-30m">30M</label><span class="fee-note">events per month · 300k is the realistic near-term estate</span><div class="fee-panels">

<div class="fee-panel fee-p-300k" role="tabpanel" aria-label="300k events per month"><table class="fee-table"><thead><tr><th>Line</th><th>Google metered path<br>Worker → Pub/Sub → Workflows → BigQuery</th><th class="fee-n">$ / mo</th><th>Xano + Cloudflare fixed path<br>Worker → BigQuery, Xano Realtime</th><th class="fee-n">$ / mo</th></tr></thead><tbody><tr class="fee-group"><td colspan="5">Same in both</td></tr><tr class="fee-same"><td><strong>Cloudflare Worker</strong><br><small>front door and permissions boundary · $5 minimum, 10M requests, then $0.30/M</small></td><td>Worker publishes to Pub/Sub</td><td class="fee-n">$5.00</td><td>Worker writes to BigQuery directly</td><td class="fee-n">$5.00</td></tr><tr class="fee-same"><td><strong>BigQuery ingest</strong><br><small>Storage Write API · $0.01 per 200 MiB</small></td><td>Workflows writes rows</td><td class="fee-n">$0.01</td><td>Worker writes rows</td><td class="fee-n">$0.01</td></tr><tr class="fee-same"><td><strong>Xano Essential</strong><br><small>record of identity and consent · annual billing</small></td><td>still needed</td><td class="fee-n">$85.00</td><td>includes Realtime sockets</td><td class="fee-n">$85.00</td></tr><tr class="fee-group"><td colspan="5">Only in the Google path</td></tr><tr><td><strong>Socket / transport</strong><br><small>publish + 1 subscription</small></td><td>Pub/Sub · $40/TiB after 10 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>Xano Realtime, inside the plan <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Orchestration</strong><br><small>per-event processing</small></td><td>Workflows · 3 steps, $0.01 per 1,000 after 5,000 <span class="fee-tag fee-m">metered</span></td><td class="fee-n fee-hot">$8.95</td><td>runs inside the Worker <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Egress</strong><br><small>one callback per event to Xano or a Worker</small></td><td>Premium Tier · $0.12/GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0.03</td><td>Cloudflare charges none <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr class="fee-group"><td colspan="5">Monitoring</td></tr><tr><td><strong>Traces</strong><br><small>5 spans per event</small></td><td>Cloud Trace · $0.20/M after 2.5M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>not used; Xano request history is included <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Logs</strong><br><small>1 entry per event, ~1 KiB</small></td><td>Cloud Logging · $0.50/GiB after 50 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>Workers Logs · $0.60/M after 20M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Metrics</strong><br><small>standard platform metrics only</small></td><td>Cloud Monitoring · Google Cloud metrics free</td><td class="fee-n">$0</td><td>Workers analytics, included</td><td class="fee-n">$0</td></tr><tr class="fee-total"><td><strong>Total per month</strong></td><td></td><td class="fee-n">$99.00</td><td></td><td class="fee-n">$90.01</td></tr><tr><td><strong>Difference</strong></td><td colspan="3">what the Google path costs on top, for fan-out and replay that nothing uses today</td><td class="fee-n"><strong>+$8.98</strong></td></tr></tbody></table></div>

<div class="fee-panel fee-p-3m" role="tabpanel" aria-label="3M events per month"><table class="fee-table"><thead><tr><th>Line</th><th>Google metered path<br>Worker → Pub/Sub → Workflows → BigQuery</th><th class="fee-n">$ / mo</th><th>Xano + Cloudflare fixed path<br>Worker → BigQuery, Xano Realtime</th><th class="fee-n">$ / mo</th></tr></thead><tbody><tr class="fee-group"><td colspan="5">Same in both</td></tr><tr class="fee-same"><td><strong>Cloudflare Worker</strong><br><small>front door and permissions boundary · $5 minimum, 10M requests, then $0.30/M</small></td><td>Worker publishes to Pub/Sub</td><td class="fee-n">$5.00</td><td>Worker writes to BigQuery directly</td><td class="fee-n">$5.00</td></tr><tr class="fee-same"><td><strong>BigQuery ingest</strong><br><small>Storage Write API · $0.01 per 200 MiB</small></td><td>Workflows writes rows</td><td class="fee-n">$0.15</td><td>Worker writes rows</td><td class="fee-n">$0.15</td></tr><tr class="fee-same"><td><strong>Xano Essential</strong><br><small>record of identity and consent · annual billing</small></td><td>still needed</td><td class="fee-n">$85.00</td><td>includes Realtime sockets</td><td class="fee-n">$85.00</td></tr><tr class="fee-group"><td colspan="5">Only in the Google path</td></tr><tr><td><strong>Socket / transport</strong><br><small>publish + 1 subscription</small></td><td>Pub/Sub · $40/TiB after 10 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>Xano Realtime, inside the plan <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Orchestration</strong><br><small>per-event processing</small></td><td>Workflows · 3 steps, $0.01 per 1,000 after 5,000 <span class="fee-tag fee-m">metered</span></td><td class="fee-n fee-hot">$89.95</td><td>runs inside the Worker <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Egress</strong><br><small>one callback per event to Xano or a Worker</small></td><td>Premium Tier · $0.12/GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0.34</td><td>Cloudflare charges none <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr class="fee-group"><td colspan="5">Monitoring</td></tr><tr><td><strong>Traces</strong><br><small>5 spans per event</small></td><td>Cloud Trace · $0.20/M after 2.5M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$2.50</td><td>not used; Xano request history is included <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Logs</strong><br><small>1 entry per event, ~1 KiB</small></td><td>Cloud Logging · $0.50/GiB after 50 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>Workers Logs · $0.60/M after 20M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Metrics</strong><br><small>standard platform metrics only</small></td><td>Cloud Monitoring · Google Cloud metrics free</td><td class="fee-n">$0</td><td>Workers analytics, included</td><td class="fee-n">$0</td></tr><tr class="fee-total"><td><strong>Total per month</strong></td><td></td><td class="fee-n">$183</td><td></td><td class="fee-n">$90.15</td></tr><tr><td><strong>Difference</strong></td><td colspan="3">what the Google path costs on top, for fan-out and replay that nothing uses today</td><td class="fee-n"><strong>+$92.79</strong></td></tr></tbody></table></div>

<div class="fee-panel fee-p-30m" role="tabpanel" aria-label="30M events per month"><table class="fee-table"><thead><tr><th>Line</th><th>Google metered path<br>Worker → Pub/Sub → Workflows → BigQuery</th><th class="fee-n">$ / mo</th><th>Xano + Cloudflare fixed path<br>Worker → BigQuery, Xano Realtime</th><th class="fee-n">$ / mo</th></tr></thead><tbody><tr class="fee-group"><td colspan="5">Same in both</td></tr><tr class="fee-same"><td><strong>Cloudflare Worker</strong><br><small>front door and permissions boundary · $5 minimum, 10M requests, then $0.30/M</small></td><td>Worker publishes to Pub/Sub</td><td class="fee-n">$11.00</td><td>Worker writes to BigQuery directly</td><td class="fee-n">$11.00</td></tr><tr class="fee-same"><td><strong>BigQuery ingest</strong><br><small>Storage Write API · $0.01 per 200 MiB</small></td><td>Workflows writes rows</td><td class="fee-n">$1.46</td><td>Worker writes rows</td><td class="fee-n">$1.46</td></tr><tr class="fee-same"><td><strong>Xano Essential</strong><br><small>record of identity and consent · annual billing</small></td><td>still needed</td><td class="fee-n">$85.00</td><td>includes Realtime sockets</td><td class="fee-n">$85.00</td></tr><tr class="fee-group"><td colspan="5">Only in the Google path</td></tr><tr><td><strong>Socket / transport</strong><br><small>publish + 1 subscription</small></td><td>Pub/Sub · $40/TiB after 10 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$1.84</td><td>Xano Realtime, inside the plan <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Orchestration</strong><br><small>per-event processing</small></td><td>Workflows · 3 steps, $0.01 per 1,000 after 5,000 <span class="fee-tag fee-m">metered</span></td><td class="fee-n fee-hot">$900</td><td>runs inside the Worker <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Egress</strong><br><small>one callback per event to Xano or a Worker</small></td><td>Premium Tier · $0.12/GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$3.43</td><td>Cloudflare charges none <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr class="fee-group"><td colspan="5">Monitoring</td></tr><tr><td><strong>Traces</strong><br><small>5 spans per event</small></td><td>Cloud Trace · $0.20/M after 2.5M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$29.50</td><td>not used; Xano request history is included <span class="fee-tag fee-f">flat fee</span></td><td class="fee-n">$0</td></tr><tr><td><strong>Logs</strong><br><small>1 entry per event, ~1 KiB</small></td><td>Cloud Logging · $0.50/GiB after 50 GiB <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$0</td><td>Workers Logs · $0.60/M after 20M <span class="fee-tag fee-m">metered</span></td><td class="fee-n">$6.00</td></tr><tr><td><strong>Metrics</strong><br><small>standard platform metrics only</small></td><td>Cloud Monitoring · Google Cloud metrics free</td><td class="fee-n">$0</td><td>Workers analytics, included</td><td class="fee-n">$0</td></tr><tr class="fee-total"><td><strong>Total per month</strong></td><td></td><td class="fee-n">$1,032</td><td></td><td class="fee-n">$103</td></tr><tr><td><strong>Difference</strong></td><td colspan="3">what the Google path costs on top, for fan-out and replay that nothing uses today</td><td class="fee-n"><strong>+$929</strong></td></tr></tbody></table></div></div></div>

In words: at 30M events a month the Google metered path costs about $1,032 and the Xano + Cloudflare fixed path about $103, a difference of $929. The largest single line is Workflows orchestration at about $900, priced at $0.01 per 1,000 steps. The Pub/Sub socket itself is only about $1.84, egress about $3.43 and Cloud Trace about $29.50. At 3M events the totals are about $183 against $90, and at 300k events about $99 against $90. The Cloudflare Worker, BigQuery ingest and the $85 Xano Essential plan cost the same on both paths.

Illustrative, not measured: ~300-byte events billed at the 1 KiB minimum, 3 Workflows steps per event, 1 log entry and 5 spans per event, one callback per event. Xano Essential is paid in both paths.


The question this answers

Google's agent monitoring dashboard asks to enable four services before it shows anything: cloudtrace.googleapis.com, monitoring.googleapis.com, logging.googleapis.com and bigquery.googleapis.com. Each is free up to an allotment and billed by volume after it. Cloudflare begins billing Worker traces on 1 October 2026. Xano bills a fixed fee.

What will monitoring cost at our traffic, and which settings decide it?


Vocabulary

TermMeansIs not
Log entryOne structured record of something that happened: a request, an error, a decisionA trace. A log says what; it does not link steps across services
SpanOne timed step inside a request, such as a database call or an outbound fetchA request. One request usually produces several spans
TraceThe spans of one request, linked end to endA log. Traces are billed per span, not per request
IngestionWriting an entry or span into the vendor's store. This is the billed momentQuerying. Neither Google Log Analytics nor Workers Logs bills per query
RetentionHow long stored entries are keptFree by default. Google bills past 30 days; Cloudflare keeps 7 days on the paid plan and no longer
SamplingKeeping a fixed share of requests, such as 1 in 10Filtering. Sampling is random; a rare failure can be sampled away
ExclusionA rule that drops matching entries before ingestion, so they are never billedDeletion. An excluded entry was never stored and cannot be recovered
Observability eventCloudflare's billing unit: one log line or one spanA request. From 1 October 2026, a request with five spans and one log is six events

The rate card

Google Cloud

ServicePriceFree each monthScope of the free allotment
Cloud Logging, ingestion$0.50 per GiB, includes 30 days of storage50 GiBper project
Cloud Logging, retention$0.01 per GiB-month past 30 daysnoneper project
Cloud Logging, _Required bucket$0, fixed 400-day retentionallaudit logs only; cannot be disabled
Cloud Trace$0.20 per million spans2.5 million spansper billing account
Cloud Monitoring$0.2580 per MiB, $0.1510 above 100 GiB, $0.0610 above 250 GiB150 MiBper billing account
Cloud Monitoring, standard Google Cloud metrics$0allbuilt-in platform metrics
Log routing, Log Analytics queries$0——

Spans generated automatically by App Engine Standard, Cloud Run and Cloud Run functions are not charged. Spans an application sends itself are.

Cloudflare Workers

LinePrice on Workers PaidRetentionStatus on 16 September 2026
Workers Logs20 million events included, then $0.60 per million7 daysBilled
Workers TracesEach span is one event, from the same 20 million and at the same price7 daysFree in beta; billed from 1 October 2026
Workers analyticsIncluded—Included

The 20 million events are shared by logs and traces. Turning tracing on uses up the allowance that logging had to itself.

Xano

LinePriceWhat it leaves out
Request historyPart of the plan fee (Essential $85 a month on annual billing). No volume line on the pricing pageDistributed tracing across services. Xano sees its own requests, not the Worker or Shopify steps around them

Worked example: one month, three volumes

Illustrative, not measured. Assumes one log entry of about 1 KiB and five spans per request, no sampling and no exclusions.

Requests / monthGoogle LoggingGoogle TraceGoogle totalWorkers Logs onlyWorkers Logs + Traces (after 1 Oct)Xano
300,000$0$0$0$0$0in plan
3,000,000$0$2.50$2.50$0$0in plan
30,000,000$0$29.50$29.50$6.00$96.00in plan

Read the last row carefully. At 30 million requests, Cloudflare tracing costs about three times Google tracing. Cloudflare prices a span at $0.60 per million against Google's $0.20, and a span shares the allowance a log line would otherwise use. "No egress" does not mean "cheaper for everything".

Log size moves the Google side instead. At 10 KiB per entry, which is realistic for an AI agent conversation that logs prompts and tool calls, 30 million requests is about 286 GiB. That is $118 a month for Cloud Logging, and nothing extra on Cloudflare, which bills per event regardless of size up to 256 KB.


The four settings that decide the bill

  1. Sampling rate. On Cloudflare, observability.head_sampling_rate takes a value from 0 to 1. At 0.1, 30 million requests become 3 million events, inside the included allowance. On Google, the trace sampler in the client library does the same for spans.
  2. Exclusion filters. On Google, an exclusion on the _Default sink drops health checks, static asset requests and debug output before they are billed. Exclusions are the only lever that lowers ingestion without lowering sampling.
  3. Retention. Keep _Default at 30 days unless a named obligation requires longer. Past 30 days, Google bills $0.01 per GiB-month, and every extra month of stored logs is another month of stored personal data.
  4. Whether tracing is on at all. A trace is worth its fee while a request crosses several services and something is being diagnosed. Left on permanently at 100%, it is the line that grows fastest after 1 October 2026.

What it costs to keep the bill low

ChoiceWhat it gives upSeverity
Sample at 10%A failure that happens once in 10,000 requests is recorded about once in 100,000Medium: pair with an unsampled error log
Exclude noisy logsExcluded entries cannot be recovered after an incidentMedium: exclude by path, never by severity
Keep 7 or 30 daysAn incident found after the window has no logs to investigateMedium: route the audit trail somewhere with a longer, deliberate retention
Leave tracing offSlow requests show up as slow, with no evidence of which step was slowLow while traffic is low; rises with every service added
Rely on Xano request historyNo view of the Worker, Shopify or Google steps around a Xano callLow for Xano bugs; high for bugs that span services

Logs are personal data

A log entry that records a customer id, an email address, an IP address or a prompt holds personal data. Retention is then a GDPR question as well as a billing one: storage limitation requires keeping it no longer than its purpose needs, and an erasure request covers it. Two consequences:


What to do next

Ordered by deadline.

  1. Before 1 October 2026: decide Worker tracing. Leave it unconfigured, or set head_sampling_rate below 1 before enabling traces. Owner: platform engineer.
  2. Set a sampling rate on any Worker that logs every request. observability.enabled: true with no rate means 100%. Owner: platform engineer.
  3. Before pressing "Enable all" on Google's agent monitoring: add a _Default exclusion for health checks and static assets, and a budget alert on the project. Owner: Google Cloud project owner.
  4. Compare each Worker's dashboard logging setting with its configuration file. A setting changed in the dashboard is not in configuration, and the first invoice shows it before any review does. Owner: platform engineer.
  5. After 30 days, replace this page's illustrative volumes with the billed quantities from both invoices. Owner: business analyst.

What this document does not claim

This is a price comparison at list rates, not a bill. The volumes are assumptions and are marked as such. Rates were read from each vendor's pricing page on 16 September 2026 and change without notice. The Cloudflare trace billing date is Cloudflare's own announcement. Xano's pricing page lists no logging or tracing line, so none is assumed. This is not legal advice on retention periods.

Sources