Automation - triggers, connectors, and workflow automation

Text Lesson7m 15sIntermediateReleased: July 31, 2026

Automation Hub: triggers, connectors, and workflow automation

TL;DR:

  • Automation Hub connects CMS events (publish, stage change, asset upload) to actions (Slack messages, Jira tickets, auto-publish) without custom code.
  • Scope triggers narrowly to avoid noisy, high-volume automation runs.
  • Automations execute asynchronously and independently — design each flow to be self-contained.

Workflows define the stages content moves through. Automation Hub defines what happens automatically when content moves. It is Contentstack's built-in automation engine - a visual flow builder that connects CMS events to actions without requiring you to write webhook handlers, deploy serverless functions, or maintain integration infrastructure. When an entry is published, Automation Hub can notify a Slack channel. When content moves to a review stage, it can assign a reviewer. When an asset is uploaded, it can create a task in Jira. These automations run inside the Contentstack platform, configured through a drag-and-drop interface in the Automate section of your stack.

Where Automation Hub fits in the platform

Automation Hub sits between Contentstack's event system and external services. Every action in Contentstack generates events: entries are created, updated, published, unpublished, or deleted; assets are uploaded or removed; workflow stages change; releases are deployed. Without Automation Hub, the only way to react to these events is through webhooks - which require you to build, host, and maintain an endpoint that receives the event payload and executes logic.

Automation Hub eliminates that infrastructure layer for common automation patterns. Instead of deploying a Lambda function that listens for a webhook and posts to Slack, you configure a flow in the Automation Hub UI: trigger on “entry published,” action is “send Slack message.” The automation runs on Contentstack's infrastructure.

This does not replace webhooks entirely. Webhooks remain the right choice for custom integrations, complex business logic, or scenarios where you need full control over the processing pipeline (as covered in the webhooks lesson in Course 6). Automation Hub is for the 80% of automation needs that follow a trigger-action pattern and do not require custom code.

Triggers: what starts an automation

A trigger is the event that initiates an automation flow. You configure triggers in the Automation Hub flow builder by selecting from a list of supported CMS events.

Common triggers include:

TriggerFires when
Entry createdA new entry is created in any (or a specific) content type
Entry updatedAn existing entry is saved with changes
Entry publishedAn entry is published to any (or a specific) environment
Entry unpublishedAn entry is unpublished from an environment
Entry deletedAn entry is permanently deleted
Workflow stage changedAn entry moves to a different workflow stage
Asset uploadedA new asset is uploaded to the stack
Asset publishedAn asset is published to an environment
Release deployedA release is deployed to an environment

Triggers can be scoped. You do not have to react to every entry creation across every content type. You can configure a trigger to fire only when entries of a specific content type are created, or only when entries are published to a specific environment, or only when entries move to a specific workflow stage.

This scoping is important for avoiding noisy automations. A trigger that fires on every entry update across all content types will generate enormous volumes of automation executions, most of which are irrelevant. Scope triggers as narrowly as possible.

Actions: what the automation does

An action is the operation performed when a trigger fires. Actions connect to internal Contentstack operations or external services.

Internal actions operate within Contentstack:

  • Move to workflow stage: automatically advance or revert an entry's workflow stage.
  • Update entry field: set or modify a field value on the entry that triggered the automation.
  • Publish entry: publish the triggering entry to a specified environment.
  • Create a task: generate a task assigned to a specific user or role.
  • Send email notification: send an email to specified recipients with customizable content.

External actions connect to third-party services through pre-built connectors:

  • Send Slack message: post a message to a Slack channel or direct message.
  • Send Microsoft Teams message: post a notification to a Teams channel.
  • Create Jira issue: create a ticket in a Jira project.
  • Call webhook: send an HTTP request to any external URL (for services without a dedicated connector).

Each action in a flow can reference data from the trigger event. When the trigger is “entry published,” the action can include the entry title, the content type, the environment it was published to, and the user who performed the publish. This contextual data makes notifications and external records meaningful rather than generic.

Connectors: pre-built integrations

Connectors are Automation Hub's pre-built bridges to external services. Instead of configuring raw HTTP requests, you authenticate a connector once and then use it across multiple automations.

