Architect: Call an Agent

Prev Next

Call an Agent is a journey element that adds an AI (artificial intelligence) reasoning step to your Architect journeys in Insider One. You write an instruction in plain language; the AI reads each user's data when they reach the element, and it returns a structured output. The elements you place after it then use that output.

This feature requires AI credits. Call an Agent is available in all standard (non-transactional) Architect journeys.

In this article:

Call an Agent adds an AI reasoning step inside your journey. You write the instruction, the AI evaluates each user, and you decide what happens next.

You can think of Call an Agent as a ChatGPT built into your journey. You write the prompt, it does the thinking for each individual user, and it returns an answer. The elements you add next decide what happens with that answer.

Call an Agent removes the need to build external AI pipelines or involve engineering to add intelligence to a journey.

The element's job is to produce an output. Routing, messaging, and profile updates happen in the elements you place after it: a Check Response element to route, a message element to personalize, and an Update User Attribute element to save. Each one points at the output. In short, Call an Agent is the step that decides, and the elements after it are the steps that act.

Here are three quick examples of what you can build. In each one, Call an Agent only produces the labeled output, and the element that follows does the work:

  • Catch churn risk: Call an Agent classifies churn risk as High, Medium, or Low. A Check Response element then routes high-risk users to a win-back offer.

  • Pick the next best offer: Call an Agent chooses Free Shipping, Percent Off, or Early Access from the offers you list in the instruction. A Check Response element then sends each user the email for their offer.

  • Generate personalized copy: Call an Agent writes a one-line product recommendation, and a message element inserts it into the email as dynamic content.

How it works at a glance

Every Call an Agent element follows the same four-step flow. What the AI returns depends on what you write in the instruction. You describe the task and the answer you want, and the AI answers for each user based on the data you reference.

  1. Write the instruction. In plain language, tell the AI what to evaluate, what answer to return, and reference the user's data.

  2. The AI evaluates each user. When a user reaches the element, the AI reads that user's data and applies your instruction.

  3. The AI returns a structured result. The result is a typed value that you define, e.g., a label, a score, or a yes/no.

  4. Other elements use the result. The elements you place after Call an Agent route users on it, insert it into messages, or save it to the profile.

A real instruction looks like this. The parts in brackets are dynamic content that you insert with the Add Dynamic Content button. Do not type them as text. At runtime, Insider One replaces each bracket with that user's real value:

This user just returned an item. Their last order was [days_since_last_order]
days ago, they have made [returns_last_90_days] returns in the past 90 days,
and their email open rate over the past 30 days is [email_open_rate_30d].

Based on this data, classify the user's churn risk as High, Medium, or Low.

For one user, the AI might receive 42 days, 3 returns, and a 12% open rate in place of the brackets. You do not ask the AI to look up their orders. Instead, you insert each already-resolved value into the instruction, and the AI reasons over those values.

You then declare the answer you want back: an output called churn_risk that can only be High, Medium, or Low. You build the rest of the journey, the routing and the messages, around that answer.

What you do with the output

Call an Agent only hands you the output. You act on it in separate elements that you place after it on the canvas. Which elements you use depends on your use case:

  • To route users, add a Check Response element after it and branch on the output. One condition replaces a multi-branch rule tree. Check Response does the routing, not Call an Agent.

  • To personalize messages, insert the output as dynamic content inside a message element (Email, SMS, Web Push, App Push, or WhatsApp). The message element renders it.

  • To save the output to the profile, add an Update User Attribute element after it and write the output to a user attribute. This makes the output reusable across future journeys, campaigns, and segments. That element performs the write.

If you place nothing after Call an Agent, the output is produced but goes unused. By default, the output is journey-scoped. It lives only for that user's run and does not touch their profile unless you add an Update User Attribute element.

Analytics

After you launch your journey, live statistics appear on the Call an Agent element on the canvas. Click the element to open the full breakdown.

Metric

Description

Arrived

Users who reached the element.

Success

Executions where the AI returned a valid, correctly typed output.

Failed

Executions where the AI call failed (timeout, type mismatch, missing field, value outside the allowed set, or infrastructure error).

Skipped

Users passed through to the next element without an AI call because the usage limit was reached.

Dropped

Standard canvas metric: users dropped at this step.

