[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"footer-description":3,"footer-secondary":5,"footer-primary":33,"header-nav":121,"header-nav-data":260,"github-stars":262,"@directus-labs/liquidjs-operation":366,"site-banner":455,"8f849cd0-a47b-4e32-bb19-b478973c90f7":460,"74634853-196b-4ce3-b256-4534c054838f":466,"dfd79d2b-7af5-4cdb-aa94-3f73de97ebd8":495,"1b444c23-b593-4391-9410-4ca5d2c7a7cb":501,"358b0659-1f05-4427-bd1c-4bc03a43c182":507,"9df3f40e-6272-4ec6-a0d7-cc29265e087c":512},{"description":4},"\u003Cp>A composable backend to build your Headless CMS, BaaS, and more.&nbsp;\u003C/p>",{"items":6},[7,14,21,27],{"id":8,"title":9,"url":10,"page":11,"children":13},"8a1b7bfa-429d-4ffc-a650-2a5fdcf356da","Cloud Policies",null,{"permalink":12},"/cloud-policies",[],{"id":15,"title":16,"url":17,"page":18,"children":20},"bea848ef-828f-4306-8017-6b00ec5d4a0c","License","#",{"permalink":19},"/bsl",[],{"id":22,"title":23,"url":17,"page":24,"children":26},"4e914f47-4bee-42b7-b445-3119ee4196ef","Terms",{"permalink":25},"/terms",[],{"id":28,"title":29,"url":17,"page":30,"children":32},"ea69eda6-d317-4981-8421-fcabb1826bfd","Privacy",{"permalink":31},"/privacy",[],{"items":34},[35,58,78,98],{"id":36,"title":37,"url":10,"page":10,"children":38},"522e608a-77b0-4333-820d-d4f44be2ade1","Solutions",[39,44,49,54],{"id":40,"title":41,"url":10,"page":42},"fcafe85a-a798-4710-9e7a-776fe413aae5","Headless CMS",{"permalink":43},"/solutions/headless-cms",{"id":45,"title":46,"url":10,"page":47},"79972923-93cf-4777-9e32-5c9b0315fc10","Backend-as-a-Service",{"permalink":48},"/solutions/backend-as-a-service",{"id":50,"title":51,"url":10,"page":52},"0fa8d0c1-7b64-4f6f-939d-d7fdb99fc407","Product Information",{"permalink":53},"/solutions/product-information-management",{"id":55,"title":56,"url":57,"page":10},"63946d54-6052-4780-8ff4-91f5a9931dcc","100+ Things to Build","https://directus.io/blog/100-tools-apps-and-platforms-you-can-build-with-directus",{"id":59,"title":60,"url":10,"page":10,"children":61},"8ab4f9b1-f3e2-44d6-919b-011d91fe072f","Resources",[62,66,70,74],{"id":63,"title":64,"url":65,"page":10},"f951fb84-8777-4b84-9e91-996fe9d25483","Documentation","https://docs.directus.io",{"id":67,"title":68,"url":69,"page":10},"366febc7-a538-4c08-a326-e6204957f1e3","Guides","https://docs.directus.io/guides/",{"id":71,"title":72,"url":73,"page":10},"aeb9128e-1c5f-417f-863c-2449416433cd","Community","https://directus.chat",{"id":75,"title":76,"url":77,"page":10},"da1c2ed8-0a77-49b0-a903-49c56cb07de5","Release Notes","https://github.com/directus/directus/releases",{"id":79,"title":80,"url":10,"page":10,"children":81},"d61fae8c-7502-494a-822f-19ecff3d0256","Support",[82,86,90,94],{"id":83,"title":84,"url":85,"page":10},"8c43c781-7ebd-475f-a931-747e293c0a88","Issue Tracker","https://github.com/directus/directus/issues",{"id":87,"title":88,"url":89,"page":10},"d77bb78e-cf7b-4e01-932a-514414ba49d3","Feature Requests","https://github.com/directus/directus/discussions?discussions_q=is:open+sort:top",{"id":91,"title":92,"url":93,"page":10},"4346be2b-2c53-476e-b53b-becacec626a6","Community Chat","https://discord.com/channels/725371605378924594/741317677397704757",{"id":95,"title":96,"url":97,"page":10},"26c115d2-49f7-4edc-935e-d37d427fb89d","Cloud Dashboard","https://directus.cloud",{"id":99,"title":100,"url":10,"page":10,"children":101},"49141403-4f20-44ac-8453-25ace1265812","Organization",[102,107,112,116],{"id":103,"title":104,"url":105,"page":106},"1f36ea92-8a5e-47c8-914c-9822a8b9538a","About","/about",{"permalink":105},{"id":108,"title":109,"url":17,"page":110},"b84bf525-5471-4b14-a93c-225f6c386005","Careers",{"permalink":111},"/careers",{"id":113,"title":114,"url":115,"page":10},"86aabc3a-433d-434b-9efa-ad1d34be0a34","Brand Assets","https://drive.google.com/drive/folders/1lBOTba4RaA5ikqOn8Ewo4RYzD0XcymG9?usp=sharing",{"id":117,"title":118,"url":10,"page":119},"8d2fa1e3-198e-4405-81e1-2ceb858bc237","Contact",{"permalink":120},"/contact",{"items":122},[123,185,241,246,253],{"id":124,"title":125,"url":10,"callout":126,"callout_title":127,"children_title":128,"page":10,"children":129},"62c04c6c-5793-4702-8ed1-73dd563fd605","Product","8f849cd0-a47b-4e32-bb19-b478973c90f7","Project Showcase","Use Cases and Features",[130,136,142,149,154,162,170,178],{"id":131,"title":41,"url":132,"description":133,"image":10,"icon":134,"page":135},"e7d7d5ed-89b1-4455-8b4a-8ae92c70e3a0","/solutions/headless-cms/","Manage and deliver content with ease","code_blocks",{"permalink":43},{"id":137,"title":46,"url":138,"description":139,"image":10,"icon":140,"page":141},"60bdefd9-95e6-45a3-9f81-4748d07c59d3","/solutions/backend-as-a-service/","Build and ship applications faster","speed",{"permalink":48},{"id":143,"title":144,"url":145,"description":146,"image":10,"icon":147,"page":148},"5f9aebeb-4f89-445e-9850-5b1261a2743c","Headless Commerce","/solutions/product-information-management/","A single source of truth for products","shopping_cart_checkout",{"permalink":53},{"id":150,"title":151,"url":57,"description":152,"image":10,"icon":153,"page":10},"49e46134-80be-470e-8c73-afb1417fa9b6","100+ More Use Cases","Build anything (or everything)","lightbulb",{"id":155,"title":156,"url":157,"description":158,"image":10,"icon":159,"page":160},"a589ac77-a5ce-45c5-a054-e43111e19158","Instant APIs","/products/connect/","Connect a database, get REST + GraphQL APIs","api",{"permalink":161},"/toolkit/connect",{"id":163,"title":164,"url":165,"description":166,"image":10,"icon":167,"page":168},"4a0f129a-c546-4493-b0a9-306e51692e90","Granular Policy-Based Auth","/products/auth/","Provide secure, autonomous data access","lock_person",{"permalink":169},"/toolkit/auth",{"id":171,"title":172,"url":173,"description":174,"image":10,"icon":175,"page":176},"f9250f2c-93a4-4108-80db-011bbe391ecf","Visual Automation Builder","/products/automate/","Automate content and data workflows with ease","build",{"permalink":177},"/toolkit/automate",{"id":179,"title":180,"url":10,"description":181,"image":10,"icon":182,"page":183},"f1ae4e40-5b05-42a4-9cd3-33dda35cc939","50+ More Features","Get everything you need out-of-the-box","auto_fix",{"permalink":184},"/features",{"id":186,"title":60,"url":10,"callout":187,"callout_title":188,"children_title":189,"page":10,"children":190},"2f6ad0d1-6dd3-4f17-b5c8-9f2abf71409a","dfd79d2b-7af5-4cdb-aa94-3f73de97ebd8","Watch Directus TV","Learn More",[191,198,205,211,218,224,230,235],{"id":192,"title":193,"url":194,"description":195,"image":10,"icon":196,"page":197},"0a3bf9f5-1ef2-43f4-bc09-7ff7488241c5","Blog","/blog","Read our latest articles and guides","library_books",{"permalink":194},{"id":199,"title":200,"url":17,"description":201,"image":10,"icon":202,"page":203},"165e3dc2-e51b-4456-8382-99c5775b0412","Case Studies","Case studies and success stories","magic_button",{"permalink":204},"/case-studies",{"id":206,"title":207,"url":208,"description":209,"image":10,"icon":210,"page":10},"5ae324b6-bf44-4c21-95ad-e6dc0c1c1f40","Community Forum","https://community.directus.io/","Questions and conversations","comment",{"id":212,"title":213,"url":17,"description":214,"image":10,"icon":215,"page":216},"b1db03f0-e537-490e-8c0f-c61c401d1024","Agency Directory","Browse our list of agency partners ","handshake",{"permalink":217},"/agency-directory",{"id":219,"title":220,"url":105,"description":221,"image":10,"icon":222,"page":223},"991731c8-eb40-4eec-85a5-6e977bcd7ec9","About Us","Learn more about Directus and the team","supervised_user_circle",{"permalink":105},{"id":225,"title":226,"url":227,"description":228,"image":10,"icon":229,"page":10},"52aebf38-b3ad-4a27-807d-ce52398cd509","Wall of Love","https://testimonial.to/directus/all","See what others are saying about us","heart_plus",{"id":231,"title":118,"url":17,"description":232,"image":10,"icon":233,"page":234},"a86eca65-d5ae-4263-b7d9-4f1a1c50a0b1","Have a general inquiry or question for us?","mark_email_unread",{"permalink":120},{"id":236,"title":80,"url":10,"description":237,"image":10,"icon":238,"page":239},"28225825-8d41-4809-9032-192fbf5c6e5d","Reach out to Directus support","support",{"permalink":240},"/support",{"id":242,"title":243,"url":244,"callout":10,"callout_title":10,"children_title":10,"page":10,"children":245},"a3f1275d-b088-4b11-99bf-143fcbf39104","Developers","/docs",[],{"id":247,"title":248,"url":249,"callout":10,"callout_title":10,"children_title":10,"page":250,"children":252},"fae8fded-d2e2-468e-a68b-82abec7a7225","Enterprise","/solutions/enterprise/",{"permalink":251},"/solutions/enterprise",[],{"id":254,"title":255,"url":256,"callout":10,"callout_title":10,"children_title":10,"page":257,"children":259},"5c5e2fbc-49fd-4e41-a71e-e4f8db2b00cf","Pricing","/pricing/",{"permalink":258},"/pricing/self-hosted",[],{"header_cta_buttons":261},"74634853-196b-4ce3-b256-4534c054838f",{"id":263,"node_id":264,"name":265,"full_name":266,"private":267,"owner":268,"html_url":285,"description":286,"fork":267,"url":287,"forks_url":288,"keys_url":289,"collaborators_url":290,"teams_url":291,"hooks_url":292,"issue_events_url":293,"events_url":294,"assignees_url":295,"branches_url":296,"tags_url":297,"blobs_url":298,"git_tags_url":299,"git_refs_url":300,"trees_url":301,"statuses_url":302,"languages_url":303,"stargazers_url":304,"contributors_url":305,"subscribers_url":306,"subscription_url":307,"commits_url":308,"git_commits_url":309,"comments_url":310,"issue_comment_url":311,"contents_url":312,"compare_url":313,"merges_url":314,"archive_url":315,"downloads_url":316,"issues_url":317,"pulls_url":318,"milestones_url":319,"notifications_url":320,"labels_url":321,"releases_url":322,"deployments_url":323,"created_at":324,"updated_at":325,"pushed_at":326,"git_url":327,"ssh_url":328,"clone_url":329,"svn_url":285,"homepage":330,"size":331,"stargazers_count":332,"watchers_count":332,"language":333,"has_issues":334,"has_projects":334,"has_downloads":334,"has_wiki":267,"has_pages":267,"has_discussions":334,"forks_count":335,"mirror_url":10,"archived":267,"disabled":267,"open_issues_count":336,"license":337,"allow_forking":334,"is_template":267,"web_commit_signoff_required":267,"has_pull_requests":334,"pull_request_creation_policy":342,"topics":343,"visibility":284,"forks":335,"open_issues":336,"watchers":332,"default_branch":362,"temp_clone_token":10,"custom_properties":363,"organization":364,"network_count":335,"subscribers_count":365},7122594,"MDEwOlJlcG9zaXRvcnk3MTIyNTk0","directus","directus/directus",false,{"login":265,"id":269,"node_id":270,"avatar_url":271,"gravatar_id":272,"url":273,"html_url":274,"followers_url":275,"following_url":276,"gists_url":277,"starred_url":278,"subscriptions_url":279,"organizations_url":280,"repos_url":281,"events_url":282,"received_events_url":283,"type":100,"user_view_type":284,"site_admin":267},15967950,"MDEyOk9yZ2FuaXphdGlvbjE1OTY3OTUw","https://avatars.githubusercontent.com/u/15967950?v=4","","https://api.github.com/users/directus","https://github.com/directus","https://api.github.com/users/directus/followers","https://api.github.com/users/directus/following{/other_user}","https://api.github.com/users/directus/gists{/gist_id}","https://api.github.com/users/directus/starred{/owner}{/repo}","https://api.github.com/users/directus/subscriptions","https://api.github.com/users/directus/orgs","https://api.github.com/users/directus/repos","https://api.github.com/users/directus/events{/privacy}","https://api.github.com/users/directus/received_events","public","https://github.com/directus/directus","The flexible backend for all your projects 🐰 Turn your DB into a headless CMS, admin panels, or apps with a custom UI, instant APIs, auth & more.","https://api.github.com/repos/directus/directus","https://api.github.com/repos/directus/directus/forks","https://api.github.com/repos/directus/directus/keys{/key_id}","https://api.github.com/repos/directus/directus/collaborators{/collaborator}","https://api.github.com/repos/directus/directus/teams","https://api.github.com/repos/directus/directus/hooks","https://api.github.com/repos/directus/directus/issues/events{/number}","https://api.github.com/repos/directus/directus/events","https://api.github.com/repos/directus/directus/assignees{/user}","https://api.github.com/repos/directus/directus/branches{/branch}","https://api.github.com/repos/directus/directus/tags","https://api.github.com/repos/directus/directus/git/blobs{/sha}","https://api.github.com/repos/directus/directus/git/tags{/sha}","https://api.github.com/repos/directus/directus/git/refs{/sha}","https://api.github.com/repos/directus/directus/git/trees{/sha}","https://api.github.com/repos/directus/directus/statuses/{sha}","https://api.github.com/repos/directus/directus/languages","https://api.github.com/repos/directus/directus/stargazers","https://api.github.com/repos/directus/directus/contributors","https://api.github.com/repos/directus/directus/subscribers","https://api.github.com/repos/directus/directus/subscription","https://api.github.com/repos/directus/directus/commits{/sha}","https://api.github.com/repos/directus/directus/git/commits{/sha}","https://api.github.com/repos/directus/directus/comments{/number}","https://api.github.com/repos/directus/directus/issues/comments{/number}","https://api.github.com/repos/directus/directus/contents/{+path}","https://api.github.com/repos/directus/directus/compare/{base}...{head}","https://api.github.com/repos/directus/directus/merges","https://api.github.com/repos/directus/directus/{archive_format}{/ref}","https://api.github.com/repos/directus/directus/downloads","https://api.github.com/repos/directus/directus/issues{/number}","https://api.github.com/repos/directus/directus/pulls{/number}","https://api.github.com/repos/directus/directus/milestones{/number}","https://api.github.com/repos/directus/directus/notifications{?since,all,participating}","https://api.github.com/repos/directus/directus/labels{/name}","https://api.github.com/repos/directus/directus/releases{/id}","https://api.github.com/repos/directus/directus/deployments","2012-12-12T01:35:36Z","2026-04-15T04:20:19Z","2026-04-14T21:58:02Z","git://github.com/directus/directus.git","git@github.com:directus/directus.git","https://github.com/directus/directus.git","https://directus.io",439603,34792,"TypeScript",true,4701,387,{"key":338,"name":339,"spdx_id":340,"url":10,"node_id":341},"other","Other","NOASSERTION","MDc6TGljZW5zZTA=","all",[159,344,345,346,347,348,265,349,350,351,352,353,354,355,356,357,358,359,360,361],"app","cms","composable","data-visualization","database","graphql","headless-cms","javascript","mariadb","mssql","mysql","no-code","node","postgresql","sql","sqlite","typescript","vue","main",{},{"login":265,"id":269,"node_id":270,"avatar_url":271,"gravatar_id":272,"url":273,"html_url":274,"followers_url":275,"following_url":276,"gists_url":277,"starred_url":278,"subscriptions_url":279,"organizations_url":280,"repos_url":281,"events_url":282,"received_events_url":283,"type":100,"user_view_type":284,"site_admin":267},327,{"name":367,"description":368,"verified":267,"id":369,"readme":370,"type":371,"last_updated":372,"host_version":373,"downloads":374,"total_downloads":375,"sandbox":334,"license":376,"publisher":377,"versions":383,"formatted_name":449,"formatted_readme":450,"formatted_description":368,"featured_image":451,"images":452,"recent_downloads_7_days":375,"recent_downloads_30_days":375},"@directus-labs/liquidjs-operation","Render Liquid templates within Directus flows.","a2587ead-a73a-4718-88e2-02de0c78d57a","# Liquid Template Operation\n\n![Liquid Template Operation](https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation.png)\n\n\nThe Liquid Template Rendering Operation allows you to dynamically generate content using the powerful [LiquidJS](https://liquidjs.com/index.html) templating language. This operation is perfect for creating personalized emails, generating dynamic content, or any scenario where you need to combine data with templates within a flow.\n\n## Features\n\n- Support for both custom and saved templates\n- Single and batch processing modes\n- Ability to return specific fields from the input data alongside rendered content\n- Secure template fetching with optional authentication\n\n**Important Note:** This extension uses custom delimiters for output tags `{# #}` instead of the original `{{ }}` . This is to avoid conflicts with the mustache syntax that Directus uses to populate values from other steps inside a Flow.\n\n---\n\n## Configuration Options\n\nSample Saved Template Configuration\n![Sample Saved Template Configuration](https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-saved-template.png)\n\n\nSample Custom Template Configuration\n![Sample Custom Template Configuration](https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-custom-template.png)\n\n\n### Template Mode\n\nChoose how to provide the Liquid template:\n\n- **Custom**: Write the template inline within the operation.\n- **Saved**: Use a template stored in a Directus collection.\n\n### Operation Mode\n\nSelect the processing mode:\n\n- **Single**: Render one template with a single data object.\n- **Batch**: Render the template multiple times, once for each item in an array of data objects.\n\n### Template\n\n- (Custom Mode Only)\n\nEnter your Liquid template here. Use {# #} for output tags instead of {{ }}. All other Liquid tags remain unchanged.\n\nExample: `Hello, {# user.name #}! {% if user.admin %}Admin area{% endif %}`\n\n### Collection\n\n- (Saved Mode Only)\n\nSelect the collection containing your saved Liquid templates.\n\n### Template Item\n\n- (Saved Mode Only)\n\nChoose the specific template to render from the selected collection.\n\n### Fields to Render\n\n- (Saved Mode Only)\n\nSelect the fields from the template item to include in the rendering process.\n\n### Data\n\nJSON data to populate the template. Format: object for single mode, array of objects for batch mode. Supports mustache syntax for dynamic values, e.g., `{\"user\": \"{{$trigger.user}}\"}`\n\n### Access Token\n\n- (Saved Mode Only)\n\nRequired for accessing private template collections. Ensure the token has read permissions for the template collection.\n\n### Public URL\n\nThe public URL of your Directus instance. Used for fetching saved templates.\n\n### Data Fields to Return\n\n- (Batch Mode Only)\n\nChoose fields from your input data to include in each output object. Useful for maintaining context or identification (e.g., \"id\", \"name\"). These fields will be added alongside the rendered template for each item in batch mode.\n\n---\n\n## Samples\n\n### Single Mode Example\n\n- Template Mode: **Custom**\n- Operation Mode: **Single**\n\n**Template**\n\n```jsx\n\u003Cdiv>\n\u003Cp>Hi {# first_name #}!\u003C/p>\n\u003Cp>\u003Cstrong>Thanks for registering for XYZ!\u003C/strong>\u003C/p>\n\u003Cp>Here's your confirmation code:\u003C/p>\n\u003Cpre>{# confirmation_code #}\u003C/pre> p\n\u003Cp>\u003Cstrong>\u003Ca href=\"https://yoururlhere.com/t/{# ticket.slug #}\" target=\"_blank\" rel=\"noopener\">Your Ticket\u003C/a>\u003C/strong>\u003C/p>\n\u003Chr>\n\u003Cp>The Team\u003C/p>\n\u003C/div>\n```\n\n**Data**\n\n```json\n{\n    \"first_name\": \"Bryant\",\n    \"confirmation_code\": \"ABCDEFG\",\n    \"ticket\": {\n        \"slug\": \"test\"\n    }\n}\n```\n\n**Output**\n\n```json\n{\n  \"template\": \"\u003Cdiv>\\n\u003Cp>Hi Bryant!\u003C/p>\\n\u003Cp>\u003Cstrong>Thanks for registering for XYZ!\u003C/strong>\u003C/p>\\n\u003Cp>Here's your confirmation code:\u003C/p>\\n\u003Cpre>ABCDEFG\u003C/pre> p\\n\u003Cp>\u003Cstrong>\u003Ca href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Your Ticket\u003C/a>\u003C/strong>\u003C/p>\\n\u003Chr>\\n\u003Cp>The Team\u003C/p>\\n\u003C/div>\"\n}\n```\n\n### Batch Mode Example\n\n- Template Mode: **Custom**\n- Operation Mode: **Batch**\n- Return Fields From Data: `[”first_name”]`\n\n**Template**\n\n```json\n\u003Cdiv>\n\u003Cp>Hi {# first_name #}!\u003C/p>\n\u003Cp>\u003Cstrong>Thanks for registering for XYZ!\u003C/strong>\u003C/p>\n\u003Cp>Here's your confirmation code:\u003C/p>\n\u003Cpre>{# confirmation_code #}\u003C/pre> p\n\u003Cp>\u003Cstrong>\u003Ca href=\"https://yoururlhere.com/t/{# ticket.slug #}\" target=\"_blank\" rel=\"noopener\">Your Ticket\u003C/a>\u003C/strong>\u003C/p>\n\u003Chr>\n\u003Cp>The Team\u003C/p>\n\u003C/div>\n```\n\n**Data**\n\n```json\n[\n    {\n        \"first_name\": \"Bryant\",\n        \"confirmation_code\": \"ABCDEFG\",\n        \"ticket\": {\n            \"slug\": \"test\"\n        }\n    },\n    {\n        \"first_name\": \"John\",\n        \"confirmation_code\": \"HIJKLM\",\n        \"ticket\": {\n            \"slug\": \"test\"\n        }\n    }\n]\n```\n\n**Output**\n\n```json\n[\n  {\n    \"first_name\": \"Bryant\",\n    \"template\": \"\u003Cdiv>\\n\u003Cp>Hi Bryant!\u003C/p>\\n\u003Cp>\u003Cstrong>Thanks for registering for XYZ!\u003C/strong>\u003C/p>\\n\u003Cp>Here's your confirmation code:\u003C/p>\\n\u003Cpre>ABCDEFG\u003C/pre> p\\n\u003Cp>\u003Cstrong>\u003Ca href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Your Ticket\u003C/a>\u003C/strong>\u003C/p>\\n\u003Chr>\\n\u003Cp>The Team\u003C/p>\\n\u003C/div>\"\n  },\n  {\n    \"first_name\": \"John\",\n    \"template\": \"\u003Cdiv>\\n\u003Cp>Hi John!\u003C/p>\\n\u003Cp>\u003Cstrong>Thanks for registering for XYZ!\u003C/strong>\u003C/p>\\n\u003Cp>Here's your confirmation code:\u003C/p>\\n\u003Cpre>HIJKLM\u003C/pre> p\\n\u003Cp>\u003Cstrong>\u003Ca href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Your Ticket\u003C/a>\u003C/strong>\u003C/p>\\n\u003Chr>\\n\u003Cp>The Team\u003C/p>\\n\u003C/div>\"\n  }\n]\n```\n\n---\n\n## Security Considerations\n\n- When using saved templates, ensure that the access token has the minimum necessary permissions.\n- Be cautious when using user-provided data in templates to avoid potential security risks.\n- Consider using Directus roles and permissions to control access to sensitive templates or data.\n","operation","2025-05-28T22:33:33.917Z","^10.10.0",[],0,"MIT",{"username":378,"verified":334,"id":379,"github_username":378,"github_name":380,"github_blog":381,"github_bio":10,"github_location":10,"github_company":10,"github_avatar_url":382},"bryantgillespie","85f85c84-9af0-4ba7-a30f-3617605d412b","Bryant Gillespie","https://www.bryantgillespie.com","https://avatars.githubusercontent.com/u/23302570?v=4",[384,403,418,435],{"version":385,"package":369,"publisher":379,"type":371,"host_version":373,"publish_date":386,"verified":267,"id":387,"url_repository":10,"url_homepage":10,"url_bugs":10,"file_count":388,"unpacked_size":389,"sandbox":334,"sandbox_requested_scopes":390,"license":10,"bundled":398,"maintainers":399},"1.0.1","2024-08-30T14:09:45.964Z","64489dc4-ae84-472d-a9f8-fad653d43ba5",4,136221,{"request":391,"log":397},{"urls":392,"methods":395},[393,394],"http://*","https://*",[396],"GET",{},[],[400,401,402],11322,11323,11324,{"version":404,"package":369,"publisher":379,"type":371,"host_version":373,"publish_date":405,"verified":267,"id":406,"url_repository":10,"url_homepage":10,"url_bugs":10,"file_count":388,"unpacked_size":407,"sandbox":334,"sandbox_requested_scopes":408,"license":10,"bundled":413,"maintainers":414},"1.0.0","2024-08-30T13:49:41.107Z","70bd1872-3958-492d-bd70-762452201e2e",136161,{"request":409,"log":412},{"urls":410,"methods":411},[393,394],[396],{},[],[415,416,417],11319,11320,11321,{"version":419,"package":369,"publisher":420,"type":371,"host_version":373,"publish_date":421,"verified":267,"id":422,"url_repository":10,"url_homepage":10,"url_bugs":10,"file_count":388,"unpacked_size":423,"sandbox":334,"sandbox_requested_scopes":424,"license":376,"bundled":429,"maintainers":430},"1.1.0","74ce2e77-733a-4e9a-b96d-93bf6264f622","2025-02-10T14:29:47.691Z","f313973c-0a76-4eec-9bdf-8a37713bd797",149084,{"request":425,"log":428},{"urls":426,"methods":427},[393,394],[396],{},[],[431,432,433,434],11967,11968,11969,11970,{"version":436,"package":369,"publisher":379,"type":371,"host_version":373,"publish_date":372,"verified":267,"id":437,"url_repository":10,"url_homepage":10,"url_bugs":10,"file_count":438,"unpacked_size":439,"sandbox":334,"sandbox_requested_scopes":440,"license":376,"bundled":445,"maintainers":446},"1.2.0","f4a3f40f-0f08-45d1-9ccf-183e8ff030ab",5,151040,{"request":441,"log":444},{"urls":442,"methods":443},[393,394],[396],{},[],[447,448],12575,12576,"Liquidjs Operation","\u003Ch1>Liquid Template Operation\u003C/h1>\n\u003Cp>\u003Cimg src=\"https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation.png\" alt=\"Liquid Template Operation\">\u003C/p>\n\u003Cp>The Liquid Template Rendering Operation allows you to dynamically generate content using the powerful \u003Ca href=\"https://liquidjs.com/index.html\">LiquidJS\u003C/a> templating language. This operation is perfect for creating personalized emails, generating dynamic content, or any scenario where you need to combine data with templates within a flow.\u003C/p>\n\u003Ch2>Features\u003C/h2>\n\u003Cul>\n\u003Cli>Support for both custom and saved templates\u003C/li>\n\u003Cli>Single and batch processing modes\u003C/li>\n\u003Cli>Ability to return specific fields from the input data alongside rendered content\u003C/li>\n\u003Cli>Secure template fetching with optional authentication\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Important Note:\u003C/strong> This extension uses custom delimiters for output tags \u003Ccode>{# #}\u003C/code> instead of the original \u003Ccode>{{ }}\u003C/code> . This is to avoid conflicts with the mustache syntax that Directus uses to populate values from other steps inside a Flow.\u003C/p>\n\u003Chr>\n\u003Ch2>Configuration Options\u003C/h2>\n\u003Cp>Sample Saved Template Configuration\n\u003Cimg src=\"https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-saved-template.png\" alt=\"Sample Saved Template Configuration\">\u003C/p>\n\u003Cp>Sample Custom Template Configuration\n\u003Cimg src=\"https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-custom-template.png\" alt=\"Sample Custom Template Configuration\">\u003C/p>\n\u003Ch3>Template Mode\u003C/h3>\n\u003Cp>Choose how to provide the Liquid template:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Custom\u003C/strong>: Write the template inline within the operation.\u003C/li>\n\u003Cli>\u003Cstrong>Saved\u003C/strong>: Use a template stored in a Directus collection.\u003C/li>\n\u003C/ul>\n\u003Ch3>Operation Mode\u003C/h3>\n\u003Cp>Select the processing mode:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Single\u003C/strong>: Render one template with a single data object.\u003C/li>\n\u003Cli>\u003Cstrong>Batch\u003C/strong>: Render the template multiple times, once for each item in an array of data objects.\u003C/li>\n\u003C/ul>\n\u003Ch3>Template\u003C/h3>\n\u003Cul>\n\u003Cli>(Custom Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Enter your Liquid template here. Use {# #} for output tags instead of {{ }}. All other Liquid tags remain unchanged.\u003C/p>\n\u003Cp>Example:&nbsp;\u003Ccode>Hello, {# user.name #}! {% if user.admin %}Admin area{% endif %}\u003C/code>\u003C/p>\n\u003Ch3>Collection\u003C/h3>\n\u003Cul>\n\u003Cli>(Saved Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Select the collection containing your saved Liquid templates.\u003C/p>\n\u003Ch3>Template Item\u003C/h3>\n\u003Cul>\n\u003Cli>(Saved Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Choose the specific template to render from the selected collection.\u003C/p>\n\u003Ch3>Fields to Render\u003C/h3>\n\u003Cul>\n\u003Cli>(Saved Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Select the fields from the template item to include in the rendering process.\u003C/p>\n\u003Ch3>Data\u003C/h3>\n\u003Cp>JSON data to populate the template. Format: object for single mode, array of objects for batch mode. Supports mustache syntax for dynamic values, e.g.,&nbsp;\u003Ccode>{\"user\": \"{{$trigger.user}}\"}\u003C/code>\u003C/p>\n\u003Ch3>Access Token\u003C/h3>\n\u003Cul>\n\u003Cli>(Saved Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Required for accessing private template collections. Ensure the token has read permissions for the template collection.\u003C/p>\n\u003Ch3>Public URL\u003C/h3>\n\u003Cp>The public URL of your Directus instance. Used for fetching saved templates.\u003C/p>\n\u003Ch3>Data Fields to Return\u003C/h3>\n\u003Cul>\n\u003Cli>(Batch Mode Only)\u003C/li>\n\u003C/ul>\n\u003Cp>Choose fields from your input data to include in each output object. Useful for maintaining context or identification (e.g., \"id\", \"name\"). These fields will be added alongside the rendered template for each item in batch mode.\u003C/p>\n\u003Chr>\n\u003Ch2>Samples\u003C/h2>\n\u003Ch3>Single Mode Example\u003C/h3>\n\u003Cul>\n\u003Cli>Template Mode: \u003Cstrong>Custom\u003C/strong>\u003C/li>\n\u003Cli>Operation Mode: \u003Cstrong>Single\u003C/strong>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Template\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-jsx\">&lt;div&gt;\n&lt;p&gt;Hi {# first_name #}!&lt;/p&gt;\n&lt;p&gt;&lt;strong&gt;Thanks for registering for XYZ!&lt;/strong&gt;&lt;/p&gt;\n&lt;p&gt;Here's your confirmation code:&lt;/p&gt;\n&lt;pre&gt;{# confirmation_code #}&lt;/pre&gt; p\n&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://yoururlhere.com/t/{# ticket.slug #}\" target=\"_blank\" rel=\"noopener\"&gt;Your Ticket&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;The Team&lt;/p&gt;\n&lt;/div&gt;\n\u003C/code>\u003C/pre>\n\u003Cp>\u003Cstrong>Data\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n    \"first_name\": \"Bryant\",\n    \"confirmation_code\": \"ABCDEFG\",\n    \"ticket\": {\n        \"slug\": \"test\"\n    }\n}\n\u003C/code>\u003C/pre>\n\u003Cp>\u003Cstrong>Output\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"template\": \"&lt;div&gt;\\n&lt;p&gt;Hi Bryant!&lt;/p&gt;\\n&lt;p&gt;&lt;strong&gt;Thanks for registering for XYZ!&lt;/strong&gt;&lt;/p&gt;\\n&lt;p&gt;Here's your confirmation code:&lt;/p&gt;\\n&lt;pre&gt;ABCDEFG&lt;/pre&gt; p\\n&lt;p&gt;&lt;strong&gt;&lt;a href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"&gt;Your Ticket&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;\\n&lt;hr&gt;\\n&lt;p&gt;The Team&lt;/p&gt;\\n&lt;/div&gt;\"\n}\n\u003C/code>\u003C/pre>\n\u003Ch3>Batch Mode Example\u003C/h3>\n\u003Cul>\n\u003Cli>Template Mode: \u003Cstrong>Custom\u003C/strong>\u003C/li>\n\u003Cli>Operation Mode: \u003Cstrong>Batch\u003C/strong>\u003C/li>\n\u003Cli>Return Fields From Data: \u003Ccode>[”first_name”]\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Template\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-json\">&lt;div&gt;\n&lt;p&gt;Hi {# first_name #}!&lt;/p&gt;\n&lt;p&gt;&lt;strong&gt;Thanks for registering for XYZ!&lt;/strong&gt;&lt;/p&gt;\n&lt;p&gt;Here's your confirmation code:&lt;/p&gt;\n&lt;pre&gt;{# confirmation_code #}&lt;/pre&gt; p\n&lt;p&gt;&lt;strong&gt;&lt;a href=\"https://yoururlhere.com/t/{# ticket.slug #}\" target=\"_blank\" rel=\"noopener\"&gt;Your Ticket&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;\n&lt;hr&gt;\n&lt;p&gt;The Team&lt;/p&gt;\n&lt;/div&gt;\n\u003C/code>\u003C/pre>\n\u003Cp>\u003Cstrong>Data\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-json\">[\n    {\n        \"first_name\": \"Bryant\",\n        \"confirmation_code\": \"ABCDEFG\",\n        \"ticket\": {\n            \"slug\": \"test\"\n        }\n    },\n    {\n        \"first_name\": \"John\",\n        \"confirmation_code\": \"HIJKLM\",\n        \"ticket\": {\n            \"slug\": \"test\"\n        }\n    }\n]\n\u003C/code>\u003C/pre>\n\u003Cp>\u003Cstrong>Output\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"language-json\">[\n  {\n    \"first_name\": \"Bryant\",\n    \"template\": \"&lt;div&gt;\\n&lt;p&gt;Hi Bryant!&lt;/p&gt;\\n&lt;p&gt;&lt;strong&gt;Thanks for registering for XYZ!&lt;/strong&gt;&lt;/p&gt;\\n&lt;p&gt;Here's your confirmation code:&lt;/p&gt;\\n&lt;pre&gt;ABCDEFG&lt;/pre&gt; p\\n&lt;p&gt;&lt;strong&gt;&lt;a href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"&gt;Your Ticket&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;\\n&lt;hr&gt;\\n&lt;p&gt;The Team&lt;/p&gt;\\n&lt;/div&gt;\"\n  },\n  {\n    \"first_name\": \"John\",\n    \"template\": \"&lt;div&gt;\\n&lt;p&gt;Hi John!&lt;/p&gt;\\n&lt;p&gt;&lt;strong&gt;Thanks for registering for XYZ!&lt;/strong&gt;&lt;/p&gt;\\n&lt;p&gt;Here's your confirmation code:&lt;/p&gt;\\n&lt;pre&gt;HIJKLM&lt;/pre&gt; p\\n&lt;p&gt;&lt;strong&gt;&lt;a href=\\\"https://yoururlhere.com/t/test\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"&gt;Your Ticket&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;\\n&lt;hr&gt;\\n&lt;p&gt;The Team&lt;/p&gt;\\n&lt;/div&gt;\"\n  }\n]\n\u003C/code>\u003C/pre>\n\u003Chr>\n\u003Ch2>Security Considerations\u003C/h2>\n\u003Cul>\n\u003Cli>When using saved templates, ensure that the access token has the minimum necessary permissions.\u003C/li>\n\u003Cli>Be cautious when using user-provided data in templates to avoid potential security risks.\u003C/li>\n\u003Cli>Consider using Directus roles and permissions to control access to sensitive templates or data.\u003C/li>\n\u003C/ul>\n","https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation.png",[451,453,454],"https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-saved-template.png","https://raw.githubusercontent.com/directus-labs/extensions/main/packages/liquidjs-operation/docs/liquid-operation-custom-template.png",{"id":456,"icon":457,"content":458,"link":459},"812bf73d-ebfb-4246-9538-937a09a0c795","connected_tv","Learn more about our native MCP","https://directus.io/mcp",{"id":126,"title":461,"description":462,"image":463,"external_url":10,"icon":10,"badge":10,"page":464,"resource":10},"Built With Directus","See what everyone's been building with Directus","e658de72-fb08-4ed2-8029-215c712c789e",{"permalink":465},"/built-with-directus",{"alignment":467,"style":468,"experiment_enabled":267,"experiment":10,"experiment_variant":469,"buttons":472,"variants":482},"center","default",{"id":470,"key":471,"experiment":10},"8c4951b4-a6f9-4c06-9f71-fd39a3bdad1e","control",[473,476,479],{"id":474,"block_button_id":475},15,"358b0659-1f05-4427-bd1c-4bc03a43c182",{"id":477,"block_button_id":478},16,"9df3f40e-6272-4ec6-a0d7-cc29265e087c",{"id":480,"block_button_id":481},232,"1b444c23-b593-4391-9410-4ca5d2c7a7cb",[483],{"id":484,"alignment":467,"style":468,"buttons":485,"experiment_variant":492},"e1885d45-3119-41a3-8294-3cd796ea6f02",[486,489],{"id":487,"block_button_id":488},203,"ade37731-147d-48c4-864a-cec007576362",{"id":490,"block_button_id":491},202,"1cb4e89f-f7de-4b46-bbb8-080191517a72",{"id":493,"key":494},"66d2be4f-2492-4944-8060-039c15515918","variant",{"id":187,"title":496,"description":497,"image":498,"external_url":499,"icon":457,"badge":500,"page":10,"resource":10},"Directus TV","Go down the rabbit hole with hours of original video content from our team. ","ab70faf5-fc28-4608-a7e7-74fd4f020a9d","/tv","Video",{"id":481,"external_url":97,"label":502,"color":503,"outline":334,"icon":504,"size":505,"target":506,"ph_event":10,"page":10,"resource":10},"Log In","secondary","arrow_forward","medium","_self",{"id":475,"external_url":10,"label":508,"color":509,"outline":267,"icon":10,"size":505,"target":506,"ph_event":10,"page":510,"resource":10},"Book a Demo","primary",{"permalink":511},"/demo",{"id":478,"external_url":513,"label":514,"color":503,"outline":267,"icon":10,"size":505,"target":506,"ph_event":10,"page":10,"resource":10},"https://directus.cloud/account/register","Get Started"]