You can have shared flows perform boilerplate request pre-processing or response
post-processing across a set of APIs. With a flow hook, you attach a shared flow so that
it executes at the same place for all API proxies deployed to a specific environment. This gives
you a separately implemented and deployed sequence of logic that is not part of a proxy's
implementation code.
Because code attached to a flow hook is outside the context of the API proxy core logic, some
of its behavior differs from API proxies. Keep the following in mind:
You must have permission to attach a shared flow to a flow hook. You must be an org
admin.
You can attach only one shared flow to each flow hook.
You can attach the same shared flow to multiple flow hooks.
If a shared flow attached to a flow hook raises a fault or there are errors during shared
flow execution, the message will be rejected and fault will be sent back to the caller.
If a message gets rejected during execution of a flow hook, details will be logged to
analytics in the context of the called proxy. The shared flow can also throw a fault with a
custom code and error message
The following video demonstrates how to connect a shared flow to a flow hook, then trace it,
in the Apigee UI.
A shared flow attached to a proxy via a flow hook provides a great place for logic that
enforces broad policy requirements. For example, imagine that you have one team managing a single
set of security requirements for multiple teams that represent different lines of businesses
(LOBs). Each LOB team can develop APIs according to their own requirements, and without needing
to account for the broader security requirements. The security team can implement those security
requirements in a shared flow, then attach the flow to the Apigee environment using a flow
hook. Because the shared flow isn't part of proxy code, the security team can revise it as needed
without interfering with LOB code.
Shared flows attached via flow hooks execute at that position for every API proxy deployed
to the proxy hook's environment. For this reason, the ability to use flow hooks is available
only to administrators of an Apigee organization.
You attach a shared flow to a flow hook using the Apigee UI or Flowhooks API. You can
attach at most one shared flow to a flow hook at each of the following places:
Pre-proxy flow hook for logic that needs to be enforced BEFORE a proxy endpoint
executes.
For example, you could have logic for enforcing security across all the APIs in an
environment.
Pre-target flow hook for logic that needs to be enforced BEFORE a target endpoint
executes.
For example, you could implement logging before the request reaches the backend. You could
also enforce mediation by removing certain fields from the request.
Post-target flow hook for logic that needs to be enforced AFTER the target response
executes.
This will be enforced right after the response comes back from the backend. You can use it
to log the backend response or perform some mediation by removing sensitive fields from the
backend response.
Post-proxy flow hook for logic that needs to be enforced AFTER the proxy endpoint and
right before the response is sent out to the client.
This could include some enforcement logic for CORS, logging the response, or performing
some mashup or formatting.
Attaching a shared flow to a flow hook
To attach a shared flow to a flow hook, you must be an administrator in the organization
containing the shared flow.
Apigee in Cloud console
To attach a shared flow to a flow hook:
In the Google Cloud console, go to the Management > Environments page.
The shared flow will be available to any API proxies and shared flows deployed to an
environment from this organization. It won't be available from outside this organization.
Select the environment you wish to edit from the list of available environments.
Click the Flow hooks tab on the Environment details page.
The Flow hooks view displays.
In the list of flow hooks, identify the flow hook to which you want to attach the shared flow.
The flow hook you choose depends upon where you want the shared flow to be executed.
Flow hook location
Description
Pre-proxy
Executes before a proxy endpoint executes
Pre-target
Executes before a target endpoint executes
Post-target
Executes after the target response executes
Post-proxy
Executes after the proxy endpoint and right before the response is sent out to the
client
In the list box of the flow hook you chose, select the shared flow that you want to attach.
Attach shared flows to other flow hooks as needed.
Click Save to attach the selected shared flows to the flow hooks.
The shared flow will be available to any API proxies and shared flows deployed to an
environment from this organization. It won't be available from outside this organization.
Select Admin > Environments > Flow hooks in the left navigation bar.
The Flow hooks view displays:
From the environment drop-down list, select the environment that you want to modify.
In the list of flow hooks, identify the flow hook to which you want to attach the shared flow.
The flow hook you choose depends upon where you want the shared flow to be executed.
Flow hook location
Description
Pre-proxy
Executes before a proxy endpoint executes
Pre-target
Executes before a target endpoint executes
Post-proxy
Executes after the proxy endpoint and right before the response is sent out to the
client
Post-target
Executes after the target response executes
Position your cursor over the flow hook in the list to display the actions column.
Click createEdit.
In the Shared Flow dialog, select the shared flow that you want to attach in the
Shared flow menu.
Click OK.
Attach shared flows to other flow hooks as needed.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-26 UTC."],[[["\u003cp\u003eThis content explains how to use flow hooks in Apigee and Apigee hybrid to attach shared flows for pre-processing or post-processing across multiple APIs.\u003c/p\u003e\n"],["\u003cp\u003eFlow hooks allow administrators to attach a shared flow to execute at specific points (pre-proxy, pre-target, post-target, post-proxy) in every API proxy deployed to a given environment.\u003c/p\u003e\n"],["\u003cp\u003eAttaching a shared flow to a flow hook is done through the Apigee UI or Flowhooks API, and it requires organization administrator permissions.\u003c/p\u003e\n"],["\u003cp\u003eA shared flow attached to a flow hook executes outside the core API proxy logic, allowing for the centralized management of policies like security or logging that applies to multiple APIs.\u003c/p\u003e\n"],["\u003cp\u003eThe attached shared flows to flow hooks can throw faults with custom messages, if any error occurs during execution, and are logged in the context of the calling proxy.\u003c/p\u003e\n"]]],[],null,["*This page\napplies to **Apigee** and **Apigee hybrid**.*\n\n\n*View [Apigee Edge](https://docs.apigee.com/api-platform/get-started/what-apigee-edge) documentation.*\n\nYou can have shared flows perform boilerplate request pre-processing or response\npost-processing across a set of APIs. With a *flow hook*, you attach a shared flow so that\nit executes at the same place for all API proxies deployed to a specific environment. This gives\nyou a separately implemented and deployed sequence of logic that is not part of a proxy's\nimplementation code.\n| **Note:** Attaching a shared flow to a flow hook is an action that has a very broad effect. The attached shared flow will execute at the flow hook's point **for every proxy deployed to that environment**.\n\nBecause code attached to a flow hook is outside the context of the API proxy core logic, some\nof its behavior differs from API proxies. Keep the following in mind:\n\n- You must have permission to attach a shared flow to a flow hook. You must be an org admin.\n- You can attach only one shared flow to each flow hook.\n- You can attach the same shared flow to multiple flow hooks.\n- If a shared flow attached to a flow hook raises a fault or there are errors during shared flow execution, the message will be rejected and fault will be sent back to the caller.\n- If a message gets rejected during execution of a flow hook, details will be logged to analytics in the context of the called proxy. The shared flow can also throw a fault with a custom code and error message\n\n| **Note:** This video was recorded with a previous version of the Apigee UI; however, the concepts are still valid.\n\nThe following video demonstrates how to connect a shared flow to a flow hook, then trace it,\nin the Apigee UI.\n\nA shared flow attached to a proxy via a flow hook provides a great place for logic that\nenforces broad policy requirements. For example, imagine that you have one team managing a single\nset of security requirements for multiple teams that represent different lines of businesses\n(LOBs). Each LOB team can develop APIs according to their own requirements, and without needing\nto account for the broader security requirements. The security team can implement those security\nrequirements in a shared flow, then attach the flow to the Apigee environment using a flow\nhook. Because the shared flow isn't part of proxy code, the security team can revise it as needed\nwithout interfering with LOB code.\n\nShared flows attached via flow hooks execute at that position for **every API proxy deployed\nto the proxy hook's environment**. For this reason, the ability to use flow hooks is available\nonly to administrators of an Apigee organization.\n\nFor more about shared flows, see\n[Creating reusable shared flows](/apigee/docs/api-platform/fundamentals/shared-flows).\n\nYou attach a shared flow to a flow hook using the Apigee UI or [Flowhooks API](/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.flowhooks). You can\nattach at most one shared flow to a flow hook at each of the following places:\n\n- **Pre-proxy flow hook** for logic that needs to be enforced BEFORE a proxy endpoint\n executes.\n\n For example, you could have logic for enforcing security across all the APIs in an\n environment.\n- **Pre-target flow hook** for logic that needs to be enforced BEFORE a target endpoint\n executes.\n\n For example, you could implement logging before the request reaches the backend. You could\n also enforce mediation by removing certain fields from the request.\n-\n **Post-target flow hook** for logic that needs to be enforced AFTER the target response\n executes.\n\n This will be enforced right after the response comes back from the backend. You can use it\n to log the backend response or perform some mediation by removing sensitive fields from the\n backend response.\n- **Post-proxy flow hook** for logic that needs to be enforced AFTER the proxy endpoint and\n right before the response is sent out to the client.\n\n This could include some enforcement logic for CORS, logging the response, or performing\n some mashup or formatting.\n\nAttaching a shared flow to a flow hook\n\nTo attach a shared flow to a flow hook, you must be an administrator in the organization\ncontaining the shared flow.\n**Note:** Attaching a shared flow to a flow hook is an action that has a very broad effect. The attached shared flow will execute at the flow hook's point **for every proxy deployed to that environment**. \n\nApigee in Cloud console\n\nTo attach a shared flow to a flow hook:\n\n1. In the Google Cloud console, go to the **Management \\\u003e Environments** page.\n\n [Go to Environments](https://console.cloud.google.com/apigee/environments)\n2. Select the organization containing your shared flow. See [Switching between your organizations](/apigee/docs/api-platform/get-started/switch-org).\n\n The shared flow will be available to any API proxies and shared flows deployed to an\n environment from this organization. It won't be available from outside this organization.\n3. Select the environment you wish to edit from the list of available environments.\n4. Click the **Flow hooks** tab on the **Environment details** page.\n\n The **Flow hooks** view displays.\n5. In the list of flow hooks, identify the flow hook to which you want to attach the shared flow. The flow hook you choose depends upon where you want the shared flow to be executed.\n\n | Flow hook location | Description |\n |--------------------|---------------------------------------------------------------------------------------------|\n | Pre-proxy | Executes *before* a proxy endpoint executes |\n | Pre-target | Executes *before* a target endpoint executes |\n | Post-target | Executes *after* the target response executes |\n | Post-proxy | Executes *after* the proxy endpoint and right before the response is sent out to the client |\n\n6. In the list box of the flow hook you chose, select the shared flow that you want to attach.\n7. Attach shared flows to other flow hooks as needed.\n8. Click **Save** to attach the selected shared flows to the flow hooks.\n\nClassic Apigee\n\nTo attach a shared flow to a flow hook:\n\n1. Sign in to [Apigee UI](https://apigee.google.com).\n2. Select the organization containing your shared flow. See [Switching between your organizations](/apigee/docs/api-platform/get-started/switch-org).\n\n The shared flow will be available to any API proxies and shared flows deployed to an\n environment from this organization. It won't be available from outside this organization.\n3. Select **Admin \\\u003e Environments \\\u003e Flow hooks** in the left navigation bar.\n\n The **Flow hooks** view displays:\n\n4. From the environment drop-down list, select the environment that you want to modify.\n5. In the list of flow hooks, identify the flow hook to which you want to attach the shared flow. The flow hook you choose depends upon where you want the shared flow to be executed.\n\n | Flow hook location | Description |\n |--------------------|---------------------------------------------------------------------------------------------|\n | Pre-proxy | Executes *before* a proxy endpoint executes |\n | Pre-target | Executes *before* a target endpoint executes |\n | Post-proxy | Executes *after* the proxy endpoint and right before the response is sent out to the client |\n | Post-target | Executes *after* the target response executes |\n\n6. Position your cursor over the flow hook in the list to display the actions column.\n7. Click create **Edit**.\n8. In the **Shared Flow** dialog, select the shared flow that you want to attach in the **Shared flow** menu.\n9. Click **OK**.\n10. Attach shared flows to other flow hooks as needed."]]