By Greg Nowak. Updated 26 September 2026.
Cloudflare Workers often arrive as sensible, contained fixes: validate a webhook, repair campaign redirects, reshape form data or put a cleaner interface in front of an awkward API. The code may be small, but the business dependency rarely stays small.
A few months later, that Worker can sit between your website and a CRM, payment service or fulfilment platform. It has credentials, routes and failure modes, yet nobody can confidently say who owns it or what happens when it stops. That is the point at which useful integration glue becomes shadow IT.
You do not need a heavyweight governance programme. You need an integration register: a short, maintained record connecting each production Worker to its purpose, configuration, owner and recovery plan.
When should a Worker enter the register?
Register a Worker when it accepts external events, changes customer-facing behaviour, calls another system, handles credentials or affects business records. A 40-line lead-routing Worker is still a production application component if enquiries disappear when it fails.
Start with the workflow, not the script name. “Website lead intake” tells an operations lead more than form-proxy-prod. It also exposes the consequence of failure: lost enquiries, delayed orders, incorrect attribution or an undocumented change in the customer journey.
Record every entry point. For HTTP traffic, Cloudflare currently distinguishes Custom Domains, where the Worker acts as the origin; Routes, where it runs in front of an existing origin; and workers.dev. Cloudflare recommends a Route or Custom Domain for production rather than a workers.dev address. Also capture scheduled triggers, queues, service bindings and other event sources.
What belongs in a useful integration register?
| Area | Record this | Review it when |
|---|---|---|
| Business purpose | Workflow, affected users, criticality and acceptable interruption | The process or supplier changes |
| Entry points | Routes, Custom Domains, schedules, queues and callers | DNS, traffic or trigger configuration changes |
| Dependencies | APIs, origins, service bindings, KV, D1, R2 and queues | An API, binding or data model changes |
| Credentials | Secret names, purpose, owning system and rotation owner—never secret values | Access changes or credentials rotate |
| Delivery | Repository, Wrangler configuration, environments and approval path | Every production release |
| Operations | Logs, alerts, expected failures and safe correlation identifiers | An incident or material traffic increase |
| Recovery | Known-good version, rollback steps and incompatible resource changes | Bindings, schemas or storage change |
Name both a business owner and a technical maintainer. The owner decides whether the workflow is still required and how much downtime is acceptable. The maintainer can test, deploy and diagnose it. One person may hold both roles, but the two responsibilities should remain explicit—especially when an agency maintains the code for a client.
How to audit the Workers you already have
Begin with the Cloudflare account, then compare it with the repositories your team considers authoritative. Do not assume they match. Dashboard changes, abandoned experiments and Workers deployed from a former supplier’s machine are exactly what the audit should uncover.
From a repository-backed Worker, these current Wrangler commands provide a useful snapshot:
npx wrangler deployments list --json
npx wrangler deployments status --json
npx wrangler secret list --format jsonRun them for each environment and Worker; use Wrangler’s --name or --env options where appropriate. The secret command returns names and types, not values, which is what an inventory needs. Sensitive values belong in secrets, not plaintext Wrangler variables.
You can also declare expected names under secrets.required in Wrangler configuration. Current Wrangler versions validate those requirements during development and deployment, failing a deployment if a required secret is absent. This is a valuable technical control, but the register must still explain the secret’s purpose and who rotates it.
Next, trace each entry point from caller to destination. Ask four practical questions: How is the request authenticated? What does the Worker change? What happens when a dependency times out? Can the caller safely retry? Test the unhappy path deliberately. A webhook that returns success after a failed CRM write is more dangerous than one that fails visibly.
Finally, compare deployed settings with version control. Routes, bindings, compatibility settings and observability should be reproducible from the Wrangler configuration. If an important setting exists only in someone’s dashboard knowledge, record and reconcile it rather than quietly treating the dashboard as documentation.
Make logging explain the business failure
Logs should answer “what happened to this order, lead or event?” without storing full payloads, credentials or unnecessary personal data. Useful structured fields can include a correlation ID, event type, validation result, downstream service, response status and elapsed time.
Workers Logs can index structured JSON fields, making them easier to filter than values buried in message strings. Head-based sampling controls volume, but choose it according to the workflow. Sampling a high-volume redirect service may be reasonable; missing the only log for a low-volume, high-value integration may not be. Put the sampling decision in the register so responders know what an absent event means.
Application logs and Cloudflare Audit Logs answer different questions. Application logs show what code did with a request. Audit Logs show account activity and resource changes initiated through Cloudflare interfaces or systems. Neither replaces the register’s explanation of business purpose and accountability.
A rollback command is not a recovery plan
Cloudflare can roll a Worker back with npx wrangler rollback or through the dashboard, but connected storage and platform resources do not roll back with its code. Older code may be unusable after a KV namespace, R2 bucket or queue is removed, or after stored data changes shape. Cloudflare also limits rollback eligibility in some binding and Durable Object lifecycle scenarios.
For every important Worker, identify a known-good version and state which resources must remain compatible. Rehearse recovery after meaningful binding or schema changes. “Click rollback” is not a plan unless the earlier version can still run safely.
Keep the register useful, not ceremonial
Store the register where delivery and operations teams already work. Update it whenever someone adds a route, trigger, binding, credential or production dependency. Review critical entries after incidents and before an employee or agency leaves. A small, accurate register is far more valuable than an elaborate inventory nobody trusts.
If years of quick fixes have left your Workers estate difficult to explain, Greg can help map the workflows, dependencies, owners and recovery gaps and turn them into a maintenance plan your team can use.
Related on GrN.dk
- When Google can call the business, your local data stops being cosmetic
- Cloudflare Service Keys Stop in September: Find Every Caller
- OpenAI Computer Use: Browser Agents Need Credentials, Not Demos
Need help with this kind of work?
Ask Greg about a Cloudflare Workers review Get in touch with Greg.