Quickstart #5: Notification Ambient Agent
Quickstart #5: Notification Ambient Agent
Quickstart #5: Notification Ambient Agent
You’ll create an Ambient Agent that receives a webhook (e.g., from HR system), finds the right user by email, generates a smart notification, and sends it directly in chat.
The plugin you will build solves a common, practical problem: notifying users about specific updates or action items.
Before starting to build, we always recommend that you first map out the desired end user experience and the overall building blocks of an Ambient Agent.
Here is an example of the end-user experience we hope to enable:

To get to this experience, the Ambient Agent will consist of one Compound Action and two input arguments: the user’s email and the payload of the webhook.
Let’s get started!
Let’s map the data journey to understand how the data travels from the external systems to the user’s chat.
parsed_bodyWhen the Listener receives the request:
In the Plugin editor you map fields from parsed_body to the input arguments of your Compound Action:
Your Compound Action receives:
It then:
mw.get_user_by_email → resolves to a user IDmw.generate_text_action → turns payload into a polished messagenotify → sends the message to that user IDNow you know exactly where every piece of data lives.
You will now create a compound action to handle the incoming webhook routed by the listener.
In this phase you will build a compound action with 1) user_email and payload input arguments, and 2) two actions to resolve the user by email and then notify them with the message. Here’s a reminder of the bird’s-eye view for our Compound Action
Navigate to a new “Compound Action” in the left nav and then click “Create”.

Set the following title and description for your Compound Action (be sure to replace “first” and “last” with your corresponding information).
Copy the following expression into the Compound Action Editor
Understanding the Compound Action
This Compound Action executes three actions in sequence, with the output of one step feeding into the next:
mw.get_user_by_email (Built-in Action)
mw.generate_text_action (Built-in Action)
notify (Compound Action Expression)
mw.get_user_by_email action.mw.generate_text_action action.Define two formal input arguments to represent the user_email and payload inputs that this Compound Action Requires
Click on the “Input Args” button near the top right corner

Click “Create New” in the “Input Arguments” pop up.
Fill out the following details for your user_email argument:
Hit “Save”
Click “Create New” again to the “Input Arguments” pop up.
Fill out the following details for your payload argument:
Known Issue: The Example Value field is optional but currently if left empty, you may see a red validation message (“Must be a valid object”) and a warning icon next to the argument name after saving. This is a known issue (currently expected behavior) and will not block publishing — you can safely ignore it.
Hit “Save” and hit the “X” icon to close this “Input Arguments” pop up.
You’re ready to move on — time to create your Listener to start listening to webhooks.
Set the following Title and Description for your listener (be sure to replace firstand lastn with your corresponding information).

Note: Unsecured listeners are intended for testing only. For production environments, always enable signature verification to secure your webhook listener.
This section guides you through adding your Listener and Compound Action to a Plugin. A key step will be configuring the data flow, where you’ll specify exactly which fields from the webhook you want to forward to your action.
Set the following title and description for your Plugin (be sure to replace “first” and “last” with your corresponding information).
In the “Workflow Overview” section click “System” in the Trigger box.

Configure your system trigger to connect your Listener in the slide-out pop up with:
Click on the “Body” in the “Workflow Overview

Configure your system body to connect your compound action to the plugin
Understanding the Input Mapping
When the listener receives a webhook, we expect a JSON payload structured like this:
The listener automatically parses this JSON payload into a parsed_body object. To access the data you need, you simply use dot notation to reference the keys:
parsed_body.emailparsed_body.dataThis method gives you the flexibility to extract only the specific data your compound action requires, even if the webhook sends a much larger payload.
Note: While this mapping is currently a manual process, we are developing an “Auto Configure” feature to streamline this setup in the future.
Congrats! You are now ready to test your plugin. In the next section, you will provided with required tools to help you test it.
This section guides you through the Moveworks Purple API tool to help you test your plugin by sending webhooks to your listener.
Excellent work! You have successfully tested your plugin. Check your chat, where you should now see a notification from the AI Assistant containing the message from your webhook payload.
The plugin you just created uses several key Agent Studio concepts, from Webhook Listeners to Compound Actions. You’ve successfully built a plugin that:
Awesome work sticking with it! Your plugin is now ready to notify users of important messages and updates.
Next step: Test your plugin. See our Testing & Error Handling guide for how to test, debug, and handle errors in production.