# Automate Foundations

### About this export

| Field | Value |
| --- | --- |
| **content_type** | course |
| **platform** | contentstack-academy |
| **source_url** | https://www.contentstack.com/academy/courses/automate-foundations |
| **language** | en |
| **product_area** | Contentstack Academy |
| **learning_path** | contentstack-developer-certification |
| **course_id** | automate-foundations |
| **slug** | automate-foundations |
| **version** | 2026-03-01 |
| **last_updated** | 2026-05-11 |
| **status** | published |
| **keywords** | ["Contentstack Academy"] |
| **summary_one_line** | Automate is a user-friendly visual workflow builder designed for business users and developers. It empowers you to effortlessly create and manage complex, multi-step processes through intuitive clicks instead of delving … |
| **total_duration_minutes** | 74 |
| **lessons_count** | 22 |
| **video_lessons_count** | 10 |
| **text_lessons_count** | 12 |
| **linked_learning_path** | contentstack-developer-certification |
| **linked_assessment_ref** | LMS_UNCONFIGURED_COURSE_ASSESSMENT |
| **markdown_file_url** | /academy/md/courses/automate-foundations.md |
| **generated_at** | 2026-05-11T07:02:17.917Z |
| **intended_audience** | [] |
| **prerequisites** | [] |
| **related_courses** | [] |

> **Academy MD v3** — companion `.md` for Ask AI. Quizzes and graded assessments are **LMS-only**; this file never contains answer keys.

## Course Overview

| Metadata | Value |
| --- | --- |
| Catalog duration | 1h 13m 57s |
| Released (if known) | 2026-03-01 |
| Product area | Contentstack Academy |

### Description

Automate is a user-friendly visual workflow builder designed for business users and developers. It empowers you to effortlessly create and manage complex, multi-step processes through intuitive clicks instead of delving into code. This simplification streamlines the integration of the Contentstack platform into your composable architecture, alleviating the associated technical complexities.

**Pre-requisites:**  
  
1\. Account in Contentstack with access to a Stack as an Administrator or Developer. If possible, please create a new Stack to use only with the Partner Courses.

2\. A basic comprehension of the Contentstack platform, extensions, and integrations.

3\. Comfortable taking a screenshot or a movie of your screen. The free browser tool 'Loom' is one of many ways to do this.

4\. Contentstack Community account. If you do not have one, visit community.contentstack.com/ and register for a new account. You can adjust your email notifications under your profile at https://community.contentstack.com/settings/general ﹥ Settings.

### Overview

We are excited for you to learn how Contentstack's Automate can assist you in automating your workflows while integrating with external platforms. This course will present examples of Automation Hub recipes and ask you to follow along to recreate these recipes in your Contentstack organization.  
If you don't yet have a site for the exercises, we recommend creating a [new Starter App site using the Bootstrap CLI](https://www.contentstack.com/docs/developers/cli/bootstrap-starter-apps/) for the course exercises. Through practical examples, you will gain an understanding of how to create automations and be able to unlock the power of the platform for your organization.

### Learning objectives

About this course

### Topics covered

Contentstack Academy

## Course structure

```text
automate-foundations/
├── 01-what-is-automate · text · 5 min
├── 02-creating-a-new-project · text · 1 min
├── 03-first-automate-project-walkthrough · video · 432s
├── 04-exercise-review-your-first-automation-hub-project · text · 1 min
├── 05-settings-options · video · 69s
├── 06-understanding-triggers · text · 1 min
├── 07-using-trigger-connectors · video · 115s
├── 08-using-connectors · text · 1 min
├── 09-action-connectors · video · 169s
├── 10-automate-connectors · text · 1 min
├── 11-types-of-action-connectors · text · 1 min
├── 12-automations-in-marketplace · video · 138s
├── 13-using-trigger-conditions-to-control-an-automate-execution · video · 218s
├── 14-using-conditionals-when-publishing-to-production · video · 125s
├── 15-using-the-http-connector-with-a-publish-event · video · 126s
├── 16-using-http-listeners · video · 126s
├── 17-understanding-http-listeners · text · 1 min
├── 18-understanding-scheduler · text · 1 min
├── 19-launch-connector · text · 1 min
├── 20-automate-foundations-quiz · quiz (LMS only) · 3 min
├── 21-utility-connectors · text · 1 min
├── 22-use-case-translation-with-chatgpt · video · 834s
```

## Lessons

### Lesson 01 — What is Automate

<!-- ai_metadata: {"lesson_id":"01","type":"text","duration_minutes":5,"topics":["What","Automate"]} -->

#### Lesson text

## What is Automate?

Automate is a user-friendly visual workflow builder designed for business users and developers. It empowers you to effortlessly create and manage complex, multi-step processes through intuitive clicks instead of delving into code. This simplification streamlines the integration of the Contentstack platform into your composable architecture, alleviating the associated technical complexities.  
  

![AH-image1.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf9681be1b6d35416/6625c430700d6cafe6a666b9/AH-image1.png)

When someone opts for a headless CMS, they embrace the concept of "composing" a best-of-breed solution for themselves. Composability revolves around the idea of "plug-and-play," but not all competitors in the market offer true composability. This is where Automate sets itself apart.

While other headless CMS competitors may provide some degree of automation, their automation is often limited to their CMS only.

**Contentstack's Automate extends its capabilities across the composable marketplace beyond the CMS.**

In other words, Automate is the first-ever automation solution that seamlessly integrates and functions across the composable stack! It empowers users to automate tasks within Contentstack's CMS and throughout their entire digital experience ecosystem.  

By leveraging Automate, users can create dynamic workflows while automating publishing, approvals, archiving, and other content operations without needing custom development. Its intuitive visual workflow builder and pre-built "recipes" enable users to streamline their content operations, regardless of technical expertise, efficiently.

![AH-image2.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt190acdddc8aac224/6625c4fb210d90d2483a3240/AH-image2.png)![AH-image3.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blta8ff7ac243b34016/6625c57424e1812b95acc90a/AH-image3.png)

## Examples

![AH-image4.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf12e36182ffa4624/6625c5afc9de46bfffd472c6/AH-image4.png)

### Example Use Cases:

**Content Enrichment**: When content goes into a workflow stage, it executes an Automation to fetch information from external systems to write back to Contentstack.  
**Rapid Prototyping**: When you have an idea for a new process or concept, you can play around with it quickly in Automate by pointing and clicking to connect the APIs.  
**Workflow Orchestration**: With Automate, you can expand your content lifecycle to define events across the entire business process, not just inside Contentstack, such as marketing campaigns or newsletters.

###   
Simple Automation Script

Let's say you have a blog website and want to automate the publishing process of new blog posts.

Your workflow for Automate could look like this**:**

1.  **Trigger:**
    
    When a new entry is created in the "Blog" content type.
    
2.  **Condition:**
    
    Check if the blog post's author is in an "Editor" role.
    
3.  **Action:**
    
    If the condition is met, automatically set the "Status" of the blog post to "Review."
    
4.  **Notification:**
    
    Send an email notification to the "Reviewers" group to review the new blog post.
    
5.  **Review and Approval:**
    
    The reviewers can review the blog post, make any necessary changes, and approve it for publishing.
    
6.  **Action:**
    
    If the blog post is approved, set the "Status" to "Published."
    
7.  **Action:**
    
    If the blog post is rejected, set the "Status" to "Draft" and notify the author for revisions.
    

With this workflow in place, whenever a new blog post is created, the Automate will automatically move the content through the different stages, notify the relevant users, and update the status based on the reviews and approvals.

This automation can save time, reduce manual errors, and ensure a smooth content publishing process. Contentstack's Automate empowers users to design and implement customized workflows, tailoring them to meet their organization's specific content management requirements.

Another example of an event is when a content entry is published or saved. When an event is triggered, we can use an Automate Connector to integrate with an external platform and perform an action using content from Contentstack. Pre-built Automate Connectors make setting up and configuring the integrations very easy. This course will show many examples of using these Automate Connectors to create integrations with search platforms, email systems, and commerce.  

### Three reasons to use Automate

1.  **Integrate apps & tools faster.**
    
    Reduce integration time with an intuitive visual workflow builder that enables teams to connect Contentstack's CMS to the rest of the tools in their composable stack--all with clicks, not code.
    
    \- Empower any user to create integrations with an easy-to-use visual editor  
    \- Execute complex actions defined by custom event triggers  
    \- Leverage pre-built “recipes” to get started quickly  
    \- Eliminate costly mistakes & middleware
    
2.  **Eliminate the headache and costs associated with developing, hosting, and maintaining middleware by managing your integration solutions in one place.**
    
    \- Reduce complexity and increase efficiency by managing all your integrations in one centralized location.  
    \- Save money by removing the costs of hosting and managing middleware infrastructure.  
    \- Simplify your tech stack by eliminating the need for middleware development.  
    \- Streamline content & development operations
    
3.  **Level up your content ops game and streamline content governance with advanced features that automate content workflows and provide greater visibility and control.**
    
    \- Automate publishing, approvals, archiving, and other content creation workflows.  
    \- Push content changes to all of your digital experience channels at once.  
    \- Assign advanced permissions and access controls for enterprise-level content governance.
    

Automate ability to traverse the composable stack eliminates the need for costly middleware and offers unparalleled flexibility and efficiency. It opens up new possibilities for organizations to enhance their content operations, achieve faster time-to-market, and unlock the full potential of their digital experience stack.

#### Key takeaways

- Connect **What is Automate** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 02 — Creating a New Project

<!-- ai_metadata: {"lesson_id":"02","type":"text","duration_minutes":1,"topics":["Creating","New","Project"]} -->

#### Lesson text

## Creating a Project in Automate

When you **create a project** in Automate, it means you are setting up a dedicated space to manage and execute your automation tasks.

By creating a project, you can automate various content-related tasks, reducing manual effort, improving efficiency, and ensuring consistency in your content management processes.

### Steps to Create a 'New Project' in Automate

1.  Log in to your Contentstack account and navigate to **Automate** from the left navigation panel.  
    
    ![automate-section.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt29d01db612819a0b/6648ba4c16e6bf37bb590c44/automate-section.png)
    
2.  Click on the**'New Project' button** to create a new project.  
    
    ![new-project.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1a56786c25015b54/6648bb616d705597e74d9090/new-project.png)
    
3.  This opens a dialog box where you can provide a name and description (as optional) for your project. This helps you identify and organize your automation tasks effectively.
4.  Click **Create**.
5.  After successfully creating the project, you can start building an automation.

## Creating an Automation

Creating a **new automation** inside a project in Contentstack's Automate allows you to define and set up specific automated tasks or workflows to streamline your content management processes. It helps you set up specific steps that will be performed based on the specified conditions. Once you define these steps, Contentstack Automate will run through the designated steps.

1.  Navigate inside the previous project that you created and click **\+ New Automation**.  
    ![create-project.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt55529f56aa4828f0/6648bc25d4d02e992a2eab6d/create-project.png)
2.  This opens a dialog box where you can provide a name and description (optional) for your automation.  
    ![new-automation-dialog.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt5852cf6e9447a81d/6648bd9352619d711ea90a13/new-automation-dialog.png)
3.  Click **Create**.
4.  After successfully creating the automation, you can start configuring the trigger and action steps.  
    
    ![trigger-action-sterps.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blte4704e39fdbc450e/6648bdef5fd9af818c70e24e/trigger-action-sterps.png)
    

## Limitations of Automate

