The Umbraco Engage AI Add-on product is currently only available for Umbraco 17 (17.4+).
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Example: A Marketer Agent

A complete, ready-to-use agent configuration: profile, instructions, context, and a guardrail, as one example to copy.

Installation walks through each piece mechanically. This page pulls them together into one working example, a Marketer Agent on Anthropic Claude. It adds the context and guardrail that make its answers noticeably better and safer, not only functional.

Profile

An Engage Anthropic Chat Profile on a current Claude model.

Instructions

The same starting point from Installation:

You are a Marketer Agent specialized in Umbraco Engage inside Umbraco CMS.

Your main role is to help marketers, editors, and website owners understand,
analyze, and act on Umbraco Engage campaign and analytics data. Focus on
practical marketing insight, not raw numbers.

Context

Five Context resources are attached to the agent, split across three jobs. Two general rules apply on every request. Two reference resources the model only pulls in when it needs them. One more applies only in Copilot Workspace.

Always, on every request

Null Semantics Discipline is a plain-text resource that stops the agent from misreading a missing measurement as a zero:

Marketer register is a Brand Voice context, a resource type with dedicated fields rather than free text:

Field
Value

Tone

Marketing-friendly language, not developer jargon.

Target Audience

Marketers, editors, and website owners.

The Marketer register Brand Voice context, with Tone and Target Audience filled in

Brand Voice also has Style Guidelines and Patterns to Avoid fields, left empty here. Fill them in if you want tighter control over phrasing.

Both Always-injected context resources attached to the agent

On-Demand, only when needed

Rather than being added to every request, the model retrieves these itself via a tool call, only when the question calls for them.

Urchin Tracking Module (UTM) vocabulary:

The UTM vocabulary context resource

Example answer:

The Example answer context resource

Always vs. On-Demand is a real trade-off. Always guarantees the agent has it in mind for every answer, at the cost of a few extra tokens on every request. On-Demand keeps requests smaller and only pulls the resource in when relevant. This suits reference material like a vocabulary list or style example that most questions won't need.

Workspace only: a display-behavior context

The full-width layout in Copilot Workspace has room for more than a short sentence. Umbraco Engage AI doesn't format answers itself; that's entirely up to the agent's Instructions and any Context attached to it. A Context resource scoped to the Workspace surface can tell the agent to take advantage of the extra space:

The Display Behavior context, scoped to the copilot-workspace surface

Without a context like this attached, Workspace answers read the same as sidebar answers: plain text, and a Markdown table when the data fits. With it, a prompt like "show our top pages by pageviews for this year" renders as a table plus an ASCII bar chart:

A Markdown table and ASCII bar chart of top pages by pageviews, rendered in Copilot Workspace

Markdown and plain text are the ceiling on either surface. Neither can render SVG, HTML, canvas, or Mermaid; a context that asks for those produces raw code instead of a rendered chart.

Guardrail

Umbraco Engage AI's tools only ever return aggregates and marketer-authored labels: campaign names, segment counts, performance figures. They can't return an individual visitor's Personally Identifiable Information (PII), so there's nothing to filter on the way out. The real risk sits on the way in. A marketer might paste something like "a visitor with email [email protected] keeps abandoning cart" into the chat. Unless something stops it, that personal data gets sent straight to your AI provider.

A guardrail can catch this before it happens. Guardrails are an Umbraco.AI feature. They evaluate a request against a set of rules and act (block, redact, and so on) when one matches. They apply to whichever agent they're attached to, on either Copilot surface.

Example: Input PII Redaction

A guardrail with two rules, both Regex Match, phase Pre-Generate, action Redact, evaluated before the message reaches the model and replacing any match with [REDACTED]:

Rule
Regex pattern

Email

[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}

Central Person Register (CPR), Danish national ID

\b\d{6}-\d{4}\b

The Input PII Redaction guardrail's two rules
The Email rule's configuration
The Danish CPR rule's configuration

Attaching a guardrail to an agent

A guardrail does nothing until it's attached to an agent:

  1. Open the agent, go to the Governance tab.

  2. Scroll to Guardrails, click Add, and select the guardrail.

  3. Save.

The Governance tab's Guardrails section, with Input PII Redaction attached

What it stops

Same message, sent to two agents: one with the guardrail attached, one without.

The reply itself made sense either way. Only the guardrail decided whether personal data made the trip to the provider.

Limits worth knowing

  • Best-effort, not comprehensive. Regex rules catch the specific patterns you define; these two cover email addresses and Danish CPR numbers, nothing else. Add more rules the same way for other PII you expect marketers to paste, such as phone numbers, other national IDs, or card numbers. Test each against realistic input before relying on it.

  • Pre-Generate acts on the input, not the answer. These rules run on what the user sends, not on what the assistant replies with.

Putting it together

  1. Create the profile and connection (Installation, Steps 2 and 3).

  2. Create the agent with the Instructions above (Installation, Step 4), selecting that profile.

  3. Attach the Context resources under Agent Behavior on the Settings tab (the Display Behavior one only if the agent will be used in Copilot Workspace).

  4. Grant it the Engage Read permission and attach the Input PII Redaction guardrail, both under Governance (Installation).

  5. Attach the agent to whichever surface(s) you want it available on (Installation).

None of this is required to get a working agent. A profile, a granted permission, and a short set of Instructions is enough, as Installation shows. This is what a more deliberately configured one looks like.

Last updated

Was this helpful?