Before you start
You need:- a Cloudflare Enterprise zone with Logpush access;
- permission to create the Logpush job;
- a Cloudflare API token with
Logs Writepermission to apply the required upload bounds; - access to Measure > Crawler Analytics > Settings;
- a secure place to retain the one-time connector secret.
Create and protect the key
- In Crawler Analytics settings, select Cloudflare Logpush.
- Select Create Key.
- Enter a name and the IANA time zone used for daily snapshots.
- Copy the secret when it appears. Qwairy shows only its prefix later.
- Keep it in the Logpush destination header configuration. Do not place it in an ordinary query parameter, source control, or client-side code.
Create the Logpush job
- In Cloudflare, open Analytics & Logs > Logs > Add Logpush job for the target zone.
- Select the HTTP Requests dataset and an HTTP destination.
-
Use this destination configuration, replacing the placeholder with the one-time Qwairy secret:
Cloudflare converts
header_Authorizationinto an HTTP header. The space afterBearermust remain encoded as%20. -
Select only these fields:
- Keep the timestamp format as RFC 3339.
-
Before enabling the job, use the Cloudflare Logpush API to set:
The default upload size is outside Qwairy’s bounded route contract.
-
Add this job filter. It deliberately over-matches several crawler families; Qwairy’s registry performs the final classification.
- Keep sampling at 100% for the filtered dataset, then enable the job.
Test delivery
Cloudflare validates the destination with a gzip-compressed{"content":"tests"} payload. The Qwairy route accepts that challenge, but it does not create a crawler aggregate.
After validation, request a safe path on the monitored zone with a recognized crawler User-Agent:
Limits, sampling, and cost
- Each Logpush upload is limited to 5,000,000 uncompressed bytes and 10,000 records.
- The pre-filter reduces delivery volume but intentionally includes some rows that Qwairy later discards.
- A Cloudflare sampling rate below 100% produces partial Qwairy counts.
- Logpush delivery and retained provider logs may carry Cloudflare charges. Review current pricing for the target zone.
- Shared daily ingestion ceilings also apply.
Troubleshooting
- Destination validation fails: confirm the
%20encoding, current secret, HTTPS endpoint, and required upload bounds. - 401: verify that the destination still sends
Authorization: Bearer YOUR_CRAWLER_KEYand that the key belongs to Cloudflare Logpush. - 400 with too many logs: set
max_upload_recordsto10000before enabling the job. - 413: set
max_upload_bytesto5000000and check compression or decoded payload size. - Qwairy stays pending: verify the six selected fields, the User-Agent filter, 100% sampling, and a current request to the configured hostname.
- Counts are lower than Cloudflare logs: compare the same filter and sampling scope, then check Qwairy exclusions and delivery-continuity warnings.

