For the complete documentation index, see llms.txt. This page is also available as Markdown.

Pre-Process Hooks

Short-circuit requests before the main integration when policy checks or custom gating logic must run first. The `pre_process` field on a path entry calls a

Short-circuit requests before the main integration when policy checks or custom gating logic must run first. The pre_process field on a path entry calls a service binding function before the main integration. If the hook returns a Response, the gateway sends it immediately without calling the main integration.

Last reviewed: 2026-03-06

When to use this

Use the service execution recipes when your routes need to call Worker code directly instead of proxying to an external HTTP endpoint. The gateway supports two patterns: local service modules bundled with the worker, and service bindings that call separately deployed Workers via Cloudflare bindings.

Key concepts

  • The service integration type imports a local JavaScript module from the worker project and calls its default export. The module ships in the same worker bundle.

  • The service_binding integration type calls a separately deployed Worker through a Cloudflare service binding. The target Worker must be deployed independently and bound in wrangler.toml.

  • Pre-process hooks run before the main integration and can short-circuit the request by returning a response. Use them for custom authorization, input validation, or request enrichment.

  • Post-process hooks run after the main integration returns and can modify the response. The Auth0 callback post-process hook is the most common use case.

  • When choosing between proxy and service execution, consider latency (service bindings avoid an external HTTP round-trip) and coupling (proxy keeps the backend independently deployable).

Repo-grounded example

{
  "serviceBindings": [
    { "alias": "hooks", "binding": "HOOKS" },
    { "alias": "target", "binding": "TARGET" }
  ],
  "paths": [
    {
      "method": "POST",
      "path": "/orders",
      "pre_process": { "binding": "hooks", "function": "before" },
      "integration": {
        "type": "service_binding",
        "binding": "target",
        "function": "run"
      }
    }
  ]
}

This snippet adds a pre_process hook that calls the before function on the hooks service binding. If before returns a Response (e.g., a 403 Forbidden), the gateway returns it directly. If it returns nothing, the request continues to the target integration.

Troubleshooting

  • If a service integration returns 500, confirm that the entrypoint path in the services array matches the actual file location relative to the worker root and that the module exports a default function.

  • If a service_binding integration returns a binding error, verify that the binding name in config matches the binding declared in wrangler.toml and that the target Worker is deployed.

  • If a pre-process hook does not short-circuit as expected, check that the hook function returns a Response object -- returning undefined or null lets the request continue to the main integration.

  • If post-process hooks are not running, confirm the hook config uses the correct binding and function field names and that the hook Worker is deployed and bound.

Last updated