Setting up a connector typically involves:

  1. Navigate to the Automate section of your stack.
  2. Select a connector (e.g., Slack).
  3. Authenticate by providing the required credentials or completing an OAuth flow.
  4. The connector is now available for use in any automation flow within the stack.

Available connectors include:

  • Slack: post messages, create channels, add reactions.
  • Microsoft Teams: send messages, create cards.
  • Jira: create issues, update issues, add comments.
  • Asana: create tasks, update task status.
  • Email (SMTP): send emails through your configured mail service.
  • Generic webhook: call any HTTP endpoint for services without a dedicated connector.

Connectors handle authentication, retry logic, and payload formatting. When you add a “Send Slack message” action to a flow, you select the authenticated Slack connector, choose the channel, and compose the message using template variables from the trigger data. You do not manage OAuth tokens, handle token refresh, or format Slack API payloads.

Building an automation: the visual flow builder

The Automation Hub flow builder is accessed through the Automate section of your Contentstack stack. Building an automation follows a consistent pattern:

  1. Create a new automation: click “New Automation” and give it a descriptive name (e.g., “Notify editors on new campaign entry”).
  2. Configure the trigger: select the event type and scope it to the relevant content type, environment, or workflow stage.
  3. Add actions: add one or more actions that execute when the trigger fires. Actions execute sequentially.
  4. Add conditional logic (optional): insert if/then branches to route the automation based on field values, content type, or other criteria.
  5. Test the automation: use the test function to simulate a trigger event and verify the actions execute correctly.
  6. Activate the automation: enable the automation to start processing real events.

Here is a concrete example. You want to notify a Slack channel whenever a blog post is published to production:

Trigger configuration:

  • Event: Entry published
  • Content type: Product
  • Environment: production

Action configuration:

  • Action: Send Slack message
  • Connector: (your authenticated Slack connector)
  • Channel: #content-published
  • Message template:
New blog post published to production:
Title: {{entry.title}}
Product: {{entry.title}}
URL: {{entry.url}}
Published by: {{user.name}}

The template variables (wrapped in double curly braces) are populated from the trigger event data. When the automation fires, the Slack message contains the actual entry title, author, URL, and the name of the user who clicked “Publish.”

Conditional logic: if/then branching

Not every trigger event should produce the same action. Automation Hub supports conditional branching that evaluates entry data to determine which path the automation follows.

Consider a scenario where different regional editors should be notified based on the entry's locale:

Trigger: Entry moved to “Review” stage in the “Campaign” content type.

Condition: Check the value of the region field.

  • If region equals “EMEA”: send Slack message to #emea-editors.
  • If region equals “APAC”: send Slack message to #apac-editors.
  • If region equals “Americas”: send Slack message to #americas-editors.
  • Default: send Slack message to #global-editors.

Conditional logic uses field values from the entry, metadata from the event (like the environment name or the user who triggered the event), and comparison operators (equals, contains, starts with, is empty).

You can also chain conditions. An automation might first check the content type, then check a field value, then check the target environment before deciding which action to execute. This allows a single automation to handle complex routing without requiring separate automations for each scenario.

Practical automation patterns

Pattern 1: Auto-assign reviewer on stage transition

Trigger: Entry moves to “Review” stage.

Action: Update the entry's “assigned_reviewer” field based on the content type.

Why: eliminates the manual step of assigning a reviewer, reducing the time entries spend waiting in the review queue.

Pattern 2: Notify Slack on publish

Trigger: Entry published to “production” environment.

Action: Send Slack message to the #content-live channel with entry title, URL, and publisher name.

Why: keeps the team informed about what is going live without requiring anyone to monitor the Contentstack publish queue.

Pattern 3: Create Jira ticket on review rejection

Trigger: Entry moves from “Review” back to “Draft” stage.

Action: Create a Jira issue in the “Content Fixes” project, populated with the entry title, the reviewer's comments, and a link to the entry in Contentstack.

Why: ensures rejected content gets tracked in the team's project management tool rather than relying on the author to notice the stage change.

Pattern 4: Auto-publish to staging on approval

Trigger: Entry moves to “Approved” stage.

Action: Publish the entry to the “staging” environment.

Why: eliminates the manual step of publishing approved content to staging for final QA verification. The content appears on the staging site automatically once it is approved.

Pattern 5: Send stakeholder summary on release deployment