Exited

Standard canvas metric: users who exited at this step.

Failed and Skipped executions both result in the user proceeding to the next element with no output value. Add a default path in the downstream Check Response element to handle these cases.

Limitations and guardrails

Limitation

Details

Instructions length

8,000 characters

AI call timeout

30 seconds per call

Supported data types

String, Number (with optional From and To bounds), Boolean, List of Values

List of Values size

Up to 50 values, each up to 255 characters

Outputs per element

Up to 50

Custom template name and description

Up to 40 characters for the name, up to 200 characters for the description

Multi-agent chaining

Unsupported in a single element. Use multiple Call an Agent elements in sequence.

Model selection

Not configurable by customers in this release

Supported channels

Email, SMS, Web Push, App Push, and WhatsApp. In-App and On-Site templates are unsupported.

Profile persistence

Journey-scoped only. Use Update User Attribute to persist the output.

Journey type

Standard journeys only. Transactional journeys are unsupported.

Free-text or conversational output

Unsupported. All outputs follow the declared structured schema.

Do not use Call an Agent in journeys that send OTPs, financial transaction confirmations, medical notifications, or other critical messages where an incorrect AI output could cause direct harm to users. Warnings appear in the UI, but you are responsible for reviewing your journey design for these cases.

Call an Agent sends selected user data to an external AI model. Reference only the fields your instructions require, and review your data selection against GDPR, CCPA, and any applicable privacy obligations before you activate the journey.

Use case library

The churn journey you saw earlier is the short teaching example. The examples below are fuller, real-world use cases. Each one includes the exact instruction, the exact output setup, and where to use the result.

Use them as starting points: put the instruction into the Instructions field and swap the bracketed parts for your own dynamic content. Remember that Call an Agent only produces these outputs. The elements you add after it do the routing, personalizing, and saving.

Example 1: Next best offer

You run three offers this month. Today, one offer goes to the whole segment, so customers who would have bought at full price get a discount they never needed. You want the AI to pick the right offer for each customer from the list you already approved, protecting margin over making the sale. You write the offers into the instruction, so the AI chooses only from them and cannot invent a fourth.

Instructions: Put this into the Instructions field, and insert the customer's data as dynamic content where the brackets are.

You are choosing this month's offer for one customer.

Only these three offers exist. Pick one, do not invent another.

free_shipping: free delivery, no minimum. Cheap for us.
percent_off: 20 percent off one order. Our most expensive offer.
early_access: 48 hours early access to the new season drop. No discount, costs us nothing.

Average order value: [avg_order_value]
Days since last order: [days_since_last_order]
Usually buys during sales: [buys_on_sale]
Loyalty tier: [loyalty_tier]

Pick percent_off only when price is why this customer is not buying: a low average order value, or a history of buying during sales. Never discount to someone who buys at full price.
Pick free_shipping when the average order value is low but they buy at full price.
Pick early_access for high spending or high tier customers who buy at full price. Give them status, not money.

Protecting margin matters more than making the sale.

Return exactly one of: free_shipping, percent_off, early_access.

Outputs: One List of Values output.

Output Group Name

Output (key)

Data Type

Values or bounds

Monthly Offer

next_best_offer

List of Values

free_shipping, percent_off, early_access

Where to use the result (all in elements placed after Call an Agent):

  • Check Response (routing): Set the source to Agent Response and select next_best_offer. Create one path per offer, each leading to its own Email element. Add a default path with your standard offer for users without an output value.

  • Update User Attribute (persist): Write next_best_offer to a custom attribute such as ai_monthly_offer. This lets you report on offer distribution and avoid repeating the same offer next month.

The offers live in the instruction, not in a catalog the AI looks up. When your offers change, update the instruction. Save it as a custom template with Save Agent so that update is one edit instead of one per journey.

Example 2: NPS response triage and prioritization

A user submits a Net Promoter Score (NPS) survey. You want to label the user as Promoter, Passive, or Detractor and capture the theme of their comment. You also want to decide how urgently a human should follow up. Then you route Detractors into a recovery flow, hand urgent cases to your team, and save the label for future targeting.

Instructions: Put this into the Instructions field, and insert your NPS and customer fields as dynamic content where the brackets are.