*   By default, each organization will be enrolled in the **Explorer Plan**, which is included at no cost and allows up to **200 executions per month (200 soft cap and 200 hard cap)**.
*   The maximum number of **projects** allowed per organization is **50**.
*   The maximum number of **automations allowed per project** is **50**.
*   The maximum number of **steps allowed per automation** is **15**.
*   The **maximum number of loops per Repeat Path is 100**.
*   Currently, organization members can **only view and edit their own projects**.
*   There is no support for nesting within Conditional Path and Repeat Path steps.
*   The Pause and Response action connectors cannot be used within Conditional Path and Repeat Path steps.
*   Automate is a plan-based feature, and the number of executions allowed depends upon the Automate pricing plan that is activated for a particular organization.
*   Organizations that have upgraded to a paid plan will have a soft cap for executions (when reaching this threshold they will be notified by email), and a hard cap that is 5x the number of the soft cap. After the organization hits the hard cap, automations will be temporarily disabled for that month.

## Further Reading

*   [More about 'Create a New Automation'](https://www.contentstack.com/docs/developers/automation-hub-guides/create-an-automation/)
*   [Edit an existing Automation](https://www.contentstack.com/docs/developers/automation-hub-guides/edit-automation-details/)
*   [Delete an existing Automation](https://www.contentstack.com/docs/developers/automation-hub-guides/delete-automation/)
*   [Automate Limitations - Review maximum number of projects, automations and steps](https://www.contentstack.com/docs/developers/automation-hub-guides/limitations-of-automation-hub)

#### Key takeaways

- Connect **Creating a New Project** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 03 — First Automate Project Walkthrough

<!-- ai_metadata: {"lesson_id":"03","type":"video","duration_seconds":432,"video_url":"https://cdn.jwplayer.com/previews/cn4Eqtpu","thumbnail_url":"https://cdn.jwplayer.com/v2/media/cn4Eqtpu/poster.jpg?width=720","topics":["First","Automate","Project","Walkthrough"]} -->

#### Video details

#### At a glance

- **Title:** Ah-first Ah Project
- **Duration:** 7m 12s
- **Media link:** https://cdn.jwplayer.com/previews/cn4Eqtpu
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113426 kbps
- video/mp4 · 180p · 180p · 139038 kbps
- video/mp4 · 270p · 270p · 153222 kbps
- video/mp4 · 360p · 360p · 169831 kbps
- video/mp4 · 406p · 406p · 177682 kbps
- video/mp4 · 540p · 540p · 208781 kbps
- video/mp4 · 720p · 720p · 254056 kbps
- video/mp4 · 1080p · 1080p · 351856 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/cn4Eqtpu-120.vtt`

#### Video transcript

Welcome to ContentStack's Automation Hub. In this video, we will take a look at creating our first automation. When we publish a content entry, we want to send an e-mail to a user. It's a very simple automation, but lets us get an understanding of how to create an automation and how to turn it on and execute it. Let's go ahead and get started. First, let's click on the ContentStack icon in the top left. That's going to take us to the organization view. Over here in the organization view, we have a few options on the left side, and one of them is Automation Hub. Click on Automation Hub icon or press the A key. This takes us to our Automation Hub dashboard, where you can see a list of our Automation Hub projects. Currently, I have one called Translation. We want to make a new one to send our e-mail. So I'm going to click on the new project icon in the top right. The project can contain multiple automations. So possibly later on, I want to add other automations that do things on publish. So I'm going to call this Automations for Publish Action. So anytime somebody publishes an entry or an asset, I might want to perform some automations. Click the Create button. Now it's going to create my empty Automation Hub project for me. At this point, we can either browse a marketplace for some existing automation projects that we can reuse or we can create a new automation. In this video, we're going to do the new Automation Action. Our automation name is going to be notify users by e-mail when publishing. Now we get a chance to choose our connector. Because we're starting with an action from Content Stack, the publish action on an entry, we want to choose a Content Stack connector. We'll talk about the other connectors in future videos. Now it's a chance to choose our trigger. The trigger is what's going to start the automation. We want to do that on an entry whenever an entry is published. So I'll choose the entry trigger, and then down here under Event, I'm going to choose Published. We're also going to select our stack. Now it's telling me it can't read it yet, and that's because we haven't actually logged in and set up an account. So the first step we should do is actually add a new account. This is going to authorize Automation Hub to access Content Stack and read the Content Stack and other properties inside Content Stack. It uses OAuth for authentication, so it's a secure system. Choosing our organization here. The next thing we're going to do is just save that. So now we have our Content Stack account set up. We can also go in here to stack and choose our Next.js training stack. That's it. We can go ahead and click proceed here. By the way, we also have optional fields, and if you wanted to run this only on a specific content type, or when we publish to production or publish to preview, you can set up these at this time. You can edit that later on. So if you want to use a content type or environment, you should set it up right now. We're going to just, every time we publish something, go ahead and send an e-mail, so we'll leave that empty. Go ahead and click proceed, and now testing the trigger. This is one of the most important steps when you're working with Automation Hub, is testing the trigger in the first step and loading in the JSON of this entry into the automation. That's going to give us access to the properties and content of this entry later on. Click the test trigger button, and it's going to ask me to go ahead and perform an action. So now what I need to do is go back into Content Stack, for example, and publish something from my Next.js starter site. So here I am in my organization. Let's go to the Next.js starter site and go ahead and publish any of these entries. And we're not filtering right now in the publish action, so we can publish them anywhere to, where any of these environments would be fine. Now going back into Automation Hub, let's retest, and we get all the properties loaded in. System properties, but also content as well. Save and exit, and save and exit. Next, let's go to step two over here, configure action step. Click on action step. And now here are the actions that we can perform with this data, with this entry that's being published. Maybe we want to add it to an error table. Maybe we want to send it to a search index. Maybe we want to do something else in Content Stack. But for this automation today, what we want to do is send an email. So navigate down here, email by Automation Hub, and select that. Over here on the to address, type in your email address, so you can receive that email on your account for testing. Subject, I'm going to say page published from Content Stack. Body type is text, and then the body, we can say page with title. Here now we can use the variables that we have from our first step. If you only see global, then go back to step one and do retest, because only when you test on the first step, you're going to have the entry trigger with the properties there. When you search and search for title, and select my entry title right there, page with title, this is published. Okay. So we have our text, we have a variable coming in, and then we're ready to go ahead and proceed. Let's test the action. And now Content Stack is sending an email to your email account right here. Here you can see my email message, page with the title, the future of business with AI is published. So that's looking great. The next step we want to do is just save and exit, and turn the automation on, so it's going to run every time. By the way, you can have up to 20 of these action steps. Today, we're just testing with email, but in the future, you can have more complicated automations. So to activate the automation in the top left, we're going to turn that toggle on to activate automation. Now it's turned on, it's going to be listening for every publish event from that stack. So go back into your stack and choose another item, hit the publish button, and publish it out to an environment. Over here in Content Stack in your email, check your email again. You should see another email here. Here I see page with title robotics is published. That's about it for this video. So as a quick recap, what did we do? As we first started by going to Automation Hub, the next thing we did is we created a new project. We gave that project a name, and then we created a new automation. The automation has two steps. On the entry trigger over here, we're using the Content Stack connector and the entry trigger, and we're listening for the publish event. We tested that to load the JSON in there. And then step two, we came down here and used the email connector to email us whenever any page is published from Content Stack. Hope you were successful like me and see you in another video. Thank you.

#### Key takeaways

- Connect **First Automate Project Walkthrough** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 04 — Exercise Review: Your First Automation Hub Project

<!-- ai_metadata: {"lesson_id":"04","type":"text","duration_minutes":1,"topics":["Exercise","Review","Your","First","Automation","Hub"]} -->

#### Lesson text

# Exercise Review: Your First Automation Hub Project

1\. The Automation Hub Project contains one or more automations. The configuration settings and authorizations are shared within an Automation Hub project.

![er-create-automation.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltdfe3ff2a3c263cbe/6648c1205c24835191bc345b/er-create-automation.png)2. The Contentstack Trigger Connector allows us to listen and react to events occurring within the Contentstack UI. For example, the publish entry or save entry events. 

![config-trigger.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt84323b82694e0c34/6648c1a5d4d02eecc82eab76/config-trigger.png)

![trigger-types.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt66a6986f45bfa9df/6648c202acadaf48b07282dc/trigger-types.png)3\. The Action step receives the JSON from the Entry in the event and can access the properties of the Entry.  

![test-trigger.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt7209e595367da050/6648c24e0b508a7d34dcfc62/test-trigger.png)

![test-trigger2.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd7d3aaaee993018a/6648c2613092d0864a63f98d/test-trigger2.png)4\. Access the content fields of the Entry using the 'body.data.entry' property in the Body of the email. Other connectors allow similar access to the Entry content in the Action step.

![email-automate.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt07960e4f683f1151/6648c2c24ac76e5e0740f842/email-automate.png)

#### Key takeaways

- Connect **Exercise Review: Your First Automation Hub Project** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 05 — Settings & Options

<!-- ai_metadata: {"lesson_id":"05","type":"video","duration_seconds":69,"video_url":"https://cdn.jwplayer.com/previews/SHvpVjgb","thumbnail_url":"https://cdn.jwplayer.com/v2/media/SHvpVjgb/poster.jpg?width=720","topics":["Settings","Options"]} -->

#### Video details

#### At a glance

- **Title:** Ah-overview-settings
- **Duration:** 1m 9s
- **Media link:** https://cdn.jwplayer.com/previews/SHvpVjgb
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113838 kbps
- video/mp4 · 180p · 180p · 136608 kbps
- video/mp4 · 270p · 270p · 147781 kbps
- video/mp4 · 360p · 360p · 159575 kbps
- video/mp4 · 406p · 406p · 168047 kbps
- video/mp4 · 540p · 540p · 187396 kbps
- video/mp4 · 720p · 720p · 223214 kbps
- video/mp4 · 1080p · 1080p · 292955 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/SHvpVjgb-120.vtt`

#### Video transcript

In this video, we'll take a look at the settings and options in an Automation Hub project. Let's get started. First, go into Automation Hub and onto the Projects Dashboard. Here we see a list of all the projects and also how many automations each one contains. Over here under Settings, we have the option to specify notification settings whenever an error occurs. You can specify the frequency here and choose the recipients. Next, let's open a project. Inside the project on the left side, you can see that we have an Automations list. Underneath that, we have Execution Log. This is how many times an automation has been run. So normally you have in the free plan 200 automations every month that can run. That would mean 200 executions. Down here in the Audit Log, you can see the settings and steps I use to create automations or update automations, etc. Under that, we have Connected Apps, and these are any third-party applications that you're using within your automations. And finally, down here at the bottom, we have Settings. You can see the project name, the description, and also invite any users. That's about it for the settings and overview. Thank you very much.

#### Key takeaways

- Connect **Settings & Options** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 06 — Understanding Triggers

<!-- ai_metadata: {"lesson_id":"06","type":"text","duration_minutes":1,"topics":["Understanding","Triggers"]} -->

#### Lesson text

![types-of-triggers.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt13fb0843f8d32f85/6648dc36dda14b1dbfdff5d7/types-of-triggers.png)

In Contentstack, Triggers are conditions or invocation points that begin, or "fire off", an Automation when an event occurs.  Events supported include: actions within Contentstack such as a Save or Publish event,  scheduled event, receiving a webhook call from an external platform, or deploying an app with the Contentstack Launch product.  Triggers and events help automate a business workflow to accomplish required tasks.

In the real world, Triggers are like sensors or switches that detect specific events or conditions and initiate a series of actions or workflows in response. They act as the starting point for automation, signaling when something specific happens and prompting the system to perform predefined tasks.

## What are Triggers?

*   First, let's look at an analogy.  Imagine a scenario with a high-tech security system installed in your house. This system includes motion sensors, door sensors, and cameras, all connected to a central control panel. These are all "triggers" that wait for motion. Then, they send a signal with information about the motion (photo / time / device ID) to the control panel, which serves as the hub for automation and security.  After the hub receives the trigger notification, it can perform a series of actions customized by the type of information received - for example, play a small sound for a door sensor or send a video to the cloud for a camera sensor.
    
*   In this scenario, triggers in the Automation Hub can be compared to the various sensors placed throughout your house. When a trigger event occurs, such as a motion sensor detecting movement or a door sensor detecting an unauthorized entry, it sends a signal to the central control panel.
    
*   For instance, if a trigger event is defined to activate when a new article is published, it will automatically initiate a series of actions like sharing the article on social media platforms, sending notifications to subscribers, or updating relevant databases. The trigger serves as the starting point for these actions, ensuring that the appropriate automation processes are set in motion based on the defined events.
    

Triggers in Automation Hub detect specific events or conditions within Contentstack. These events can range from content publishing, content updates,  API calls, or scheduled time intervals. When a trigger event occurs, it activates the automation workflow associated with it.

## Types of Connection Triggers

![types-of-triggers.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt973d0a0974d50e66/6648dc9f0bbc6203ad7fabbf/types-of-triggers.png)

1.  **Contentstack:** This connector allows you to create triggers based on content-related events, such as creation, update, publish, or delete actions within Contentstack itself.
    
2.  **HTTP:** The HTTP connector allows you to create triggers based on incoming HTTP requests from external services or applications. You can configure webhooks or receive notifications from external systems.
    
3.  **Launch:** The Launch connector enables you to create triggers based on events within Contentstack's Launch environment. The launch is a product by Contentstack that provides a robust way to manage and deliver content to various digital channels.
    
4.  **Scheduler:** The Scheduler connector enables you to create triggers based on a predefined schedule or time interval. You can set up triggers to execute actions at specific times or recurring intervals.
    

Each connector provides specific functionalities to trigger actions based on different events or conditions within Contentstack or external systems. We will explore them in detail very soon.

#### Key takeaways

- Connect **Understanding Triggers** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 07 — Using Trigger Connectors

<!-- ai_metadata: {"lesson_id":"07","type":"video","duration_seconds":115,"video_url":"https://cdn.jwplayer.com/previews/F8X2LBBr","thumbnail_url":"https://cdn.jwplayer.com/v2/media/F8X2LBBr/poster.jpg?width=720","topics":["Using","Trigger","Connectors"]} -->

#### Video details

#### At a glance

- **Title:** Ah-trigger Connectors
- **Duration:** 1m 55s
- **Media link:** https://cdn.jwplayer.com/previews/F8X2LBBr
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113626 kbps
- video/mp4 · 180p · 180p · 138810 kbps
- video/mp4 · 270p · 270p · 152856 kbps
- video/mp4 · 360p · 360p · 168038 kbps
- video/mp4 · 406p · 406p · 178315 kbps
- video/mp4 · 540p · 540p · 205943 kbps
- video/mp4 · 720p · 720p · 252372 kbps
- video/mp4 · 1080p · 1080p · 351928 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/F8X2LBBr-120.vtt`

#### Video transcript

In this video we'll take a look at the trigger connectors for ContentStack. Let's get started. First navigate to Automation Hub and then open an Automation Project. Then click New Automation. Here we can name this anything we want. I'll just call this a Connectors Trigger Demo. Now we get a chance to choose our connector. We have four choices here. The first choice is a ContentStack connector. This allows us to trigger events based on things happening within the platform. For example, publishing an entry or updating a document. There's lots of different listeners we can listen to here. When we select one of those listeners or those events, then we can log into ContentStack. And then finally we can listen to any of these events here, such as creating an item, publishing item, or deleting an item. The second connector we have is the HTTP connector. And what that allows us to do is set up an endpoint and listen for events and data coming from external platforms. So for example, over here I can select HTTP request trigger, hit proceed, and now this gives me an endpoint that any webhook from a third-party platform can call into ContentStack and send us JSON. We'll receive the JSON and then we can perform other action steps based on that later on. The third connector we have here is the Launch connector. And that allows us to basically perform actions on a deployment of a website using the ContentStack launch project. So you can imagine that we deploy the site to QA and then we want to notify the QA team in Slack. We might want to trigger an email or trigger other automatic actions that happen after that deployment. And that's what this connector is used for. And finally we have the scheduler by Automation Hub. And this allows you to schedule tasks to run on a regular basis, on a daily basis for example. And in that task you can perform other action steps. That's an overview of the four connectors. Thank you very much.

#### Key takeaways

- Connect **Using Trigger Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 08 — Using Connectors

<!-- ai_metadata: {"lesson_id":"08","type":"text","duration_minutes":1,"topics":["Using","Connectors"]} -->

#### Lesson text

# Understanding Connectors 

Connectors in Automation Hub understand different systems' specific requirements and capabilities, whether content management systems, marketing automation platforms, or third-party services.

## What are Connectors?

**Connectors** are like bridges that connect different systems and enable smooth communication and data flow between them. They act as intermediary components that facilitate the exchange of information, triggering actions, and automating processes.

## Example

*   Imagine you have a large city with multiple transportation systems like roads, railways, and airports. Each system operates independently and has its own unique functions and rules. However, for efficient transportation and logistics, you need a way to connect these systems and enable the smooth movement of people and goods.
    
*   In this scenario, connectors in the Automation Hub are like well-designed interchanges, terminals, and transfer points that ensure a seamless flow of traffic between the different transportation systems. They understand the needs and protocols of each system and provide a standardized interface for the vehicles to enter, exit, and transfer between them.

#### Key takeaways

- Connect **Using Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 09 — Action Connectors

<!-- ai_metadata: {"lesson_id":"09","type":"video","duration_seconds":169,"video_url":"https://cdn.jwplayer.com/previews/3ykB6UIr","thumbnail_url":"https://cdn.jwplayer.com/v2/media/3ykB6UIr/poster.jpg?width=720","topics":["Action","Connectors"]} -->

#### Video details

#### At a glance

- **Title:** Ah-action Connectors
- **Duration:** 2m 49s
- **Media link:** https://cdn.jwplayer.com/previews/3ykB6UIr
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113974 kbps
- video/mp4 · 180p · 180p · 146453 kbps
- video/mp4 · 270p · 270p · 166118 kbps
- video/mp4 · 360p · 360p · 184014 kbps
- video/mp4 · 406p · 406p · 198641 kbps
- video/mp4 · 540p · 540p · 235553 kbps
- video/mp4 · 720p · 720p · 298477 kbps
- video/mp4 · 1080p · 1080p · 448123 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/3ykB6UIr-120.vtt`

#### Video transcript

In this video, we'll take a look at the Action Connectors with ContentStack. Let's get started. First, navigate to an Automation Hub project, and then click New Automation. In this automation, we're just going to demo our Action Connector, so I'll call it Action Connector Example. Hit Create. Okay, we're going to use the ContentStack trigger to get it started. And on the Entry trigger, log into your ContentStack account, and then on the selected event, choose Event Entry Published. On Select Stacks, select one of your stacks. Go ahead and click Proceed. Okay, now we need to test our trigger, so the usual, log into ContentStack, and test your trigger here by performing the Publish action. Okay, that tests our trigger, so let's go over here and retest. And that's the first and most important step. Always test your trigger. Always load in the JSON. Okay, let's click Save and Exit, and now is the fun part here on the Action Step. On the Action Step, click the first icon there, Action Step, and here are a list of the connectors that ContentStack has that are pre-built. You can see we have quite a few here. One of my favorites is the HTTP connector, which allows us to connect to any third party. So let's go ahead and select that one. So now when we publish our entry, we're going to call this HTTP Endpoint. On HTTP request, choose Post, and next, navigate over here to webhook.site. That's a free webhook listener, and then click New, and then Create a New Webhook Listener. Then what you want to do is that unique URL, copy that, and come back to Automation Hub and paste in the URL here, and then we get a chance to tell the system what JSON to send to the third party. So let's go over here and look under Entry Trigger, and here are all the data fields in our entry. Usually, the data, body.data, is metadata, so what we normally like to do is search for body.entry, and that is the content itself, maybe it's not body.entry, body.data.entry, and that's all the content. So select that one, and then click Proceed. Hit Test Action, and now we should actually see all the content in our entry passed over to webhook.site. Let's hit Save and Exit. Finally, to activate this, we go ahead and click on the Activate button up here, now we can go back into Content Stack and publish another entry, and we should see that over here in webhook.site. Thank you very much.

#### Key takeaways

- Connect **Action Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 10 — Automate Connectors

<!-- ai_metadata: {"lesson_id":"10","type":"text","duration_minutes":1,"topics":["Automate","Connectors"]} -->

#### Lesson text

## Automate Connectors

Automation Hub **connectors** are third-party applications that you can use with Automation Hub to automate certain tasks. Here are a few connectors you can set up quickly and use in an automation.![automate-connectors.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt450a11a187293158/6648df3f015b1c5aaa56ef88/automate-connectors.png)

Here are some examples of actions you can perform in Contentstack's Automation Hub**:**

*   **Update Content:** Imagine you have a library, and when new books arrive, your librarian automatically updates the catalog with the book's information, including its title, author, and genre. Similarly, the "Update Content" action in Contentstack automatically modifies specific fields or attributes of a content entry when triggered.
    

  
![update-entry.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd5d421643619410c/6648dfa60a0de6ffe5314ce9/update-entry.png)**Publish Content:** Think of a newspaper editor who, upon finalizing an article, presses a button to send it for printing and distribution to the subscribers. In Contentstack, when triggered, the "Contentstack Action - Publish Content" automatically publishes content to your website, mobile app, or any other digital channels.  For example, the Trigger may be Entry Update, so every time an Entry is saved. the Automation Hub re-publishes the content to an 'Instant Preview' frontend site. 

![publish-entry.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt3fb4550b9d2c404f/6648dfe34ac76e417540f869/publish-entry.png)**Notify Team:** Consider a fire alarm system in a building that detects smoke or fire and immediately alerts the building occupants with loud sirens and flashing lights. Similarly, the "Email by Automation Hub" and "Slack" actions in Automation Hub send notifications or alerts to designated team members, such as sending an email or a message in a collaboration tool like Slack, when a trigger event is detected.

![communicate.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt01249a627ac710d3/6648e00d0a0de65c88314ced/communicate.png)**Create Task:** Picture a project manager who wants to create a Jira task when an item is assigned in Workflow.  When an Entry is set to a workflow stage in Contentstack, an Automation is triggered to create a new Jira task.  In Contentstack, when triggered, the ["JIRA" action](https://www.contentstack.com/docs/developers/automation-hub-connectors/jira/) generates new tasks or assigns tasks to team members in Jira and works together with the content workflow.

![choose-connector.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt472505ba83ebeb1f/6648e04916e6bf7142590c5b/choose-connector.png)

![connector-detail.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt2bd9a0b07a06bf3b/6648e0674284321e941989a0/connector-detail.png)

#### Key takeaways

- Connect **Automate Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 11 — Types of Action Connectors

<!-- ai_metadata: {"lesson_id":"11","type":"text","duration_minutes":1,"topics":["Types","Action","Connectors"]} -->

#### Lesson text

## Types of Action Connectors

In Contentstack's Automation Hub, several types of action connectors are available. These action connectors allow you to define specific tasks or operations to be executed when a trigger event occurs.   Each connector represents a specific integration or service that can perform actions in your automation workflows.

Each connector receives JSON from the previous steps and can use a [Transform connector](https://www.contentstack.com/docs/developers/automation-hub-connectors/transform) to massage or directly consume the data. If you want to connect to a service not listed here, then the [HTTP Action](https://www.contentstack.com/docs/developers/automation-hub-connectors/http-action) can send JSON to any 3rd-party web service.

[Here are the types of action connectors in Contentstack's Automation Hub](https://www.contentstack.com/docs/developers/automation-hub-connectors)**:**

![types-of-connectors.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt61d6e1debdf89919/6648e12516e6bf4543590c61/types-of-connectors.png)

1.  **CMS:**
    
    *   **Contentstack Action:** Performs content-related actions such as 'Get All Content Types,' 'Get All Entries,' 'Delete an Entry,' 'Add Items to a Release,' 'Clone a Release,' 'Create a Release,' 'Delete Items from a Release,' 'Deploy a Release,' 'Get All Items in a Release,' 'Get All Releases,' 'Get Single Release,' 'Get User Information,' 'Create an Entry,' 'Entry Workflow Stage,' 'Localize an Entry,' 'Publish an Entry,' 'Publish an Asset,' 'Unpublish an Entry,' 'Get Single Entry,' 'Update Entry.'
        
    
2.  **CI/CD Platform:**
    
    *   **CircleCI, TravisCI:** Integrates with CircleCI, TravisCI for continuous integration and delivery workflows.
        
    
3.  **Communication:**
    
    *   **Email by Automation Hub:** Sends emails as an action within Contentstack's Automation Hub.
        
    *   **Mailgun:** Integrates with the Mailgun email service for sending emails.
        
    *   **PubNub:** Integrates with the PubNub platform for real-time messaging and communication.
        
    *   **Pusher:** Integrates with Pusher for real-time push notifications.
        
    *   **SendGrid:** Integrates with SendGrid for sending emails.
        
    *   **Slack:** Sends messages or notifications to Slack channels or users.
        
    *   **Twilio:** Integrates with Twilio for SMS and voice communication.
        
    
4.  **Artificial Intelligence:**
    
    *   **ChatGPT:** Uses OpenAI's ChatGPT for AI-powered chatbot capabilities.
        
    
5.  **Digital Asset Management:**
    
    *   **Cloudinary:** Integrates with Cloudinary for digital asset management and manipulation.
        
    *   **Aprimo:** Integrates with Aprimo's digital asset management platform.
        
    
6.  **eCommerce:**
    
    *   **BigCommerce:** Integrates with the BigCommerce eCommerce platform.
        
    
7.  **FaaS (Function-as-a-Service):**
    
    *   **AWS Lambda:** Executes serverless functions on the AWS Lambda platform.
        
    
8.  **Hosting:**
    
    *   **Launch:** Performs actions within Contentstack's Launch environment.
        
    *   **Heroku:** Integrates with Heroku for application hosting and deployment.
        
    *   **Netlify:** Integrates with Netlify for static website hosting and deployment.
        
    *   **Vercel:** Integrates with Vercel for static website hosting and deployment.
        
    
9.  **Development:**
    
    *   **Code Block:** Executes custom code or scripts as an action within Contentstack's Automation Hub.
        
    
10.  **Database:**
     
     *   **Airtable:** Integrates with Airtable, a collaborative database and project management tool.
         
     
11.  **Messaging Queue:**
     
     *   **AWS SQS:** Integrates with AWS Simple Queue Service for messaging and queuing capabilities.
         
     
12.  **Notification Service:**
     
     *   **AWS SNS:** Integrates with AWS Simple Notification Service for sending notifications to various endpoints.
         
     
13.  **Project Management:**
     
     *   **Jira:** Integrates with the Jira project management tool.
         
     
14.  **Translation Platform:**
     
     *   **Smartling:** Integrates with Smartling, a translation management platform.
         
     
15.  **Search & Discovery:**
     
     *   **Algolia:** Integrates with Algolia for search and discovery capabilities.
         
     *   **Constructor:** Integrates with Constructor for site search and search analytics.
         
     *   **Elasticsearch:** Integrates with Elasticsearch for powerful search and indexing capabilities.
         
     
16.  **Storage:**
     
     *   **AWS S3:** Integrates with AWS Simple Storage Service for storing and retrieving files and objects.
         
     
17.  **Storage:**
     
     *   **AWS S3:** Integrates with AWS Simple Storage Service for storing and retrieving files and objects.
         
     
18.  **Utility:**
     
     *   **Data Store:** This helps you store keys and their corresponding values within a database that you can retrieve later. With the Data Store connector, you can also store and fetch the data stored during execution.
         
     *   **HTTP Action:** This enables you to perform HTTP requests as an action within Contentstack's Automation Hub. You can send HTTP GET, POST, PUT, DELETE, or PATCH requests. This connector is valuable for integrating with external systems or triggering actions in other applications.
         
     *   **Pause:** This lets you pause existing automation.
         
     *   **Transform:** Helps in manipulating texts and numbers as required. It helps you to manipulate and structure data according to your needs. For example, suppose in the previous trigger; specific data is selected to be displayed. In that case, the action defined by the Transform connector can manipulate or change to meet your display requirements.
         
     *   **Response:** Helps determine the status of your configured action. It notifies users about the success or failure of a configured action with a response.
         
     *   **RTE Formatter:** Helps convert content within the JSON Rich Text Editor into HTML or text formats.
         
     *   **Utility:** Helps to manage your automation workflow. With the wait action, you can put your automation on hold for some time before the following automation action runs.

#### Key takeaways

- Connect **Types of Action Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 12 — Automations in Marketplace

<!-- ai_metadata: {"lesson_id":"12","type":"video","duration_seconds":138,"video_url":"https://cdn.jwplayer.com/previews/PKf2GGKG","thumbnail_url":"https://cdn.jwplayer.com/v2/media/PKf2GGKG/poster.jpg?width=720","topics":["Automations","Marketplace"]} -->

#### Video details

#### At a glance

- **Title:** Ah-automations-in-marketplace
- **Duration:** 2m 18s
- **Media link:** https://cdn.jwplayer.com/previews/PKf2GGKG
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 114186 kbps
- video/mp4 · 180p · 180p · 144816 kbps
- video/mp4 · 270p · 270p · 162355 kbps
- video/mp4 · 360p · 360p · 180599 kbps
- video/mp4 · 406p · 406p · 193499 kbps
- video/mp4 · 540p · 540p · 229209 kbps
- video/mp4 · 720p · 720p · 288741 kbps
- video/mp4 · 1080p · 1080p · 424342 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/PKf2GGKG-120.vtt`

#### Video transcript

In the Content Stack Marketplace, we have the option to install some automations that have already been built for us. To get here, let's go ahead and select the Marketplace icon on the left side, and then in the menu, choose Automations. Today, we have four pre-built automations and we're adding new ones all the time. Let's take a look at the automate Slack messages for new entry automation. Click the Import Automation button, and then select the Automation Hub project that you want to import to. Here, I'm going to choose my demo project. Go ahead and import the automation, and then choose your trigger. Since we want to trigger these things on every time a new entry is created, we're going to choose the Entry Trigger, and then down here in Event, we'll say Entry Created, and then choose our stack. Go ahead and click Proceed. And the next step is the Test Trigger, and this is one of the most important steps. So let's click the Test Trigger button and log in the content stack and test out creating a new entry in the stack. So go over here to the Starter app. Go to Entries, and just create any new entry. Choose a blog entry here. Fill in any mandatory fields. You can see I've got a image field that's required here. And click Save. Now we've created a new entry. Let's go back to our automation here. It's not in that window. Back over here and click Retest. Now you can see that I've got my JSON properties all loaded up, which is great. Click Save and Exit, and then finally save and exit down here. On the second step, this is where we're going to send the message to Slack. You can see it's already been set up and configured for us, including adding a message right here. This does assume that we have a title in the entry, which we always do, and here's our content type title. You need to go ahead and add your Slack account, but then choose a channel from your Slack account that you want to post a message in. After that, you can click Proceed and test this automation. Once that's complete, then you can go ahead and activate the automation in the top left. This is just an example of how easy it is to get started using automations from the Marketplace. Thank you very much.

#### Key takeaways

- Connect **Automations in Marketplace** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 13 — Using Trigger Conditions to Control an Automate Execution

<!-- ai_metadata: {"lesson_id":"13","type":"video","duration_seconds":218,"video_url":"https://cdn.jwplayer.com/previews/dCjBIaBC","thumbnail_url":"https://cdn.jwplayer.com/v2/media/dCjBIaBC/poster.jpg?width=720","topics":["Using","Trigger","Conditions","Control","Automate","Execution"]} -->

#### Video details

#### At a glance

- **Title:** Ah-trigger Conditions
- **Duration:** 3m 38s
- **Media link:** https://cdn.jwplayer.com/previews/dCjBIaBC
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113596 kbps
- video/mp4 · 180p · 180p · 145328 kbps
- video/mp4 · 270p · 270p · 165019 kbps
- video/mp4 · 360p · 360p · 183880 kbps
- video/mp4 · 406p · 406p · 198911 kbps
- video/mp4 · 540p · 540p · 235825 kbps
- video/mp4 · 720p · 720p · 295556 kbps
- video/mp4 · 1080p · 1080p · 431697 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/dCjBIaBC-120.vtt`

#### Video transcript

Welcome to Automation Hub. In this video, we'll take a look at using trigger conditions to determine when our automation is run and reduce the number of executions. First, go into Automation Hub and open a project. Next, create new automation. Here I'm going to say notify on publish. I'm going to start with the content stack connector here because I want to trigger it on entry published. Here, select entry trigger and for event, choose entry published. Select your stack and then go ahead and proceed. Next, we want to test our trigger, so hit test trigger here and then log in the content stack and publish an entry. Let's hit retest. We see the JSON is loaded. Hit save and exit and under trigger conditions, this is the really magic part that we can specify when this automation actually will be run. So under input, I'm going to go down here and I'm going to search for my environment. I only want to run that when it's published to a certain environment. So I'm going to go down here and choose environment.name and we'll say matches and then preview. So that's all we want to do. Hit save and exit and go ahead and turn on the automation. Oh, we need an action here. So in a second action step, we could do, for example, HTTP to our webhook.site. We have our endpoint from earlier. If you don't, you can come into webhook.site, click new, and then create a new endpoint. Over here under unique URL, copy that over here and paste it in. Post and then in the body, we'll access our entry data. So again, over here, search for entry and it's going to be body.data.entry. There we go. And let's go ahead and hit proceed. And so now what should happen is, well, you get the JSON over here, but let's go ahead and save and exit and now turn on our automation. So just to review this, in our entry trigger, settings here, this is when we're triggering it, and then down here in the conditions, we have the setting to only trigger this when it executes to publish it to preview. So go over here and hit publish to test this out. Let's publish to development and see what happens. Nothing should be happening, so let's go over here to automation hub, go back here to our dashboard and look at our execution log. And you can see here I've got only action connector examples, but I don't have that new one we just made. So let's go ahead back over here and then hit publish and publish out to preview. Go look at webhook.site, we get a new notification here. And also, if you come back here to execution log and refresh, then we see our notify and publish running right there. Let's test it one more time. So go ahead and hit publish again and publish out to something that's not preview. So I do instant preview, for example, and then go over here to the dashboard, hit refresh, and I still only have one notify and publish because I only publish one time to preview. That's an overview of how these trigger conditions can work. They can really save you a lot of executions and are a great thing to use when you build your automation hub projects.

#### Key takeaways

- Connect **Using Trigger Conditions to Control an Automate Execution** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 14 — Using Conditionals When Publishing to Production

<!-- ai_metadata: {"lesson_id":"14","type":"video","duration_seconds":125,"video_url":"https://cdn.jwplayer.com/previews/LHUBP0RN","thumbnail_url":"https://cdn.jwplayer.com/v2/media/LHUBP0RN/poster.jpg?width=720","topics":["Using","Conditionals","When","Publishing","Production"]} -->

#### Video details

#### At a glance

- **Title:** Ah-conditionals With Email Notification
- **Duration:** 2m 5s
- **Media link:** https://cdn.jwplayer.com/previews/LHUBP0RN
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113550 kbps
- video/mp4 · 180p · 180p · 143174 kbps
- video/mp4 · 270p · 270p · 159853 kbps
- video/mp4 · 360p · 360p · 176680 kbps
- video/mp4 · 406p · 406p · 188231 kbps
- video/mp4 · 540p · 540p · 222882 kbps
- video/mp4 · 720p · 720p · 274420 kbps
- video/mp4 · 1080p · 1080p · 390936 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/LHUBP0RN-120.vtt`

#### Video transcript

In this video, we're going to send an email notification whenever we publish our blog to production. To do this, we're going to create a conditional. Let's get started. First, create the new automation. We're going to call this send email when publishing blog to production. We're going to use a publish event. So start with the content stack connector, then entry trigger, and publish event. Select our stack, and go ahead and here we can also choose our content type. So we want to filter on blog content, and then we're going to proceed. Let's test our trigger. Go ahead and publish something to any environment, and now let's retest, and that looks good. So let's go save and exit, and then on the next step, we want to choose our conditional path. Conditional path, add condition, and here we're going to choose our environment. So you can see down here I have body.data environment name. That's the one we want to choose. So you can see it has a value of production right now. Our operator is going to be matches, and then over here under input, we're going to say type in the string production. So only when this matches production, we're going to do something. So I hit save and configuration. You can also name this too. So I'm going to name this of publish to production. So if we are publishing to production, then come over here and we want to send the email notification. So over here I can do email by automation hub, and here fill in my values. That's about it for this video. Thank you very much.

#### Key takeaways

- Connect **Using Conditionals When Publishing to Production** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 15 — Using the HTTP Connector with a Publish Event

<!-- ai_metadata: {"lesson_id":"15","type":"video","duration_seconds":126,"video_url":"https://cdn.jwplayer.com/previews/MfUpnFZz","thumbnail_url":"https://cdn.jwplayer.com/v2/media/MfUpnFZz/poster.jpg?width=720","topics":["Using","the","HTTP","Connector","with","Publish"]} -->

#### Video details

#### At a glance

- **Title:** Ah-http Listener
- **Duration:** 2m 6s
- **Media link:** https://cdn.jwplayer.com/previews/MfUpnFZz
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113673 kbps
- video/mp4 · 180p · 180p · 148643 kbps
- video/mp4 · 270p · 270p · 170075 kbps
- video/mp4 · 360p · 360p · 192440 kbps
- video/mp4 · 406p · 406p · 206764 kbps
- video/mp4 · 540p · 540p · 251354 kbps
- video/mp4 · 720p · 720p · 324824 kbps
- video/mp4 · 1080p · 1080p · 519435 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/MfUpnFZz-120.vtt`

#### Video transcript

In this video, we'll learn how to use the ContentStacks Automation Hub HTTP Listener to receive data from external platforms. Let's get started. First, create a new automation. Here, I'll call this HTTP Listener, and then choose HTTP Connector. Here, choose HTTP Request Trigger, and then let's choose the GET POST and click Proceed. Here's the URL endpoint where our servers will be listening. Go ahead and copy that. Now, let's go into Postman and create a new request. Click the plus icon at the top, choose POST, and enter a URL. Go ahead for the key. We can type in, for example, ID and value 123. Go ahead and hit Send. That's now sending the request to Automation Hub. Let's go back over here and click Test Trigger. Now, we can see that our ID with 123 has already been received. Let's go ahead and save and exit. At this point, we can go ahead and configure an action step, and we can actually log any of the data or perform actions, including creating an entry in ContentStack, for example, when we receive data from an external platform. That data might be product data or might be other types of information that you want to store in ContentStack or connect to and send to another platform. So, let's go ahead here and actually I'm going to choose the HTTP connector action and send a request to webhook.site that's going to go ahead and receive an incoming request. Go ahead and click a new to create a new listener. Copy the URL here. Back in Automation Hub, just paste that URL. Then we're going to do a POST, and in the body, we're going to choose the output from the trigger. Here, you can see we've got our query that's being passed in. I'm going to choose root. That's going to paste all the JSON to webhook.site. Click test action, and over here we should receive the content. That's just a simple example of how we can use HTTP listener with ContentStack's Automation Hub. Thank you.

#### Key takeaways

- Connect **Using the HTTP Connector with a Publish Event** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 16 — Using HTTP Listeners

<!-- ai_metadata: {"lesson_id":"16","type":"video","duration_seconds":126,"video_url":"https://cdn.jwplayer.com/previews/MfUpnFZz","thumbnail_url":"https://cdn.jwplayer.com/v2/media/MfUpnFZz/poster.jpg?width=720","topics":["Using","HTTP","Listeners"]} -->

#### Video details

#### At a glance

- **Title:** Ah-http Listener
- **Duration:** 2m 6s
- **Media link:** https://cdn.jwplayer.com/previews/MfUpnFZz
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113673 kbps
- video/mp4 · 180p · 180p · 148643 kbps
- video/mp4 · 270p · 270p · 170075 kbps
- video/mp4 · 360p · 360p · 192440 kbps
- video/mp4 · 406p · 406p · 206764 kbps
- video/mp4 · 540p · 540p · 251354 kbps
- video/mp4 · 720p · 720p · 324824 kbps
- video/mp4 · 1080p · 1080p · 519435 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/MfUpnFZz-120.vtt`

#### Video transcript

In this video, we'll learn how to use the ContentStacks Automation Hub HTTP Listener to receive data from external platforms. Let's get started. First, create a new automation. Here, I'll call this HTTP Listener and then choose HTTP Connector. Here, choose HTTP Request Trigger and then let's choose the GET POST and click Proceed. Here's the URL endpoint where our servers will be listening. Go ahead and copy that. Now, let's go into Postman and create a new request. Click the plus icon at the top, choose POST and enter a URL. Go ahead for the key. We can type in, for example, ID and value 123. Go ahead and hit Send. That's now sending the request to Automation Hub. Let's go back over here and click Test Trigger. Now, we can see that our ID with 123 has already been received. Let's go ahead and save and exit. At this point, we can go ahead and configure an action step and we can actually log any of the data or perform actions, including creating an entry in ContentStack, for example, when we receive data from an external platform. That data might be product data or might be other types of information that you want to store in ContentStack or connect to and send to another platform. So, let's go ahead here and actually I'm going to choose the HTTP connector action and send a request to webhook.site that's going to go ahead and receive an incoming request. Go ahead and click a new to create a new listener. Copy the URL here. Back in Automation Hub, just paste that URL and then we're going to do a POST and in the body, we're going to choose the output from the trigger. Here, you can see we've got our query that's being passed in. I'm going to choose root that's going to paste all the JSON to webhook.site. Click test action and over here we should receive the content. That's just a simple example of how we can use HTTP listener with ContentStack's Automation Hub. Thank you.

#### Key takeaways

- Connect **Using HTTP Listeners** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 17 — Understanding HTTP Listeners

<!-- ai_metadata: {"lesson_id":"17","type":"text","duration_minutes":1,"topics":["Understanding","HTTP","Listeners"]} -->

#### Lesson text

# HTTP Listener

The **HTTP Listener** connector allows you to create automated workflows to **receive incoming HTTP requests** and trigger specific actions based on the received data. This endpoint listens to incoming HTTP requests and processes them according to your workflow.  An HTTP endpoint is provided that an external platform or external webhook can use and send JSON data to Automation Hub.

![http-listener2.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt8c471a1cdcd30f3e/664947c35c248385cfbc34f9/http-listener2.png)

## Example

**Here's an example to illustrate the use of the HTTP Listener connector**:

Let's say you have an e-commerce website, and you want to trigger an automation workflow whenever a new order is received through an API call.

1.  **Set up the HTTP connector** \-
    
    *   In Automation Hub, select the "HTTP" connector.
        
    
2.  Configure the HTTP trigger -
    
    *   Configure the HTTP method (e.g., POST) trigger and define any required authentication or headers.
        
    *   Define the specific endpoint or route corresponding to the URL generated for the order creation API call.
        
    *   Set any required headers or parameters to match your API requirements.
        
    
3.  Define subsequent actions -
    
    *   Once the HTTP connector trigger receives the HTTP request, you can define subsequent actions in the workflow.
        
    *   Add actions such as validating the order, updating inventory, sending confirmation emails, or integrating with other systems.
        
    
4.  Test and deploy the workflow -
    
    *   Test the workflow by simulating an API call to the defined endpoint and verifying that the trigger is activated.
        
    *   Ensure that the subsequent actions in the workflow, such as order processing and system integration, are executed as expected.
        
    *   Once tested, activate the workflow and be ready to process incoming API requests.
        
    

In this example, the HTTP connector acts as a trigger, allowing you to listen for incoming API calls and initiate the defined automation workflow. You can perform various actions within the workflow based on the received order data, such as updating databases, triggering notifications, or performing business logic.

Using the HTTP connector as a trigger provides flexibility in integrating external systems or services with Contentstack's Automation Hub. You can easily automate processes, streamline data flows, and orchestrate complex workflows by leveraging the HTTP connector's ability to listen for incoming HTTP requests.

#### Key takeaways

- Connect **Understanding HTTP Listeners** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 18 — Understanding Scheduler by Automate

<!-- ai_metadata: {"lesson_id":"18","type":"text","duration_minutes":1,"topics":["Understanding","Scheduler","Automate"]} -->

#### Lesson text

# Scheduled Jobs

The **Scheduler by Automate** connector in Contentstack allows you to schedule and automate tasks or workflows at specific times or intervals. It acts as a trigger to initiate an automation workflow based on the defined schedule.

![scheduled-jobs.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt63e0fdbddb2882fe/66494833342fb531a162ccc5/scheduled-jobs.png)

**Let's consider a scenario where you want to send a daily email newsletter to your subscribers at a specific time using Contentstack's Automate**:

1.  Set up the 'Scheduler by Automate' connector and trigger -
    
    *   In Automation Hub, select the 'Scheduler By Automate' connector.
        
    *   Configure the scheduler trigger by specifying the Time Zone and Unix Cron Pattern. Specify the exact time or interval you want the automation workflow to be triggered.
        
    
2.  Define subsequent actions -
    
    *   Once the scheduler trigger activates the workflow, you can define subsequent actions.
        
    *   Add actions to generate the email newsletter content, fetch subscriber data, and send personalized emails.
        
    
3.  Test and deploy the workflow -
    
    *   Test the workflow by manually triggering it or waiting for the scheduled time.
        
    *   Verify that the workflow executes as expected, generating and sending the email newsletters to subscribers.
        
    *   Once tested, activate the workflow and automate the daily email newsletter process.
        
    

In this example, the Scheduler by Automation acts as a trigger, allowing you to schedule the execution of a workflow at specific times or intervals. The automation workflow can perform various actions, such as generating dynamic content, fetching data from external sources, and sending emails to subscribers.

Using Scheduler by Automation, you can streamline recurring tasks, automate time-based processes, and ensure consistent and timely execution of workflows within Contentstack's Automate.

#### Key takeaways

- Connect **Understanding Scheduler by Automate** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 19 — Launch Connector

<!-- ai_metadata: {"lesson_id":"19","type":"text","duration_minutes":1,"topics":["Launch","Connector"]} -->

#### Lesson text

# **Launch Connector**

The **Launch** **connector** is a feature that allows you to initiate deployments of websites hosted on the Contentstack-powered jamstack platform called "Launch." Whether your website's content is managed by a different CMS (headless or traditional), you can use Launch to quickly host such sites. 

You can easily trigger deployments by creating a new project in Launch and connecting it to your GitHub or GitLab repository. This seamless integration streamlines the deployment process for your websites, making it efficient and hassle-free.

## Launch Connector for Action

![launch-connector.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltdda2557e6e507603/66494908efc97a69cb4c0ac4/launch-connector.png)

Let's consider an example where the team sets up a scheduled job to automatically deploy new code builds for your website at midnight every Sunday by using the Scheduled Jobs Trigger with Launch Action Connector:

1.  **Set up the 'Scheduler by Automate' connector and trigger -**
    
    *   In Automate, select the 'Scheduler By Automate' connector.
        
    *   Configure the scheduler trigger by specifying the Time Zone and Unix Cron Pattern. Specify the exact time or interval you want the automation workflow to be triggered. Here, at midnight every Sunday.
        
    
2.  **Define 'Launch Connector' action -**
    
    *   Once the scheduler trigger activates the workflow, you define the Launch connector in the action.
        
    *   This action deploys the build for the authorized and selected Launch project.
        
    
3.  **Test and deploy the workflow -**
    
    *   Test the workflow by manually triggering it or waiting for the scheduled time.
        
    *   Verify that the workflow executes as expected, deploying the build to the set environment.
        
    *   Once tested, activate the workflow and automate your website build deployment.
        
    

This approach proves beneficial as the team can confidently plan and execute updates without disrupting the website's live performance.

## Launch Connector for Trigger

![launch-connector-for-trigger.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1d6b0a82057555c3/664949670b508aef4fdcfd1e/launch-connector-for-trigger.png)

Let's consider an example where we set up 'Launch as the trigger' for the automation. Whenever a deployment on Launch fails, the automation automatically sends an email notification to a designated group of users using the 'Email by Automate' action connector:

1.  **Set up the 'Launch' connector and trigger -**
    
    *   In Automate, select the 'Launch' connector.
        
    *   Configure the 'Deployment' trigger where you select the event as **'Deployment failed'** for the selected Launch project.
        
    
2.  **Define 'Email by Automate' action -**
    
    *   Once the scheduler trigger activates the workflow, you define the 'Email by Automate' connector in the action.
        
    *   This action will email the list of users(specified during the setup) when the Launch deployment fails.
        
    
3.  **Test and deploy the workflow -**
    
    *   Test the workflow by manually triggering it or deploying the Launch project.
        
    *   Verify that the workflow executes as expected, deploying the build to the set environment.
        
    *   Once tested, activate the workflow and automate your website build deployment status.
        
    

This example demonstrates how Automate can be used to proactively notify the team about deployment issues, allowing them to address and resolve any potential challenges promptly.

#### Key takeaways

- Connect **Launch Connector** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 20 — Automate Foundations Quiz

<!-- ai_metadata: {"lesson_id":"20","type":"text","duration_minutes":1,"topics":["LMS","Knowledge check"]} -->

#### Lesson text

**This lesson is a knowledge check hosted in the Academy LMS.** This companion Markdown contains **no quiz questions, answers, scoring rules, or explanations**.

#### Key takeaways

- Connect **Automate Foundations Quiz** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 21 — Utility Connectors

<!-- ai_metadata: {"lesson_id":"21","type":"text","duration_minutes":1,"topics":["Utility","Connectors"]} -->

#### Lesson text

## Data Store Connector

The Data Store connector in Automate provides a convenient way to store key-value pairs within the Contentstack database. These key-value pairs can be used to store any data you want to retrieve and use later in your automation workflows. The Data Store connector allows you to store data during the execution of automation and fetch it when needed.

![data-store.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt93f2a8b94bd49abf/66494a0f4ac76e5d8f40f8fc/data-store.png)

Key Features of the Data Store Connector:

1.  **Data Storage -** The Data Store connector can store data as key-value pairs. Each pair consists of a unique key and its corresponding value. The data stored can be of any type, including strings, numbers, booleans, and even complex data structures like objects or arrays.
    
2.  **Data Retrieval -** Once data is stored using the Data Store connector, you can retrieve it later within the same automation or across different workflow steps. This lets you pass data between different actions and conditions, making your automation more dynamic and versatile.
    
3.  **Persistent Storage -** The data stored using the Data Store connector is persistently saved within the database. This means that even if the automation execution is paused or stopped, the data will still be available when the execution resumes.
    
4.  **Instance-Specific Data -** The Data Store connector allows you to store and fetch data specific to the current instance of an automation execution. This enables you to manage data at the instance level and avoids conflicts or data interference between different executions of the same automation.
    

Use Cases of the Data Store Connector:

1.  **Configuration Management -** You can use the Data Store connector to store configuration settings, such as API keys, credentials, or connection details, that need to be accessed by multiple actions or steps within automation.
    
2.  **Data Transfer and Transformation -** The Data Store connector can transfer data between different automation steps. For example, you can store data in one step and fetch it later to perform transformations or calculations in subsequent steps.
    
3.  **State Management -** If your automation involves multiple conditional branches or loops, the Data Store connector can help manage the automation's state by storing and updating relevant data as the automation progresses.
    
4.  **Error Handling and Recovery -** The Data Store connector can store error messages or status flags during the execution of automation. This can aid in error handling and recovery strategies.
    

In summary, the Data Store connector in Automate provides a flexible and efficient way to store and retrieve data within your automation workflows. It enables you to create more sophisticated and data-driven automations, enhancing efficiency and productivity in your processes.

# HTTP Action Connector

An HTTP action connector is a utility connector that interacts with external services, APIs, or web endpoints using the Hypertext Transfer Protocol (HTTP). You can send HTTP requests (such as GET, POST, PUT, DELETE) to remote servers, receive responses, and potentially process or transform the data through this connector.

![http-connector.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf8395252dca738e0/66494a5b0bbc628ea47fac08/http-connector.png)

Key Features of an HTTP Action Connector:

*   **HTTP Methods -** Supports various HTTP methods like GET, POST, PUT, and DELETE, allowing you to interact with different parts of an API.
    
*   **Request Configuration -** You can configure headers, query parameters, request body, and other settings required for the API request.
    
*   **Response Handling -** Typically, you can extract data from the response, handle status codes, and parse the returned data (often in JSON or XML format).
    
*   **Authentication -** Supports various authentication mechanisms, such as API keys, OAuth tokens, or basic authentication.
    
*   **Error Handling -** Provides options to handle errors, retries, and timeouts to ensure robust interactions with the API.
    
*   **Customization -** Allows you to customize and manipulate the data before sending the request or after receiving the response.
    

Use Cases for HTTP Action Connectors in Utility Connectors:

1.  **Data Integration -** You can use the HTTP action connector to fetch data from external sources like APIs and synchronize it with your Contentstack content. For example, automatically pulling data from a third-party system and updating content entries.
    
2.  **Third-Party Services -** Integrate with third-party services like email platforms, messaging services, or social media APIs to trigger actions based on content changes.
    
3.  **Content Enrichment -** Utilize external services to enrich your content. For instance, automatically tagging content with relevant keywords using a natural language processing API.
    
4.  **Webhooks**: Receive and process data from external sources through webhooks. The HTTP action connector can parse and handle incoming webhook payloads.
    
5.  **Content Delivery**: Trigger HTTP requests to deliver content to external systems. This could involve publishing content to a website or an external database.
    
6.  **Data Migration**: Use the HTTP action connector to migrate content from one system to another by sending appropriately formatted API requests.
    

In summary, An HTTP action connector is a tool in workflow automation platforms that lets you interact with external services via HTTP requests. In Contentstack Automate, it can help integrate data, trigger actions based on content changes, enrich content, manage webhooks, deliver content, and handle data migration.

# Utility Connector - Wait Action

The Utility action connector helps to manage your automation workflow. With the wait action, you can put your automation on hold for some time before the following automation action runs.

You can set up three actions: Wait, Continue Automation If, and Continue Repeat If.

![wait-action1.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1902cd2c8600e1b4/66494ade0bbc6207ac7fac0c/wait-action1.png)

## **Example: Wait connector in Repeat Path**

Let’s see a simple use-case of the Utility connector using Repeat Path.

Wait action is useful while working with bulk data. Previously, if the number of API requests exceeded the defined limitation, the automation failed automatically due to rate limiting.

In this example, we are sending bulk data through the HTTP action with a limitation of 5 API requests per second, and we will use the Wait action to delay the API request per second to create multiple entries in Contentstack. We will also see how the user receives an error message in the Execution Log section for exceeding the rate limit.

![wait-action2.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd87d2c9ea470f3bc/66494b00b2e852f9f0451976/wait-action2.png)For examples of every Utility option, please see the [**Automate Utility documentation**](https://www.contentstack.com/docs/developers/automation-hub-connectors/utility).

## **Transform**

Transform does exactly what it sounds like - transforming data from one format to another. More specifically, it allows the developer to specify the JSON format that will be passed to a future Automation step and use the data and properties from Entries or other objects and properties available.

For example, our external system expects a JSON object with a title, content property, and date. Using Transform, we can create a new JSON object with only 3 properties and fill in the data from Contentstack objects in the Automation.

In the screenshot below, we are creating a new JSON object with a property called 'result' containing the value of the Entry's name field capitalized.

![transform2.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt0b5daaf2141713c8/66494b574b531e4547c328ba/transform2.png)

![transform1.png](https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt8d241b3597b12963/66494b57015b1c360b56effa/transform1.png)

#### Key takeaways

- Connect **Utility Connectors** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

### Lesson 22 — Use Case: Translation with ChatGPT

<!-- ai_metadata: {"lesson_id":"22","type":"video","duration_seconds":834,"video_url":"https://cdn.jwplayer.com/previews/T1PfSEIE","thumbnail_url":"https://cdn.jwplayer.com/v2/media/T1PfSEIE/poster.jpg?width=720","topics":["Use","Case","Translation","with","ChatGPT"]} -->

#### Video details

#### At a glance

- **Title:** Ah-chatgpt Translations Example
- **Duration:** 13m 54s
- **Media link:** https://cdn.jwplayer.com/previews/T1PfSEIE
- **Publish date (unix):** 1713750111

#### Streaming renditions

- application/vnd.apple.mpegurl
- audio/mp4 · AAC Audio · 113508 kbps
- video/mp4 · 180p · 180p · 143948 kbps
- video/mp4 · 270p · 270p · 161578 kbps
- video/mp4 · 360p · 360p · 182141 kbps
- video/mp4 · 406p · 406p · 193844 kbps
- video/mp4 · 540p · 540p · 232421 kbps
- video/mp4 · 720p · 720p · 294709 kbps
- video/mp4 · 1080p · 1080p · 426845 kbps

#### Timed text tracks (delivery)

- **thumbnails:** `https://cdn.jwplayer.com/strips/T1PfSEIE-120.vtt`

#### Video transcript

In this video, we'll take a look at using ChatGPT to create a translation workflow with ContentStack. Here I have the ChatGPT automation open. You can see that I begin with a workflow trigger. We then get the entry from workflow. Next we could use an API call to get the languages list from ContentStack and finally repeat over those locales located in our stack and with each locale, we translate the title, we then log it, and finally we update the entry. Let's go ahead and get started. Okay, the first step is going to be for us to create the workflow trigger. So navigate back into ContentStack, go to settings, and inside settings, choose workflows. If you don't already have a blog workflow set up, then come over here and create a new blog workflow. We're going to specify that this is used on the blog entry content type that's in my starter app with Next.js. And then finally down here, you can see the different stages I have. What we want to do is have a send to translation stage, and that's going to be the trigger to send this translation to ChatGPT. After that, we have a review translation stage, which is usually recommended so we can review what comes back. And finally, it's going to be approved for publishing. If you don't already have this set up, go ahead and set that up right now. After that, make sure you check enable workflow and then click the save button. Now that we have our workflow in place, let's go back into Automation Hub and take a look at our automation. So we're going to start with that workflow trigger, and then we're going to get the entry from workflow. So I'm going to go ahead and go to my automation dashboard and create a new automation. In this automation, I'm going to choose ContentStack and then a workflow trigger. Make sure you're logged into ContentStack with your account and then choose workflow state changed. Here I'm using the Next.js starter, and then finally the content type, which is going to be the blog entry. Over here under workflow, that's going to be the blog workflow we just created, and then under optional steps, go ahead and choose that step, send to translation, and go ahead and click proceed. Great. Let's go ahead and test the trigger now. So click test trigger, go back into ContentStack, and let's just open any of the blog entries and update the workflow settings. So here in my blog entry, I'm going to go ahead and open the workflow details, set stage, and then I'm going to set the stage to send to translation, click save. Going back in the automation hub, go ahead and click retest, and you should see the JSON of the entry appear here. As a final step in our workflow trigger, we want to make sure that we have tested it. So let's go over here to step four on the action one, click on edit, and then if it says that was skipped, go ahead and click test trigger here, and then if you haven't done that yet, then you need to come into ContentStack, do workflow details, change, and send to translation, finally clicking update. So that will test the trigger, and that's super, super important. Okay, let's go ahead and click save and exit. Now in the next step, we configure action step. We want to go ahead and get the entry that's in the workflow. So to do that, let's click action step, choose a ContentStack connector, and then down here under entry, choose get single entry. The reason we need to do this is because we're going to translate the content in this entry, and we're going to need all the JSON fields that it contains. Our initial workflow trigger only contains the workflow information, and we don't get all the content of the entry that's inside the workflow. So this is going to give us the content of the item inside the workflow. Let's go ahead and select our stack. That's going to be our starter app. Down here under content type, let's go ahead and choose a suggested data element. So this is the content type from within the workflow. So that's a blog post. Under entry, let's also go with our suggested entry UID, and again, that's coming from the workflow. So this looks great. Let's go ahead and take a look at the selected fields here. We see we could add in a version, a locale, or other information. We don't need those for now, so we're going to leave those empty. Go ahead and click proceed. Go ahead and test the action here, and we can see we've got the JSON coming back of our entry with all the fields. That's it for the first part of this example. The next step, we're going to take a look at using the repeat action. The next step of our automation, you want to get a list of the locales available in the stack. To do that, we're going to use an API call. Going over to our documentation, this is the content management documentation for the content management API. You can see that we have a get all languages option, and that API call allows us to get the locales in the stack. The requirements that we have in the headers are either an auth token or an authorization, which is a management token. That's the option we'll use, and then finally, an API key. So let's go ahead and get started. Let's first go ahead and copy this command here, locales, and add it into a new connector here. We're going to choose action step, and then over here under the connectors, we're going to use the HTTP connector. We're going to send an HTTP request, and we're going to paste in that URL for the content stack API. That's a get request. We are going to need those optional header fields, so click on the optional fields and choose add headers. Okay, what does it require? It requires an auth token or authorization token. So let's go ahead and choose authorization, and we'll create a management token in just a moment. So here's my authorization, and then the value, I'm going to go back in the content stack, click on settings, and then click on tokens. We're going to create a management token for this step. You do need to be a developer or an admin to access this functionality. So click on management tokens, and then click on plus for management token, and here I'll just say this is my automation hub token. Read and write, and go ahead and click generate token. Copy this token here, and once we click done, we cannot access this token anymore. So make sure you paste it in your password manager or someplace that you can bring it back later, because otherwise you'll have to make another management token if you don't have access to this in a text file or a password file. Okay, click done, and so now we've got the management token. We want to go ahead and paste that over here. Now the next thing is an API key. Let's see the format that it needs it in, so just like that, and the value you can find in content stack after the word stack. That's your API key. So that's one way to get it. The other way to get it is to open up your token. You can also read it right here, okay, and that's all we need to do for our request. Let's go ahead and hit proceed and test it out, and here you can see a list of the locales I have available in my starter app. That should match my settings and my languages list over here, and it does. So that's it for this step. Let's go back to our automation, and in the next step, we're going to use a repeater to repeat through this list of locales. In the next step, we're going to use a repeater and repeat through our list of locales. Let's get started. Click add new step, and over here, choose a repeat path. Let's choose a data source, and now we want to select the HTTP request result that has a list of our locales. Opening that, we can see we've got body.locales, which is an array of all the locales available or languages in our stack. So click on that, and then go ahead and click save configuration, and you should see something like this. Great. So now we've got a list of each of our locales, and each current item is going to point to the item inside the loop. So let's first go ahead and access the ... see what we do here, translate the title. So first we want to do the chat GPT connector, and I'm just cheating here, looking at my settings on the other side. I'm going to go ahead and copy this, just so I don't need to do that again, and come back over here. So in the action step, let's choose chat GPT, and then choose chat, and down here, we want to go ahead and log into our chat GPT account. I've already done that. Choose your model, and then select prompt text. You can update this prompt text with something that you find is more relevant, it might help the quality of the translation, but I've found this works fairly well for me. So what I'm doing is, as a translator, translate the text, entry.title, into the language with the language code, my current item.code. You can find those properties down here. For example, in the repeat path, you can see that I've got my current item code right there, and that is actually the language that's inside the repeat at the moment. The entry title is also very easy to access, and that's over here under the get single entry, and then you want to go ahead and you can search this if you want, search for title, and there it is right there. So there's how you access the two properties for that. The user role, I usually use system, and then hit proceed. Go ahead and test this action here, and you should receive back the translated content. That's looking great. Okay, let's save and exit. Now what I usually like to do here is log this somewhere to make sure it's actually working and test it. So one quick and easy way to log it is actually just with a HTTP call to a webhook.site. So I'm going to go ahead and do that, create a new HTTP request, come over here to webhook.site and create a new listener. Let's see here, let's copy that URL, and coming over here, let's paste that, and I'm going to post the body, and inside the body, I'm just going to paste in the result of chat GPT. So I'm going to paste in here, let's see here, the content. And I could also paste in something else from the repeat path, I could also say the name of the language. We can also, let's maybe I'll put this, I can't do that first. Yeah, okay, we can keep it like this, it's fine. All right, so that's about it. Let's go ahead and hit proceed and test action. And over here, we see that we've got our text coming, so that looks really great. Okay, so coming over here, save and exit. The last step we want to do is update our content stack entry and paste in this localized content. So click add step and configure action step, choose content stack, and then over here choose, let's see here, update entry. Select the stack, it's going to be our starter app again, select the content type, I'm going to use a content type from within the workflow. And also under entry, I'm going to use the entry ID that I got back, I can use either one, they're exactly the same, but I'll go ahead and use a workflow item as well. Under the entry data, I'm going to go click on the that arrow there, and it gives me a copy of the schema and all the fields. Now we only need the title, so I'm going to remove the other ones here. So I don't need, for example, I don't need a lot of this actually. So I have two open brackets at the top, and I only need two at the bottom. So we'll just make it look like that. There we go. And where the value of the title, I'm going to pull that back from the chat GPT answer. And that is right over here. So that's it for the content. I am going to need the optional fields because we want to use the locale. So here we can see that we've got data from a previous step. And what I really need to do here, though, is to access the output from previous step and come down here and inside my repeat path, I have that locale, right? So I want to go ahead and use this item code right there. Okay, and that should be it, hit proceed and go ahead and hit test action. It says it was localized successfully, and the title is this. Let's go ahead and look at that in content stack now. And let's take a look at what that unique ID is. There we go. And here you can see this is the localized article. You can also go to the English copy and again, back into the Italian. Great, so let's go ahead and actually do this for real, turn on the automation and run it for all the languages. Hit save, I'm going to turn this on right here, activate it and come back into my English copy. Go over here to workflow details, change, send to translation and click update. Now going back into automation hub, we can go look at the log and see if it's execution log and if it was executed, if it was successful or not. You can see I have some successes and failed ones before. Success, great. So I can go ahead and open that one up and actually tell me how long each of those requests took. The repeat path took eight seconds for the translations. You can see how many seconds each one took. Okay, so let's open that item in content stack again. Let's choose another language. So let's go into French. Here we can see our copy titles in French. Then we can also check it down here in Germany as well. All right, great. So if you followed along this far, congratulations. You've now successfully created an automation using ChatGPT and updating the title of an entry. Thank you very much.

#### Key takeaways

- Connect **Use Case: Translation with ChatGPT** back to your stack configuration before moving to the next module.
- Capture one concrete artifact (screenshot, Postman call, or code snippet) that proves the step works in your environment.
- Re-read the delivery versus management boundary for anything you changed in the entry model.

## Resources & references

| Page | Companion Markdown |
| --- | --- |
| /courses/automate-foundations/what-is-automate | /academy/md/courses/automate-foundations/what-is-automate.md |
| /courses/automate-foundations/creating-a-new-project | /academy/md/courses/automate-foundations/creating-a-new-project.md |
| /courses/automate-foundations/first-automate-project-walkthrough | /academy/md/courses/automate-foundations/first-automate-project-walkthrough.md |
| /courses/automate-foundations/exercise-review-your-first-automation-hub-project | /academy/md/courses/automate-foundations/exercise-review-your-first-automation-hub-project.md |
| /courses/automate-foundations/settings-options | /academy/md/courses/automate-foundations/settings-options.md |
| /courses/automate-foundations/understanding-triggers | /academy/md/courses/automate-foundations/understanding-triggers.md |
| /courses/automate-foundations/using-trigger-connectors | /academy/md/courses/automate-foundations/using-trigger-connectors.md |
| /courses/automate-foundations/using-connectors | /academy/md/courses/automate-foundations/using-connectors.md |
| /courses/automate-foundations/action-connectors | /academy/md/courses/automate-foundations/action-connectors.md |
| /courses/automate-foundations/automate-connectors | /academy/md/courses/automate-foundations/automate-connectors.md |
| /courses/automate-foundations/types-of-action-connectors | /academy/md/courses/automate-foundations/types-of-action-connectors.md |
| /courses/automate-foundations/automations-in-marketplace | /academy/md/courses/automate-foundations/automations-in-marketplace.md |
| /courses/automate-foundations/using-trigger-conditions-to-control-an-automate-execution | /academy/md/courses/automate-foundations/using-trigger-conditions-to-control-an-automate-execution.md |
| /courses/automate-foundations/using-conditionals-when-publishing-to-production | /academy/md/courses/automate-foundations/using-conditionals-when-publishing-to-production.md |
| /courses/automate-foundations/using-the-http-connector-with-a-publish-event | /academy/md/courses/automate-foundations/using-the-http-connector-with-a-publish-event.md |
| /courses/automate-foundations/using-http-listeners | /academy/md/courses/automate-foundations/using-http-listeners.md |
| /courses/automate-foundations/understanding-http-listeners | /academy/md/courses/automate-foundations/understanding-http-listeners.md |
| /courses/automate-foundations/understanding-scheduler | /academy/md/courses/automate-foundations/understanding-scheduler.md |
| /courses/automate-foundations/launch-connector | /academy/md/courses/automate-foundations/launch-connector.md |
| /courses/automate-foundations/automate-foundations-quiz | /academy/md/courses/automate-foundations/automate-foundations-quiz.md |
| /courses/automate-foundations/utility-connectors | /academy/md/courses/automate-foundations/utility-connectors.md |
| /courses/automate-foundations/use-case-translation-with-chatgpt | /academy/md/courses/automate-foundations/use-case-translation-with-chatgpt.md |

## Supplement for indexing

### Content summary

Automate is a user-friendly visual workflow builder designed for business users and developers. It empowers you to effortlessly create and manage complex, multi-step processes through intuitive clicks instead of delving … Automate is a user-friendly visual workflow builder designed for business users and developers. It empowers you to effortlessly create and manage complex, multi-step processes through intuitive clicks instead of delving into code. This simplification streamlines the integration of the Contentstack platform into your composable architecture, alleviating the associated technical complexities. Pre-requisites: 1\. Account in Contentstack with access to a Stack as an Administrator or Developer. If possible, please create a new Stack to use only with the Partner Courses. 2\. A basic comprehension of We are excited for you to learn how Contentstack's Automate can assist you in automating your workflows while integrating with external platforms. This course will present examples of Automation Hub recipes and ask you to follow along to recreate these recipes in your Contentstack organization. If you don't yet have a site for the exercises, we recommend creating a new Starter App site using the Bootstrap CLI (https://www.contentstack.com/docs/developers/cli/bootstrap-starter-apps/) for the course exercises. Through practical examples, you will gain an understanding of how to create automation

### Retrieval tags

- Contentstack Academy
- automate-foundations
- What
- Automate
- Creating
- New
- Project
- First
- Walkthrough
- Exercise
- Review
- Your
- Automation
- Hub

### Indexing notes

Chunk at each "### Lesson NN — Title" heading; copy lesson_id and topics from the preceding HTML comment into chunk metadata for RAG filters.
Course slug: automate-foundations. Union of lesson topic tokens: What, Automate, Creating, New, Project, First, Walkthrough, Exercise, Review, Your, Automation, Hub, Settings, Options, Understanding, Triggers, Using, Trigger, Connectors, Action, Types, Automations, Marketplace, Conditions, Control, Execution, Conditionals, When, Publishing, Production, the, HTTP, Connector, with, Publish, Listeners, Scheduler, Launch, Foundations, Quiz, Utility, Use, Case, Translation, ChatGPT.
Do not embed or retrieve LMS-only quiz items or mastery exam answer keys from this export.

### Asset references

| Label | URL |
| --- | --- |
| AH-image1.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf9681be1b6d35416/6625c430700d6cafe6a666b9/AH-image1.png` |
| AH-image2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt190acdddc8aac224/6625c4fb210d90d2483a3240/AH-image2.png` |
| AH-image3.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blta8ff7ac243b34016/6625c57424e1812b95acc90a/AH-image3.png` |
| AH-image4.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf12e36182ffa4624/6625c5afc9de46bfffd472c6/AH-image4.png` |
| automate-section.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt29d01db612819a0b/6648ba4c16e6bf37bb590c44/automate-section.png` |
| new-project.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1a56786c25015b54/6648bb616d705597e74d9090/new-project.png` |
| create-project.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt55529f56aa4828f0/6648bc25d4d02e992a2eab6d/create-project.png` |
| new-automation-dialog.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt5852cf6e9447a81d/6648bd9352619d711ea90a13/new-automation-dialog.png` |
| trigger-action-sterps.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blte4704e39fdbc450e/6648bdef5fd9af818c70e24e/trigger-action-sterps.png` |
| Video thumbnail: First Automate Project Walkthrough | `https://cdn.jwplayer.com/v2/media/cn4Eqtpu/poster.jpg?width=720` |
| er-create-automation.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltdfe3ff2a3c263cbe/6648c1205c24835191bc345b/er-create-automation.png` |
| config-trigger.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt84323b82694e0c34/6648c1a5d4d02eecc82eab76/config-trigger.png` |
| trigger-types.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt66a6986f45bfa9df/6648c202acadaf48b07282dc/trigger-types.png` |
| test-trigger.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt7209e595367da050/6648c24e0b508a7d34dcfc62/test-trigger.png` |
| test-trigger2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd7d3aaaee993018a/6648c2613092d0864a63f98d/test-trigger2.png` |
| email-automate.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt07960e4f683f1151/6648c2c24ac76e5e0740f842/email-automate.png` |
| Video thumbnail: Settings & Options | `https://cdn.jwplayer.com/v2/media/SHvpVjgb/poster.jpg?width=720` |
| types-of-triggers.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt13fb0843f8d32f85/6648dc36dda14b1dbfdff5d7/types-of-triggers.png` |
| types-of-triggers.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt973d0a0974d50e66/6648dc9f0bbc6203ad7fabbf/types-of-triggers.png` |
| Video thumbnail: Using Trigger Connectors | `https://cdn.jwplayer.com/v2/media/F8X2LBBr/poster.jpg?width=720` |
| Video thumbnail: Action Connectors | `https://cdn.jwplayer.com/v2/media/3ykB6UIr/poster.jpg?width=720` |
| automate-connectors.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt450a11a187293158/6648df3f015b1c5aaa56ef88/automate-connectors.png` |
| update-entry.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd5d421643619410c/6648dfa60a0de6ffe5314ce9/update-entry.png` |
| publish-entry.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt3fb4550b9d2c404f/6648dfe34ac76e417540f869/publish-entry.png` |
| communicate.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt01249a627ac710d3/6648e00d0a0de65c88314ced/communicate.png` |
| choose-connector.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt472505ba83ebeb1f/6648e04916e6bf7142590c5b/choose-connector.png` |
| connector-detail.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt2bd9a0b07a06bf3b/6648e0674284321e941989a0/connector-detail.png` |
| types-of-connectors.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt61d6e1debdf89919/6648e12516e6bf4543590c61/types-of-connectors.png` |
| Video thumbnail: Automations in Marketplace | `https://cdn.jwplayer.com/v2/media/PKf2GGKG/poster.jpg?width=720` |
| Video thumbnail: Using Trigger Conditions to Control an Automate Execution | `https://cdn.jwplayer.com/v2/media/dCjBIaBC/poster.jpg?width=720` |
| Video thumbnail: Using Conditionals When Publishing to Production | `https://cdn.jwplayer.com/v2/media/LHUBP0RN/poster.jpg?width=720` |
| Video thumbnail: Using the HTTP Connector with a Publish Event | `https://cdn.jwplayer.com/v2/media/MfUpnFZz/poster.jpg?width=720` |
| Video thumbnail: Using HTTP Listeners | `https://cdn.jwplayer.com/v2/media/MfUpnFZz/poster.jpg?width=720` |
| http-listener2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt8c471a1cdcd30f3e/664947c35c248385cfbc34f9/http-listener2.png` |
| scheduled-jobs.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt63e0fdbddb2882fe/66494833342fb531a162ccc5/scheduled-jobs.png` |
| launch-connector.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltdda2557e6e507603/66494908efc97a69cb4c0ac4/launch-connector.png` |
| launch-connector-for-trigger.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1d6b0a82057555c3/664949670b508aef4fdcfd1e/launch-connector-for-trigger.png` |
| data-store.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt93f2a8b94bd49abf/66494a0f4ac76e5d8f40f8fc/data-store.png` |
| http-connector.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf8395252dca738e0/66494a5b0bbc628ea47fac08/http-connector.png` |
| wait-action1.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1902cd2c8600e1b4/66494ade0bbc6207ac7fac0c/wait-action1.png` |
| wait-action2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd87d2c9ea470f3bc/66494b00b2e852f9f0451976/wait-action2.png` |
| transform2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt0b5daaf2141713c8/66494b574b531e4547c328ba/transform2.png` |
| transform1.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt8d241b3597b12963/66494b57015b1c360b56effa/transform1.png` |
| Video thumbnail: Use Case: Translation with ChatGPT | `https://cdn.jwplayer.com/v2/media/T1PfSEIE/poster.jpg?width=720` |

### External links

| Label | URL |
| --- | --- |
| Contentstack Academy home | `https://www.contentstack.com/academy/` |
| Training instance setup | `https://www.contentstack.com/academy/training-instance` |
| Academy playground (GitHub) | `https://github.com/contentstack/contentstack-academy-playground` |
| Contentstack documentation | `https://www.contentstack.com/docs/` |
| new Starter App site using the Bootstrap CLI | `https://www.contentstack.com/docs/developers/cli/bootstrap-starter-apps/` |
| AH-image1.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf9681be1b6d35416/6625c430700d6cafe6a666b9/AH-image1.png` |
| AH-image2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt190acdddc8aac224/6625c4fb210d90d2483a3240/AH-image2.png` |
| AH-image3.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blta8ff7ac243b34016/6625c57424e1812b95acc90a/AH-image3.png` |
| AH-image4.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltf12e36182ffa4624/6625c5afc9de46bfffd472c6/AH-image4.png` |
| automate-section.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt29d01db612819a0b/6648ba4c16e6bf37bb590c44/automate-section.png` |
| new-project.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt1a56786c25015b54/6648bb616d705597e74d9090/new-project.png` |
| create-project.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt55529f56aa4828f0/6648bc25d4d02e992a2eab6d/create-project.png` |
| new-automation-dialog.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt5852cf6e9447a81d/6648bd9352619d711ea90a13/new-automation-dialog.png` |
| trigger-action-sterps.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blte4704e39fdbc450e/6648bdef5fd9af818c70e24e/trigger-action-sterps.png` |
| More about 'Create a New Automation' | `https://www.contentstack.com/docs/developers/automation-hub-guides/create-an-automation/` |
| Edit an existing Automation | `https://www.contentstack.com/docs/developers/automation-hub-guides/edit-automation-details/` |
| Delete an existing Automation | `https://www.contentstack.com/docs/developers/automation-hub-guides/delete-automation/` |
| Automate Limitations - Review maximum number of projects, automations and steps | `https://www.contentstack.com/docs/developers/automation-hub-guides/limitations-of-automation-hub` |
| er-create-automation.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltdfe3ff2a3c263cbe/6648c1205c24835191bc345b/er-create-automation.png` |
| config-trigger.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt84323b82694e0c34/6648c1a5d4d02eecc82eab76/config-trigger.png` |
| trigger-types.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt66a6986f45bfa9df/6648c202acadaf48b07282dc/trigger-types.png` |
| test-trigger.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt7209e595367da050/6648c24e0b508a7d34dcfc62/test-trigger.png` |
| test-trigger2.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/bltd7d3aaaee993018a/6648c2613092d0864a63f98d/test-trigger2.png` |
| email-automate.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt07960e4f683f1151/6648c2c24ac76e5e0740f842/email-automate.png` |
| types-of-triggers.png | `https://images.contentstack.io/v3/assets/bltebc53cfaf0dd6403/blt13fb0843f8d32f85/6648dc36dda14b1dbfdff5d7/types-of-triggers.png` |