Trigger: Release deployed to “production” environment.

Action: Send email to a distribution list with the release name, the number of entries included, and the deployment timestamp.

Why: provides stakeholders with a record of content deployments without requiring them to log into Contentstack.

Limitations and operational considerations

Automation Hub is powerful, but it operates within specific constraints that affect how you design automations.

Asynchronous execution. Automations do not execute synchronously with the triggering event. When an editor publishes an entry, the publish action completes, and the automation runs afterward. There is a small delay between the trigger event and the action execution. This means you cannot use Automation Hub for actions that must complete before the triggering operation finishes.

No guaranteed execution order. If multiple automations are triggered by the same event, execution order is not guaranteed. An automation that sends a Slack notification and another that updates a field might execute in either order. Design automations to be independent of each other - do not assume one automation's action will complete before another automation starts.

Rate limits. Automation Hub enforces rate limits on automation executions. High-volume operations - like bulk-publishing 500 entries - can trigger 500 automation executions simultaneously, potentially hitting rate limits. Plan for this by using bulk operations judiciously and designing automations that handle rate-limited responses gracefully.

Connector authentication expiry. OAuth tokens for connectors (Slack, Jira, etc.) can expire. If a connector's authentication becomes invalid, all automations using that connector will fail silently or with errors. Monitor connector health and re-authenticate proactively before tokens expire.

Common pitfall:

There is no “undo” for automation actions. If a misconfigured flow publishes an entry to production prematurely, you have to reverse it manually. Always test automations against non-production content before activating them.

No rollback: If an automation performs an undesired action (e.g., publishing an entry to production prematurely), no automatic undo exists. The action has to be manually reversed. Test automations thoroughly before activating them on production content.

Example: marketing team campaign automation

The Veda marketing team uses Contentstack to manage campaign content. They have a “Product Line” content type with fields for collection name, description, launch date, hero image, and locale. The team wants three automations to streamline their process.

Automation 1: Notify design team on new campaign creation.

  • Trigger: Entry created in the “Product Line” content type.
  • Action: Send Slack message to #design-requests with the campaign name, region, and launch date.
  • Result: the design team learns about new campaigns immediately and can begin preparing visual assets without waiting for a manual handoff.

Automation 2: Auto-assign regional editor based on locale.

Trigger: Entry created in the “Product Line” content type.

  • Condition: Check the locale field value.
  • If locale is fr-FR: set assigned_editor to “Marie Dupont.”
  • If locale is de-DE: set assigned_editor to “Klaus Weber.”
  • If locale is en-US: set assigned_editor to “Sarah Johnson.”
  • Action: Update the entry's assigned_editor field with the matched editor.
  • Result: campaigns are automatically routed to the correct regional editor based on the target locale, eliminating the manual assignment step.

Automation 3: Send stakeholder summary on campaign publish.

  • Trigger: Entry published to “production” in the “Product Line” content type.
  • Action: Send email to the marketing-stakeholders distribution list.
  • Email content includes: campaign name, region, locale, launch date, and the URL where the campaign page is live.
  • Result: stakeholders receive a professional summary of every campaign launch without needing access to Contentstack or monitoring the publish queue.

These three automations together eliminate three manual coordination steps: design handoff, editor assignment, and stakeholder notification. The content team's workflow becomes: create campaign > content is automatically routed and design team is notified > write and review content > publish > stakeholders are automatically informed.

Common mistakes

Mistake 1: Building automations that depend on execution order

If you create two automations on the same trigger - one that sets a field value and another that reads that field value - the reading automation may execute before the writing automation. Design each automation to be self-contained. If you need sequential operations, put them in a single automation flow as ordered actions.

Mistake 2: Not scoping triggers to specific content types

A trigger configured as “on any entry published” will fire for every content type in the stack. If your stack has 20 content types and you only care about blog posts, the automation runs 19 times unnecessarily for every non-blog-post publish. Always scope triggers to the specific content type, environment, or workflow stage that matters.

Mistake 3: Forgetting to test automations with realistic data

The Automation Hub test function simulates trigger events, but the test data may not reflect production scenarios. An automation that works with a test entry might fail on a real entry with empty fields, special characters in the title, or unexpected locale values. Test with entries that represent the full range of content your team produces.