You are triaging Net Promoter Score (NPS) survey responses for a retail
brand. A user has just submitted a survey.

Their NPS score is [nps_score] on a 0-10 scale.
Their written comment is: "[nps_comment]".
Their lifetime order count is [lifetime_orders] and their last order was
[days_since_last_order] days ago.

Do all of the following, using only the data above:
1. Classify the user's NPS segment: Promoter (score 9-10), Passive (7-8),
   or Detractor (0-6).
2. Identify the single main theme of the comment in 3-5 words, phrased in
   the customer's own terms (for example "slow delivery", "sizing runs
   small", "great in-store service"). If the comment is empty, return
   "no comment".
3. Decide how urgently a human should follow up: High, Medium, or Low.
   Treat a Detractor who orders frequently or ordered recently as High.
   Treat a Promoter with no complaint as Low.

Do not invent any detail that is not present in the data.

Outputs: Three outputs under one group.

Output Group Name

Output (key)

Data Type

Values or bounds

NPS Triage

nps_segment

List of Values

Promoter, Passive, Detractor

NPS Triage

comment_theme

String

N/A

NPS Triage

followup_urgency

List of Values

High, Medium, Low

Where to use the result (all in elements placed after Call an Agent):

  • Check Response (routing): Set the source to Agent Response and select nps_segment. Route Detractors to an apology and recovery flow, Promoters to a referral or review-request flow, and Passives to a light re-engagement path. You can add a second Check Response element on followup_urgency to split High cases into an immediate handoff, e.g., a Call an API element that opens a support ticket.

  • Update User Attribute (persist): Write nps_segment to a custom attribute such as ai_nps_segment. This lets you build a segment of recent Detractors and target them in later campaigns.

  • Dynamic content (personalize): Insert comment_theme into the recovery email so it acknowledges the actual issue, for example "We heard you on [comment_theme] and want to make it right."

Example 3: Personalized win-back email copy

A lapsed customer enters a win-back journey. Instead of sending one generic email to everyone, you want the AI to write a subject line and a short body for each customer. This is a copy-generation use case, so the output goes into the message instead of into routing.

Instructions: Put this into the Instructions field, and insert the customer's data as dynamic content where the brackets are.

You are writing a short win-back email for a fashion retailer to a lapsed
customer. Use a warm, encouraging tone and British English. Never mention
specific discounts, prices, or percentages, and do not use emojis or the
customer's name.

Customer context:
- Favourite category: [top_category]
- Last purchased product: [last_purchased_product]
- Days since last purchase: [days_since_last_purchase]
- Most recently browsed category: [last_browsed_category]

Write two things:
1. subject_line: an email subject of at most 45 characters that references
   what this customer actually cares about, not a generic "We miss you".
2. body_copy: exactly two sentences. The first acknowledges it has been a
   while since their last purchase. The second invites them back to explore
   their favourite category and the category they most recently browsed.

If a field is missing, write naturally around it rather than leaving a gap.

Outputs: Two String outputs, plus an optional angle for reporting.

Output Group Name

Output (key)

Data Type

Values or bounds

Win-Back Copy

subject_line

String

N/A

Win-Back Copy

body_copy

String

N/A

Win-Back Copy

angle_used

List of Values

Category Reminder, Browsed Not Bought, New Season

Where to use the result (all in elements placed after Call an Agent):

  • Dynamic content (personalize): In the win-back Email element, insert subject_line into the subject field and body_copy into the body. Both come from the Agentic Outputs category. Set a fallback on each (a generic subject and body) so the email is never blank if the AI call fails.

  • Check Response (optional analytics split): Branch on angle_used to compare open and click rates per angle, or pair each angle with a different hero image variant.

Example 4: Replenishment timing for consumables

You sell a consumable (coffee, pet food, or skincare) and want to nudge each customer right before they run out, not on a fixed schedule. The AI estimates how many days remain until the customer is likely to reorder, and you route on that number. This example uses the Number output type with bounds.

Instructions: Put this into the Instructions field, and insert the customer's data as dynamic content where the brackets are.

Estimate when this customer will next need to reorder a consumable product.

Product: [last_purchased_product]
Typical time this product lasts one customer: [typical_days_supply] days
Date of their last purchase of it: [last_purchase_date]
Their average gap between orders of it: [avg_reorder_gap_days] days

