<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe" -->

---
title: CEL interpolation comes to Traffic Policy | daily.dev
description: CEL Interpolation is a feature in ngrok's Traffic Policy engine that lets developers embed dynamic variables and expressions using ${CEL} syntax directly into...
canonical: https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: CEL interpolation comes to Traffic Policy | daily.dev
og:description: CEL Interpolation is a feature in ngrok's Traffic Policy engine that lets developers embed dynamic variables and expressions using ${CEL} syntax directly into...
og:url: https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe
og:image: https://api.daily.dev/og/posts/cDAZfnFPE.png
og:image:alt: CEL interpolation comes to Traffic Policy
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# CEL interpolation comes to Traffic Policy

**[ngrok Blog](https://daily.dev/sources/ngrok)** · 3 min read · 0 upvotes · 0 comments

## Summary

CEL Interpolation is a feature in ngrok's Traffic Policy engine that lets developers embed dynamic variables and expressions using ${CEL} syntax directly into policy action configurations. Expressions are evaluated at runtime, allowing responses and headers to be customized based on request data, such as inserting the User-Agent into a custom 401 response or using CEL functions like split and join to manipulate lists into formatted header values. Interpolation is only supported in specific action fields, so developers should check documentation per action.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://ngrok.com/blog/cel-interpolation>

## Questions this post answers

### How do I use CEL interpolation in ngrok Traffic Policy to insert request data into a response?

Embed CEL expressions inside ${} placeholders in supported action configuration fields, and ngrok evaluates them at runtime. For example, ${req.user_agent} in a custom response action inserts the value of the User-Agent request header into the response body or headers dynamically.

_daily.dev surfaces practical guides like this for teams wiring dynamic API gateway policies._

### Can I use functions like join or split inside ngrok CEL interpolation expressions?

Yes, ngrok's CEL interpolation treats everything inside curly brackets as a CEL expression, so functions such as split and join are usable. For instance, join can combine values from header1 and header2 with a value1 string into a single comma-separated custom header when the request method is GET.

_Developers evaluating CEL-based policy engines can track these capabilities on daily.dev._

## Similar posts on daily.dev

- [Building a native C\# implementation of CEL engine](https://daily.dev/posts/building-a-native-c-implementation-of-cel-engine-wk392nkpt) · Hacker News · 0 upvotes · 0 comments
- [Google Open-Sources the Common Expression Language for Python](https://daily.dev/posts/google-open-sources-the-common-expression-language-for-python-nc2x0hyw3) · InfoQ · 1 upvotes · 0 comments
- [Securing the agentic era: Introducing formal verification for CEL](https://daily.dev/posts/securing-the-agentic-era-introducing-formal-verification-for-cel-fpythtftu) · Google Open Source Blog · 1 upvotes · 0 comments
- [From Static Rules to Dynamic Intent: Network Policy with Cilium matchExpressions](https://daily.dev/posts/from-static-rules-to-dynamic-intent-network-policy-with-cilium-matchexpressions-qfjdzqjnf) · Isovalent · 1 upvotes · 0 comments
- [A Developer's Guide to Flexible Token Exchange on Auth0](https://daily.dev/posts/a-developer-s-guide-to-flexible-token-exchange-on-auth0-w6cqcligm) · Auth0 · 0 upvotes · 0 comments

---

Tags: [#devtools](https://daily.dev/tags/devtools), [#api-gateway](https://daily.dev/tags/api-gateway)

[View this post on daily.dev](https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"CEL interpolation comes to Traffic Policy","url":"https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe"},"datePublished":"2026-08-23T07:20:40.085Z","dateModified":"2026-08-23T07:24:49.955Z","description":"CEL Interpolation is a feature in ngrok's Traffic Policy engine that lets developers embed dynamic variables and expressions using ${CEL} syntax directly into...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/37491dd7556638d8830410ced116bd4b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/37491dd7556638d8830410ced116bd4b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"ngrok Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"ngrok Blog","logo":"https://media.daily.dev/image/upload/s--718XXxvE--/f_auto,q_auto/v1787469610/logos/ngrok?_a=BAMAMicg0","url":"https://daily.dev/sources/ngrok"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"devtools,api-gateway","timeRequired":"PT3M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"ngrok Blog","item":"https://daily.dev/sources/ngrok"},{"@type":"ListItem","position":3,"name":"CEL interpolation comes to Traffic Policy"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/cel-interpolation-comes-to-traffic-policy-cdazfnfpe#faq","mainEntity":[{"@type":"Question","name":"How do I use CEL interpolation in ngrok Traffic Policy to insert request data into a response?","acceptedAnswer":{"@type":"Answer","text":"Embed CEL expressions inside ${} placeholders in supported action configuration fields, and ngrok evaluates them at runtime. For example, ${req.user_agent} in a custom response action inserts the value of the User-Agent request header into the response body or headers dynamically. daily.dev surfaces practical guides like this for teams wiring dynamic API gateway policies."}},{"@type":"Question","name":"Can I use functions like join or split inside ngrok CEL interpolation expressions?","acceptedAnswer":{"@type":"Answer","text":"Yes, ngrok's CEL interpolation treats everything inside curly brackets as a CEL expression, so functions such as split and join are usable. For instance, join can combine values from header1 and header2 with a value1 string into a single comma-separated custom header when the request method is GET. Developers evaluating CEL-based policy engines can track these capabilities on daily.dev."}}]}
```

