diff --git a/app/docs/.vuepress/public/images/how-tos/slack-copy-webhook-url.png b/app/docs/.vuepress/public/images/how-tos/slack-copy-webhook-url.png
new file mode 100644
index 0000000..f87f030
Binary files /dev/null and b/app/docs/.vuepress/public/images/how-tos/slack-copy-webhook-url.png differ
diff --git a/app/docs/.vuepress/public/images/modals/office-create-action-slack-filled.png b/app/docs/.vuepress/public/images/modals/office-create-action-slack-filled.png
index e903a2d..dddce32 100644
Binary files a/app/docs/.vuepress/public/images/modals/office-create-action-slack-filled.png and b/app/docs/.vuepress/public/images/modals/office-create-action-slack-filled.png differ
diff --git a/app/docs/.vuepress/public/images/modals/office-create-action-slack.png b/app/docs/.vuepress/public/images/modals/office-create-action-slack.png
index 3e41f90..dd5e045 100644
Binary files a/app/docs/.vuepress/public/images/modals/office-create-action-slack.png and b/app/docs/.vuepress/public/images/modals/office-create-action-slack.png differ
diff --git a/app/docs/.vuepress/public/images/patterns/examples/custom-app-settings.png b/app/docs/.vuepress/public/images/patterns/examples/custom-app-settings.png
index 102eb92..0b5de4a 100644
Binary files a/app/docs/.vuepress/public/images/patterns/examples/custom-app-settings.png and b/app/docs/.vuepress/public/images/patterns/examples/custom-app-settings.png differ
diff --git a/app/docs/.vuepress/public/images/tutorials/at-a-glance/example-app.png b/app/docs/.vuepress/public/images/tutorials/at-a-glance/example-app.png
new file mode 100644
index 0000000..cf13567
Binary files /dev/null and b/app/docs/.vuepress/public/images/tutorials/at-a-glance/example-app.png differ
diff --git a/app/docs/how-to/capture-rating-review-feedback.md b/app/docs/how-to/capture-rating-review-feedback.md
index aee15b3..2fbd87f 100644
--- a/app/docs/how-to/capture-rating-review-feedback.md
+++ b/app/docs/how-to/capture-rating-review-feedback.md
@@ -37,6 +37,7 @@ recommend:
type: radiobuttons
label: Would you recommend this product to anyone?
required: true
+ dataType: boolean
items:
- value: true
label: Yes
diff --git a/app/docs/how-to/receive-slack-notifications.md b/app/docs/how-to/receive-slack-notifications.md
index 57bb19b..6499476 100644
--- a/app/docs/how-to/receive-slack-notifications.md
+++ b/app/docs/how-to/receive-slack-notifications.md
@@ -7,9 +7,20 @@ description: "How do I receive Slack notifications?"
This how-to covers how to make use of the [Slack Webhook Action Type](/reference/action-types/slack-webhook/) to receive slack message notifications when someone interacts with one of your apps.
+
+## Enable incoming webhooks in your Slack workspace
+
+First, create an incoming webhook for your slack workspace as outlined in [this official guide](https://api.slack.com/messaging/webhooks). Once your webhook is created, copy and save its URL - you will need it in the next step.
+
+
+
## Create the action
-Follow the steps below to create an [action](/reference/actions/) for sending email notifications.
+Second, follow the steps below to create an [action](/reference/actions/) for sending Slack messages using the webbhook that you created above.
### Step 1: Choose a workspace
@@ -33,31 +44,27 @@ Select the **Actions** tab within the workspace view and press the **+ New Actio
### Step 3: Select the Slack action type
-From the action creation model, select **Slack** from the _Action type_ dropdown list.
+In the action creation dialog, select **Slack Webhook** from the _Action type_ dropdown list.
### Step 4: Configure the action
-Enter the URL for your Slack Outgoing Webhook you wish to use, and click on **+ Create action** to complete the process.
-
-::: tip
-Create or view your Slack webhook integrations [here](https://slack.com/apps/A0F7VRG6Q-outgoing-webhooks).
-:::
+Enter the URL of the Slack Incoming Webhook that your created earlier. Optionally, you can also customize the body and footer of a Slack message. Both _Body_ and _Footer_ fields support [Routegy templating](/reference/templating) that is based on [Jinja2](https://jinja.palletsprojects.com/en/3.0.x/). When all fields are configured, click on **+ Create action** to complete the process.
## Attach the action to an app
-Follow the steps below to attach the Webhook action created above to one or more [apps](/reference/apps/).
+Finally, follow the steps below to attach the Slack Webhook action created above to one or more [apps](/reference/apps/).
### Step 1: Choose an app
diff --git a/app/docs/how-to/receive-sms-notifications.md b/app/docs/how-to/receive-sms-notifications.md
index ccdb3ec..956eca0 100644
--- a/app/docs/how-to/receive-sms-notifications.md
+++ b/app/docs/how-to/receive-sms-notifications.md
@@ -44,7 +44,7 @@ From the action creation model, select **SMS** from the _Action type_ dropdown l
### Step 4: Configure the action
-Enter a _name_, _description_ (optional) and desired phone number. You can also customize a text _Message_ format by providing your own [Jinja2 template](https://jinja.palletsprojects.com/en/3.0.x/) that follows the [Routegy templating guide](/reference/templating). _Phone Number_ can be set to a static value (e.g. 555-555-5555) or to any variable available in the [templating context](/reference/templating.html#values). For instance, if your app pattern includes an element named `phone_number` nested in a fieldset named `contact_info`, you can just enter `contact_info.phone_number`, and Routegy will send a text message to a phone number collected by your app from a user.
+Enter a _name_, _description_ (optional) and desired phone number. You can also customize a text _Message_ format by providing your own [Jinja2 template](https://jinja.palletsprojects.com/en/3.0.x/) that follows the [Routegy templating guide](/reference/templating). _Phone Number_ can be set to a static value (e.g. 555-555-5555) or to any variable available in the [templating context](/reference/templating.html#values). For instance, if your app pattern includes an element named `phone_number` nested in a fieldset named `contact_info`, you can just enter `{{ contact_info.phone_number }}` into the _Phone Number_ field, and Routegy will send a text message to a phone number collected by your app from a user.
::: tip
diff --git a/app/docs/reference/action-types/jira.md b/app/docs/reference/action-types/jira.md
index 8b7dd61..f9d98bf 100644
--- a/app/docs/reference/action-types/jira.md
+++ b/app/docs/reference/action-types/jira.md
@@ -5,4 +5,34 @@ description: "How do Jira action types work?"
# Jira
-Docs coming soon!
+The Jira action type is used to create Jira issues for every [event](/reference/events/) created by an [app](/reference/apps/). Issues can be created in Jira Software, Jira Service Management and Jira Work Management projects.
+
+Jira action configuration option includes user, project and issue information.
+
+### User configuration
+
+|Field|Description|
+|---|---|
+|Username|Email associated with the Jira account to use|
+|API Token|API token generated at |
+
+### Project configuration
+
+|Field|Description|
+|---|---|
+|URL|URL of the Atlassian site (e.g. https://yourcompany.atlassian.net)|
+|Key|Jira project key|
+
+### Issue configuration
+
+|Field|Description|
+|---|---|
+|Summary|Jira issue summary. This field supports [Routegy templating](/reference/templating)|
+|Description|Jira issue description. This field supports [Routegy templating](/reference/templating)|
+|Type|Jira issue type. Has to be a valid type [issue type for a given project](https://support.atlassian.com/jira-cloud-administration/docs/what-are-issue-types/#Default-issue-types).|
+|Priority|Jira issue priority|
+|Labels| Optional. A list of Jirra [issue labels](https://confluence.atlassian.com/jirasoftwareserver/editing-and-collaborating-on-issues-939938928.html#Editingandcollaboratingonissues-Trackingissueswithlabels)|
+
+## Guides
+
+* [How-to: Create Jira issues](/how-to/create-jira-issues/)
diff --git a/app/docs/reference/action-types/slack-webhook.md b/app/docs/reference/action-types/slack-webhook.md
index 57e30a5..fc4f827 100644
--- a/app/docs/reference/action-types/slack-webhook.md
+++ b/app/docs/reference/action-types/slack-webhook.md
@@ -5,38 +5,10 @@ description: "How do Slack webhook action types work?"
# Slack webhook
-The Slack webhook action type is used to send a message to Slack for every [event](/reference/events/) created by an [app](/reference/apps/).
+The Slack webhook action type is used to send a message to Slack for every [event](/reference/events/) created by an [app](/reference/apps/). Messages are sent using [incoming webhooks](https://api.slack.com/messaging/webhooks) for Slack apps.
-::: tip
-Slack messages can be configured using [templating](/reference/templating/).
-:::
+You can customize the body and footer of the message, both of which support [Routegy templating](/reference/templating).
## Guides
* [How-to: Receive slack notifications](/how-to/receive-slack-notifications/)
-
-## Screenshots
-
-### Create
-
-
-
-### Configure
-
-
-
-### Example
-
-
diff --git a/app/docs/reference/action-types/sms.md b/app/docs/reference/action-types/sms.md
index cfbbbda..e83a056 100644
--- a/app/docs/reference/action-types/sms.md
+++ b/app/docs/reference/action-types/sms.md
@@ -10,9 +10,9 @@ The SMS action type is used to send text messages to a configured phone number f
You can customize the message of the SMS with [Routegy templating](/reference/templating).
-## Sending messages to dynamic addresses
+## Sending messages to dynamic phone numbers
-It's possible to use a value collected by an app's pattern. To do so, create an SMS action as normal, but in the *Phone number* field place a reference to the value using the syntax `{{ valueName }}`. For example, if you have a [multi-page wizard](/reference/patterns#multipage-patterns) with a page named `step1` and an input called `customerPhone`, you can send an SMS to the collected address using `{{ step1.customerPhone }}` in the *Phone number* field.
+It's possible to use a value collected by an app's pattern as phone number. To do so, create an SMS action as normal, but in the *Phone number* field place a reference to the value using the syntax `{{ valueName }}`. For example, if you have a [multi-page wizard](/reference/patterns#multipage-patterns) with a page named `step1` and an input called `customerPhone`, you can send an SMS to the collected address using `{{ step1.customerPhone }}` in the *Phone number* field.
## Guides
diff --git a/app/docs/reference/action-types/trello.md b/app/docs/reference/action-types/trello.md
index 7f92617..3b138ed 100644
--- a/app/docs/reference/action-types/trello.md
+++ b/app/docs/reference/action-types/trello.md
@@ -7,9 +7,8 @@ description: "How do Trello action types work?"
The Trello action type is used to create cards in a configured board/list for every [event](/reference/events/) created by an [app](/reference/apps/).
-::: tip
-Trello cards can be configured using [templating](/reference/templating/).
-:::
+
+Configuration options include Trello API key token, the ID of the Trello list where the new card will be create, and a card name and description for the new card. Both name and description support [Routegy templating](/reference/templating).
## Guides
diff --git a/app/docs/reference/apps.md b/app/docs/reference/apps.md
index c40d778..79fccab 100644
--- a/app/docs/reference/apps.md
+++ b/app/docs/reference/apps.md
@@ -9,26 +9,26 @@ An app is the point where interactions occur within groups of a workspace.
Each app is linked to a [code](/reference/codes). This enables referencing an app by an opaque value (E.g. URL) that can be encoded into links, QR codes, NFC tags, API clients, etc.
+## Pattern
+
+Every app is linked to a [pattern](/reference/patterns), which defines the interactions and data that are exposed and collected by an app. You can think of a pattern as a template, and each app with that pattern is an instance of that template.
+
## Name and description
An app has `name` and `description` fields which define a "call to action", indicating to a person its purpose and what happens when they interact with it. These fields are displayed when someone interacts with your app, so it's important to be descriptive and concise. For example, a `name` might be "Access request" and the `description` might be "The repo request hub for Acme, Co."
+## Events and actions
+
+A person interacting with an app will potentially create an [event](/reference/events). The event contains information gathered by the app as defined by the app's pattern, and it will trigger any [action](/reference/actions) that is tied to the app.
+
## Attributes
-You can optionally define key-value pairs of information for an app. This information is available to the pattern when an app is accessed as well as events triggered by the app. For example, you may have a key:value pair of `printer_id:0001` that is used in the UX by the pattern to confirm to a person that the app they're accessing corresponds to the proper context, as well as in actions for help in routing, categorizing, etc.
+You can optionally define key-value pairs of information for an app. This information is available to the pattern when an app is accessed as well as event actions triggered by the app. For example, you may have a key:value pair of `printer_id:0001` that is displayed by the pattern to confirm to a person that the app they're accessing corresponds to the proper context. Attributes can also be used in actions for help in routing, categorizing, etc.
::: warning
Attributes are publicly available and should be treated as such. If you're unsure about how best to process sensitive data, please contact us at [support@routegy.com](mailto:support@routegy.com).
:::
-## Pattern
-
-Every app is linked to a [pattern](/reference/patterns), which defines the user experience when interacting with it. It can used to (optionally - see [instant patterns](/reference/patterns#instant-events)) prompt the user for additional information.
-
-## Events and actions
-
-A person interacting with an app will potentially create an [event](/reference/events). The event contains information gathered by the app as defined by the app's pattern, and it will trigger any [action](/reference/actions) that is tied to the app.
-
## Examples
| Code (URL) | Name | Description | Image |
diff --git a/app/docs/reference/patterns.md b/app/docs/reference/patterns.md
index 423faf9..c80357b 100644
--- a/app/docs/reference/patterns.md
+++ b/app/docs/reference/patterns.md
@@ -777,7 +777,8 @@ appSettings:
colors:
header: "#2e1046"
headerText: "#eff0eb"
- footer: "#eff0eb"
+ footer: "#2e1046"
+ footerText: "#eff0eb"
white: "#2e1046"
black: "#eff0eb"
successMessage: Thanks for the report!
@@ -812,6 +813,7 @@ appSettings:
headerText: '#00fab3'
black: black
footer: black
+ footerText: white
grey: grey
primary: '#007252'
lightGrey: lightgrey
@@ -859,11 +861,12 @@ Below is a list of customizable colors along with their default values. When ove
| header | App header background color | |
| headerText | App header text color used for app name and description text displayed in the app header ||
| footer | App footer background color | |
+| footerText | App footer text color used for text displayed in the app footer ||
| white | Background color for contents of an app rendered between the header and the footer | |
| black | Color used for static text like labels as well as text entered into input elements | |
-| grey | Secondary color used for visual elements like outlines of checkboxes and radio buttons | |
+| grey | Secondary color used for outlines of checkboxes and radio buttons and fill color for inactive wizard steps and wizard "back" buttons | |
| lightGrey | Secondary color used for borders of various input elements when they are not active (not focused) | |
-| primary | Color used for borders of active (focused) input elements, hover color for radio and checkbox labels, and fill color for radios, checkboxes, and dropdown arrows | |
+| primary | Color used for borders of active (focused) input elements, hover color for radio and checkbox labels, and fill color for radios, checkboxes, dropdown arrows, and active/complete wizard steps | |
| buttonText | Text color for buttons | |
| success | Background color for elements associated with success actions and notifications (E.g. application submit button) | |
| warning | Background color for elements associated with warning notifications | |
diff --git a/app/docs/reference/templating.md b/app/docs/reference/templating.md
index 1ec8b74..e66ee75 100644
--- a/app/docs/reference/templating.md
+++ b/app/docs/reference/templating.md
@@ -9,85 +9,138 @@ Routegy supports customizing most [action](/reference/actions/) fields using the
Be sure to check out the documentation for your specific [action type](/reference/action-types/) to see if templating is supported.
-## Values
+## Event values
Templates have access to all of the data captured by the [app](/reference/apps/) for the [event](/reference/events/). These values are top-level items in the templating language.
-For example, imagine you have a [pattern](/reference/patterns/) that defines two elements: `problem` and `additional_comment`.
+For example, imagine your app uses a [pattern](/reference/patterns/) that defines two elements: `problem` and `additional_comment`.
-These values would be accessed in your [actions](/reference/actions/) fields by using:
+These values would be accessed in your [actions'](/reference/actions/) fields by using:
* `{{ problem }}`
* `{{ additional_comment }}`
+### Iterating event values
+
+In addition to top-level access to pattern-defined values, you can iterate through items using a collection of all values available in `context.app_data_list`. Each item has a `title`, which is the name of the value, along with the `value` itself.
+
+#### Example
+
+```
+{% for item in context.app_data_list %}
+{{ item.title }}: {{ item.value }}
+{% endfor %}
+
+```
+
## Context
-In addition to the values supplied by the person using your app, templates have access to all of the event's _related_ data. The [app](/reference/apps/) that was used, its [group](/reference/groups/), the [workspace](/reference/workspaces/) these are encapsulated in, etc. All of these values are available to templates through the `context` object.
+In addition to the data defined by the app's pattern and associated values supplied by a person using the app, templates have access to all of the event's _related_ data. The [app](/reference/apps/) that was used, its [group](/reference/groups/), the [workspace](/reference/workspaces/) these are encapsulated in, metadata collected automatically, etc. All of these values are available to templates through the `context` object.
-### Variables
+### The context object
-All variables are accessed using the `{{ variable }}` syntax (E.g. `{{ context.event.created_at }}`).
+All values are accessed using the `{{ variable }}` syntax (E.g. `{{ context.event.created_at }}`).
| Variable | Description | Example |
| ---------| ----------- | ------- |
-| `context.code.id` | ID of the code | d6a1a3af-2bad-40be-9aac-4bbfea50c02e |
-| `context.code.url` | URL of the code | https://rtgy.io/e6Por4d |
-| `context.code.short_id` | Code short id for the app | e6Por4d |
-| `context.code.created_at` | Datetime when code was created | 2020-06-04T11:53:25-07:00 |
-| `context.code.updated_at` | Datetime when code was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.action.created_at` | Datetime when action was created | 2020-06-04T11:53:25-07:00 |
| `context.action.id` | ID of the action | 0617c463-a6c4-411e-8747-3dfaccdaf5af |
-| `context.action.url` | URL of the action | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/actions/0617c463-a6c4-411e-8747-3dfaccdaf5af |
| `context.action.name` | Name of the action | SMS - Alerts |
-| `context.action.slug` | Slug of the action | sms-alerts |
-| `context.action.created_at` | Datetime when action was created | 2020-06-04T11:53:25-07:00 |
-| `context.action.updated_at` | Datetime when action was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.action.pattern.created_at` | Datetime when action pattern was created | 2020-06-04T11:53:25-07:00 |
| `context.action.pattern.id` | ID of the action pattern | 74e41b0d-3c5a-4cbb-96ab-145984341bc7 |
-| `context.action.pattern.url` | URL of the action pattern | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/patterns/74e41b0d-3c5a-4cbb-96ab-145984341bc7 |
| `context.action.pattern.name` | Name of the action pattern | SMS |
| `context.action.pattern.slug` | Slug of the action pattern | sms |
-| `context.action.pattern.created_at` | Datetime when action pattern was created | 2020-06-04T11:53:25-07:00 |
| `context.action.pattern.updated_at` | Datetime when action pattern was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.action.pattern.url` | URL of the action pattern | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/patterns/74e41b0d-3c5a-4cbb-96ab-145984341bc7 |
+| `context.action.slug` | Slug of the action | sms-alerts |
+| `context.action.updated_at` | Datetime when action was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.action.url` | URL of the action | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/actions/0617c463-a6c4-411e-8747-3dfaccdaf5af |
+| `context.app_data_list` | Iterable collection of pattern-defined values | See [here](#iterating-event-values) |
+| `context.app.created_at` | Datetime when app was created | 2020-06-04T11:53:25-07:00 |
+| `context.app.breadcrumbs` | Breadcrumbs of app | Office / First Floor / Kitchen / Coffee Machine |
+| `context.app.id` | ID of the app | 8b50a1c8-01c8-4f58-8215-ee5cb22d8585 |
+| `context.app.metadata.attributes` | [Attributes](/reference/apps#attributes) associated with the app | `context.app.metadata.attributes.myValue
+| `context.app.name` | Name of the app | Coffee Machine |
+| `context.app.pattern.created_at` | Datetime when app pattern was created | 2020-06-04T11:53:25-07:00 |
+| `context.app.pattern.id` | ID of the app pattern | 8e2e5a9a-e8f0-4f83-839d-246d865c98cb |
+| `context.app.pattern.name` | Name of the app pattern | Coffee machine problem |
+| `context.app.pattern.slug` | Slug of the app pattern | coffee-machine-problem |
+| `context.app.pattern.updated_at` | Datetime when app pattern was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.app.pattern.url` | URL of the app pattern | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/patterns/8e2e5a9a-e8f0-4f83-839d-246d865c98cb |
+| `context.app.slug` | Slug of the app | coffee-machine |
+| `context.app.updated_at` | Datetime when app was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.app.url` | URL of the app | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/tree/apps/8b50a1c8-01c8-4f58-8215-ee5cb22d8585 |
+| `context.code.created_at` | Datetime when code was created | 2020-06-04T11:53:25-07:00 |
+| `context.code.id` | ID of the code | d6a1a3af-2bad-40be-9aac-4bbfea50c02e |
+| `context.code.short_id` | Code short id for the app | e6Por4d |
+| `context.code.updated_at` | Datetime when code was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.code.url` | URL of the code | https://rtgy.io/e6Por4d |
+| `context.event.created_at` | Datetime when event was created | 2020-06-04T11:53:25-07:00 |
+| `context.event.id` | ID of the event | f3496601-92dc-4750-bddc-83afda953013 |
+| `context.event.metadata` | Metadata associated with the event | { } |
+| `context.event.updated_at` | Datetime when event was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.event.url` | URL of the group | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/events/f3496601-92dc-4750-bddc-83afda953013 |
+| `context.group.breadcrumbs` | Breadcrumbs of group | Office / First Floor / Kitchen |
+| `context.group.created_at` | Datetime when group was created | 2020-06-04T11:53:25-07:00 |
| `context.group.id` | ID of the group | c47d3b00-28a6-4129-a485-60682d48bddd |
-| `context.group.url` | URL of the group | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/tree/groups/c47d3b00-28a6-4129-a485-60682d48bddd |
| `context.group.name` | Name of the group | Kitchen |
| `context.group.slug` | Slug of the group | kitchen |
-| `context.group.created_at` | Datetime when group was created | 2020-06-04T11:53:25-07:00 |
| `context.group.updated_at` | Datetime when group was last updated | 2020-06-04T12:32:54-07:00 |
-| `context.group.breadcrumbs` | Breadcrumbs of group | Office / First Floor / Kitchen |
+| `context.group.url` | URL of the group | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/tree/groups/c47d3b00-28a6-4129-a485-60682d48bddd |
+| `context.organization.created_at` | Datetime when organization was created | 2020-06-04T11:53:25-07:00 |
| `context.organization.id` | ID of the organization | 319a4ae5-c33f-4685-b43b-3f14959042e8 |
| `context.organization.name` | Name of the organization | My Organization |
| `context.organization.slug` | Slug of the organization | my-organization |
-| `context.organization.created_at` | Datetime when organization was created | 2020-06-04T11:53:25-07:00 |
| `context.organization.updated_at` | Datetime when organization was last updated | 2020-06-04T12:32:54-07:00 |
-| `context.event.id` | ID of the event | f3496601-92dc-4750-bddc-83afda953013 |
-| `context.event.url` | URL of the group | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/events/f3496601-92dc-4750-bddc-83afda953013 |
-| `context.event.created_at` | Datetime when event was created | 2020-06-04T11:53:25-07:00 |
-| `context.event.updated_at` | Datetime when event was last updated | 2020-06-04T12:32:54-07:00 |
-| `context.app.id` | ID of the app | 8b50a1c8-01c8-4f58-8215-ee5cb22d8585 |
-| `context.app.url` | URL of the app | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/tree/apps/8b50a1c8-01c8-4f58-8215-ee5cb22d8585 |
-| `context.app.name` | Name of the app | Coffee Machine |
-| `context.app.slug` | Slug of the app | coffee-machine |
-| `context.app.created_at` | Datetime when app was created | 2020-06-04T11:53:25-07:00 |
-| `context.app.updated_at` | Datetime when app was last updated | 2020-06-04T12:32:54-07:00 |
-| `context.app.breadcrumbs` | Breadcrumbs of app | Office / First Floor / Kitchen / Coffee Machine |
-| `context.app.metadata.attributes` | [Attributes](/reference/apps#attributes) associated with the app | `context.app.metadata.attributes.myValue` |
-| `context.app.pattern.id` | ID of the app pattern | 8e2e5a9a-e8f0-4f83-839d-246d865c98cb |
-| `context.app.pattern.url` | URL of the app pattern | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29/patterns/8e2e5a9a-e8f0-4f83-839d-246d865c98cb |
-| `context.app.pattern.name` | Name of the app pattern | Coffee machine problem |
-| `context.app.pattern.slug` | Slug of the app pattern | coffee-machine-problem |
-| `context.app.pattern.created_at` | Datetime when app pattern was created | 2020-06-04T11:53:25-07:00 |
-| `context.app.pattern.updated_at` | Datetime when app pattern was last updated | 2020-06-04T12:32:54-07:00 |
| `context.user.id` | ID of the organization owner | 2de59476-fa4e-45ea-9cfb-cd11944b5eda |
-| `context.user.name` | Name of the organization owner | John Smith |
-| `context.user.slug` | Slug of the organization owner | john-smith |
-| `context.user.email` | Email address of the organization owner | jsmith@example.org |
| `context.user.created_at` | Datetime when organization owner was created | 2020-06-04T11:53:25-07:00 |
-| `context.user.updated_at` | Datetime when organization owner was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.user.email` | Email address of the organization owner | jsmith@example.org |
| `context.user.locale` | Locale of organization owner | en |
+| `context.user.name` | Name of the organization owner | John Smith |
+| `context.user.slug` | Slug of the organization owner | john-smith |
| `context.user.time_zone` | Time zone of organization owner | America/Los_Angeles |
+| `context.user.updated_at` | Datetime when organization owner was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.workspace.created_at` | Datetime when workspace was created | 2020-06-04T11:53:25-07:00 |
| `context.workspace.id` | ID of the workspace | 4e96d27a-7624-45ef-8411-a2ef8f27cc29 |
-| `context.workspace.url` | URL of the workspace | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29 |
| `context.workspace.name` | Name of the workspace | Office |
| `context.workspace.slug` | Slug of the workspace | office |
-| `context.workspace.created_at` | Datetime when workspace was created | 2020-06-04T11:53:25-07:00 |
| `context.workspace.updated_at` | Datetime when workspace was last updated | 2020-06-04T12:32:54-07:00 |
+| `context.workspace.url` | URL of the workspace | https://web.routegy.com/workspaces/4e96d27a-7624-45ef-8411-a2ef8f27cc29 |
+
+## Examples
+
+### Simple message
+
+```
+New event from {{ context.app.name }}: {{ context.event.url }}
+```
+
+### Simple message with event value
+
+```
+{{ context.app.name }} says {{ greetingMessage }}
+```
+
+### Message with all event values
+
+```
+New event from {{ context.app.breadcrumbs }} reported at {{ context.event.created_at | date("%I:%M %p %a, %b %d") }}
+
+{% for item in context.app_data_list %}
+{{ item.title }}: {{ item.value }}
+{% endfor %}
+
+Visit {{ context.event.url }} for more details.
+```
+
+### Message with custom event metadata
+
+```
+Routegy > {{ context.app.breadcrumbs }} / {{ context.event.metadata.trigger }} at {{ context.event.created_at | date("%I:%M %p %a, %b %d") }}
+
+Device: {{ context.event.metadata.chip }}
+IP: {{ context.event.metadata.network.ip }}
+MAC: {{ context.event.metadata.network.mac }}
+
+Visit {{ context.event.url }} for more details.
+```
diff --git a/app/docs/tutorial/routegy-at-a-glance.md b/app/docs/tutorial/routegy-at-a-glance.md
index 12b04be..e618fc4 100644
--- a/app/docs/tutorial/routegy-at-a-glance.md
+++ b/app/docs/tutorial/routegy-at-a-glance.md
@@ -7,16 +7,16 @@ description: "How do I use Routegy?"
Routegy makes building no-code microapps quick and easy. Routegy microapps empower people to interact with your infrastructure and physical spaces in streamlined ways. Here’s a high-level overview of how Routegy works.
-## People interact with apps
-
-[Routegy apps](/reference/apps/) open in a web browser and represent common points of interaction, accomplish specific tasks that may span multiple parts of your infrastructure, and contain context to further optimize your processes. Common interactions include reporting issues, making requests, starting chat conversations, providing feedback, and even making purchases.
-
+## People interact with apps
+
+[Routegy apps](/reference/apps/) open in a web browser and represent common points of interaction, accomplish specific tasks that may span multiple parts of your infrastructure, and contain context to further optimize your processes. Common interactions include reporting issues, making requests, starting chat conversations, providing feedback, and even making purchases.
+
## Groups organize your apps
Apps belong to [groups](/reference/groups/), which are structured in a tree-like hierarchy. These can represent physical things, like `1st Floor` or `HQ Building 1`, people (E.g. `Employees -> Jane Smith`), or virtual things like `Production Website` or `Inventory`.
@@ -31,7 +31,7 @@ You don't have to use groups, but they're always there if the need for more orga
## Patterns define the information your apps collect
-Every app has a pattern. [Patterns](/reference/patterns/) control the UX and defines the information to collect for each interaction with an app. Patterns are reusable across multiple apps, allowing for easy scaling and maintenance. For example, you may have a pattern for "New Employee Orientation" and then automatically create a personalized app from that pattern for every new employee.
+Every app has a pattern. [Patterns](/reference/patterns/) control the UX and define the information to collect for each interaction with an app. Patterns are reusable across multiple apps, allowing for easy scaling and maintenance. For example, you may have a pattern for "New Employee Orientation" and then automatically create a personalized app from that pattern for every new employee.
Patterns are written in YAML and can be used to capture any information you like.