Based on this, estimate the number of days from today until the customer
is likely to run out and reorder. Weigh their own average gap more heavily
than the generic supply estimate when the two disagree. Return a whole
number of days between 1 and 180.

Outputs: One Number output with bounds.

Output Group Name

Output (key)

Data Type

Values or bounds

Replenishment

days_until_reorder

Number

From 1, To 180

Where to use the result (all in elements placed after Call an Agent):

  • Check Response (routing): Set the source to Agent Response and select days_until_reorder. Send users with a value of seven or fewer straight into a "time to restock" reminder. Route the rest to a shorter wait or an exit so they are not nudged too early.

  • Update User Attribute (persist): Write days_until_reorder to a custom attribute such as ai_days_until_reorder. Other journeys and segments can then act on the same estimate without recalculating it.

Example 5: Summarize an order or booking update (with Call an API)

A journey pulls a customer's latest order or booking change from your system with a Call an API element. The response is raw data fields, so you want the AI to turn it into one clear, friendly line for a push notification. This is the summarization pattern: Call an API fetches, Call an Agent summarizes, and a message element sends.

Instructions: Put this into the Instructions field, and insert the Call an API response fields as dynamic content where the brackets are.

Summarize an update to a customer's order into one clear, reassuring
sentence suitable for a push notification (maximum 120 characters).

Order reference: [order_id]
New status: [order_status]
Updated delivery estimate: [new_delivery_date]
What changed: [change_reason]

Write in plain, friendly language. State the new status and the new
delivery date. Do not include the order reference or any internal codes,
and do not use emojis. If the update is a delay, keep the tone calm and
apologetic without over-promising.

Also classify the update so the journey can route on it.

Outputs: A String summary plus a routing label.

Output Group Name

Output (key)

Data Type

Values or bounds

Order Update

update_summary

String

N/A

Order Update

update_type

List of Values

On Track, Delayed, Delivered, Action Needed

Where to use the result (all in elements placed after Call an Agent):

  • Dynamic content (personalize): Insert update_summary into the push notification body from the Agentic Outputs category. Set a fallback line so the push is never blank if the AI call fails.

  • Check Response (routing): Branch on update_type so Delayed updates also trigger a follow-up email with an apology offer, while On Track and Delivered updates send only the push.

Example 6: Low-in-stock urgency copy

A journey starts from a Low in Stock starter when a product the user cares about drops below a stock threshold. You want the AI to write an honest urgency line for a push notification, sized to how little stock remains. You also want it to flag how urgent the situation is so the journey can escalate channels. This example uses Product Catalog Attributes from the starter.

Instructions: Put this into the Instructions field, and insert the product fields as dynamic content. The fields come from the Low in Stock starter's Product Catalog Attributes.

A product this user is interested in is now low in stock. Write a short,
honest urgency line for a push notification (maximum 100 characters)
encouraging them to buy before it sells out.

Product: [product_name]
Current price: [product_price]
Units left in stock: [product_stock_count]

Rules:
- Only imply the urgency the stock level justifies. If 3 or fewer units are
  left you may say it is almost gone; otherwise keep it gentle ("selling
  fast"). Never invent a specific countdown or a number you were not given.
- Do not mention discounts. Include the price only if it strengthens the line.
- No emojis, no all-caps, at most one exclamation mark.

Also classify how urgent the stock situation is so the journey can route on it.

Outputs: A String line plus a routing label.

Output Group Name

Output (key)

Data Type

Values or bounds

Low Stock Alert

urgency_copy

String

N/A

Low Stock Alert

stock_urgency

List of Values

Critical, Low, Moderate

Where to use the result (all in elements placed after Call an Agent):

  • Dynamic content (personalize): Insert urgency_copy into the push notification body from the Agentic Outputs category. Set a fallback line so the push is never blank if the AI call fails.

  • Check Response (routing): Branch on stock_urgency. Send Critical users the push plus a follow-up email or SMS, while Moderate users get the push only. This way, you escalate channels only when stock is genuinely scarce.

Every example follows the same pattern as the churn journey. Call an Agent produces the output. Then you use that output in a Check Response element, as dynamic content in a message, or through an Update User Attribute element. The element never acts on its own.