Dhaval Majithia

Dhaval manages technical documentation for Contentstack and has over 10 years of experience in writing, marketing, and SEO. He is a marathon runner, sports enthusiast, and an avid reader.

Posts by Dhaval Majithia

Jan 25, 2024

Drupal vs. Contentstack Headless CMS Side-by-Side Comparison

Today, searching for the perfect content management system (CMS) is no different from the quest for the Holy Grail. After the dot-com boom in the late ‘90s, many companies found it easy to reach a global audience with their content via the internet. This era resulted in three dominant open-source CMS systems: Wordpress, Joomla, and Drupal. In addition, big players such as Adobe, Sitecore, and SDL entered the scene with their own feature-rich content management systems. While each one has proven a useful tool for many to establish a web presence, more complex enterprise web properties and a new generation of more sophisticated and engaging digital properties have given rise to a new breed of CMS. Having implemented the top open-source and proprietary CMS environments for some of the most ambitious and innovative brands over the last 10 years, I would like to draw on that experience to illustrate the difference between the old and new ways of managing content by offering a detailed comparison between our own award-winning headless content management system – Contentstack – and one of the big three legacy CMS environments, Drupal. The History of Contentstack Contentstack and Drupal share a similar purpose, but they were created with different visions in mind. Originally created to become the global open source software for powering the web, Drupal CMS was created in 2001 and is still one of the most popular CMS options around. Contentstack, on the other hand, was created with a laser focus on making omnichannel content management easier for content stewards in enterprise organizations – typically users with little or no hands-on development experience. The result is a headless CMS that allows business users to easily add and manage content on their own, without the need to understand or touch code. No more support requests, no more waiting for an overburdened development team to respond –  with Contentstack any content manager can publish a new website with the touch of a button. In the following feature comparison, you can see how Contentstack provides several advantages over using Drupal thanks to the ease of installation, development, and on-going content management: Seamless Installation and Easy to Use Ever wondered why most content management systems are so difficult to use? Installing Drupal itself consists of a multitude of steps. To actually configure Drupal CMS for your website is a painful exercise which typically requires working through endless pages of documentation. Not to mention, Drupal is known to have a steeper learning curve than other CMS platforms, introducing complexities and challenges for new customers. With Contentstack, customers are able to stand up a new website in four steps (or less). This includes installation, basic templating, configuring the publishing options, and publishing the content. All with the added benefits of onboarding new business users in less than 30 mins and publishing content 2-10x faster. The magic ingredient that makes this possible is the separation of content from site-related programming and design. Instead of relying on databases, it’s built on top of Backend, a robust application development platform. So, you do not need to be an expert in databases, PHP, Ruby on Rails, or Java to implement Contentstack. Even basic HTML and simple JavaScript templating are sufficient to create an impressive website from scratch, in record time. Staying on the Cutting Edge Drupal has been in the market for more than a decade. Hence, it’s almost everywhere and today the developer community is focused on stability and making the software available globally. But slow development velocity and content publishing for new experiences, creating an inability to keep pace with changing business needs. Contentstack was initially created for large websites with a large amount of content to be managed by multiple users, so stability and a global perspective were a requirement right from the beginning. However, the Contentstack team never stops pushing the envelope and regularly rolls out innovative new features that make Contentstack a tool that can keep up with the ever-changing digital landscape facing businesses today. With the changing nature of web pages and the introduction of elements such as SEO and open graph meta tags, there is a need for a robust content management system that can quickly make new features available without relying on a convoluted library of often brittle plug-ins for new features. Empowering Frontend Engineers The rise of Node.js is largely considered a blessing by the developer community. For years, JavaScript handled the front end and PHP managed server-side tasks. However, with the emergence of Node.js, JavaScript became empowered to handle tasks on the server too. This opened up a world of opportunity for JavaScript developers. Wordpress, Joomla, Drupal – all remain stuck in the world of PHP, while Contentstack is wholly based on Node.js, which has taken the developer world by storm. This allows even front-end developers to create page templates with ease. Mobile-first Thanks to the growing market of smartphones and tablets, people increasingly use their mobile devices to consume and interact with content. However, none of the three CMS giants offer mobile-friendly publishing by default. When using Drupal, in addition to choosing a responsive template, you may have to install several plugins or make changes to existing settings to ensure that a site displays even just reasonably well on mobile devices. Contentstack was built on top of the mobile platform Backend and inherits comprehensive mobile capabilities. All data and content is stored in the JSON format which is easily available using REST APIs and particularly well suited for delivery to mobile applications. This modern approach characterized by being API-first and mobile-optimized allows content to be consumed easily across legacy clients, as well as the new generation of mobile devices. User Management User Management is one of the strongest suits of Contentstack and a key enabler of CMS success in the enterprise, since there is rarely just a single person in charge of all content management at a company. Traditional content management systems such as Drupal only allow you to set roles and users for different content types (aka nodes). You can allow or disallow a user to view, edit, or delete content within a node. Contentstack, on the other hand, gives you more: a simpler interface and more sophistication for managing roles at a granular level. In addition to defining access to specific forms and environments, you can restrict a user from publishing content on a form level. You can even restrict users to certain publishing environments. For a real-life example let’s consider a combination of marketing staff and members of the corporate PR team sharing access to a form managing the company’s press releases. Here, one user might be granted rights to create new and modify existing press releases. Another separate user might be granted the right to publish releases. The latter is almost impossible if you’re using legacy Drupal. Better ROI with Software-as-a-Service Drupal is an open-source product, resulting in scores of firms dedicated to Drupal-related services, such as consulting, training, implementing, software development and more. In many cases using Drupal effectively means finding and hiring these special Drupal CMS experts – which aren’t cheap. On top of Drupal expertise, you’ll also need to shore up on other backend specialists that can help with configuring databases and smoothly scale the CMS environment. In addition, Drupal customers are typically caught in a recurring upgrade cycle, creating concern for customers who want to stay up to date with the latest features and security patches. By contrast, Contentstack is delivered via SaaS, which eliminates the need for expensive servers. It is equipped with a dedicated service in which the backend stack and scaling don’t require you to hire a team of rarefied and costly specialists. Multi-Target Publishing Businesses need their content readily available on multiple platforms. By contrast, to accomplish this with Drupal, you would have to employ an array of modules. Contentstack is equipped with a unique feature that allows publishing not only to multiple environments such as development, staging, and production but also to multiple channels for these environments. Simply publish to one or more environments and the content will automatically publish to all endpoints associated with those environments. The Cost Breakdown The costs associated with using a legacy CMS like Drupal are far higher than using a SaaS CMS like Contentstack, making Contentstack ideal for enterprise needs and budgets. Although Drupal and Contentstack are both popular content management systems, they each serve different markets. Contentstack is focused on providing a seamless experience for enterprise users at scale, while Drupal is an open-source project geared towards a diverse global user base. I hope I’ve been able to convey some of the strengths of Contentstack in simplifying and accelerating content management for enterprises, which makes it possible to manage content for any digital front-end (web, mobile, app, in-store kiosks, etc.) content using a single platform.

Dec 15, 2021

Announcing Contentstack Support for Zapier

The support for Zapier and Contentstack is now in public beta.  The addition of Zapier support allows you to connect your Contentstack account to over 3,000 apps, automate tasks and get more out of Contentstack without writing code. Check our complete Zapier support documentation.  In this blog post, we will dive into how Contentstack’s support for Zapier can do wonders for you.  What is Zapier? Zapier is a powerful tool that lets you connect apps you commonly use and create automated workflows known as “Zaps.” A Zap follows an “if-this-happens-do-that” workflow, which can have one “trigger” and one or more “actions.” Once you set up a Zap, whenever the trigger event happens in app A, the defined actions will be performed automatically in app B. Here’s an example of a Zap: After creating a new entry in Contentstack, send a notification to a Slack channel. And it all happens automatically, so it is an excellent timesaver for your team members! You can set up simple Zaps connecting just two apps, or you can create sophisticated Zaps with multiple actions, automating complex tasks. Zapier has integrations with over 3,000 applications, including Google Suite, Dropbox, Slack, Trello, Salesforce, Facebook, Twitter, Stripe and now Contentstack. You can connect any of these apps to create your custom Zaps. What Zapier Support Means for Contentstack Users Our support for Zapier includes several Contentstack triggers and actions that you can use to connect Contentstack with thousands of other apps to create custom Zaps. Contentstack Triggers for Zapier New Entry: Triggers the Zap after creating a new entry in the specified content type of the stack you connected with Zapier. Update Entry: Triggers the Zap when updating an entry in the specified content type of the stack you connected with Zapier. Publish Entry: Triggers the Zap when publishing an entry in the specified content type of the stack you connected with Zapier. Update Workflow stage: Triggers when updating a particular workflow stage of an entry in the specified content type of the stack. New Asset: Triggers after creating and uploading a new asset in the stack you connected with Zapier. Contentstack Actions for Zapier Create Entry: The Create Entry action creates a new entry in the specified stack. Update Entry: The Update Entry action updates the entry of a stack in Contentstack. To do this, users must choose the fields that need to be updated. Publish Entry: The Publish Entry action allows you to publish an entry to one or more environments. You can use these triggers and actions to create your own Zaps. Contentstack actions for Zapier opens up a lot of possibilities and gives you endless ways to automate tasks. Here are a few examples to help get you started creating your own Zaps: When publishing a new asset (trigger), save a copy in Dropbox (action) to create backups. After updating data in Google Sheets (trigger), update the entry in Contentstack (action). Share a link on all your social media handles (action) when publishing a new entry (trigger). Nearly everything that you do before or after creating or publishing content in Contentstack can now be automated, and we have a doc with Recommended Zap Templates help you get started.  The Contentstack support for Zapier helps you get more done in less time without needing a developer. Try our Zapier support now. Next Steps Get started: Learn how to create your first Zap with Contentstack and Zapier. We have a step-by-step tutorial on how to set up a basic Zap. Get Zap Templates: Don’t know how this Zapier support can help you? Check out our list of Recommended Zap Templates that can help you do more with the Contentstack and Zapier. Stay updated: While we have listed above some Contentstack triggers and actions for Zapier, we will continue to add more. Keep checking our “Contentstack triggers and actions” page to get the up-to-date list.

Oct 22, 2019

Headless Ecommerce Architecture Using Contentstack and commercetools

Predicting the future is difficult. But given the pace at which customer demands and expectations are evolving, we can be certain that today’s solutions cannot cater to the requirements of tomorrow. This is especially true for the ecommerce space. Consumers expect more convenience (e.g., order from anywhere, anytime, through smart speakers). Businesses are demanding more flexible commerce solutions and reduced time to market. Moreover, with the increase in adoption of IoT devices, businesses are looking at solutions that can support connected experiences. This calls for a solution that can keep up with this pace of ever-changing demands. The answer is a re-imagined, modern and headless commerce architecture. Such an architecture combines a headless CMS that can deliver content, as well as a headless ecommerce platform that provides core e-shopping functionalities, such as pricing details, cart, payment gateway – all through REST APIs. Using Contentstack as your CMS and Commercetools as your ecommerce platform allows you to develop a robust, scalable, and secure ecommerce site that’s ready for the future. Content in Contentstack: Shopping Details in commercetools Since a headless CMS ensures that content can be published across any channel with ease, it makes more sense than ever to manage all product-related content within the CMS. This includes articles, images, and any other marketing content. Conversely, key components such as pricing, orders, cart, and checkout, can all be managed in commercetools. Such an implementation ensures that key concerns are separated, and of course, managed by two best-in-class solutions. Syncing Contentstack and commercetools for Seamless Integration Since both Contentstack and commercetools are API-based solutions and offer webhooks, keeping them in sync is easy. For example, whenever an order is placed, commercetools can trigger a webhook to update product inventory in Contentstack. Or, if any product details (such as pricing or offers) are updated in commercetools, it can send notifications so that site content editors can make corresponding site updates using Contentstack. It is easy to keep both systems in sync for any other event using webhooks. Ecommerce Demo: See Contentstack and commercetools in Action We have created a sample ecommerce web app using Contentstack and commercetools. You can check out the demo, view the code, or go through the steps to set up your own site. While the site is intended to be just a simple, straightforward demo, it will help you gain a quick understanding of how to set up an ecommerce site – and with Contentstack you can always add additional integrations and capabilities if you wish you enrich the experience. commercetools Extension for Contentstack-powered Sites The demo web app provided above uses both Contentstack and commercetools within your site code. There’s another way of integrating these two services: Create an ecommerce website using Contentstack, and use the commercetools field extension to fetch product details in your content type’s fields. Or you can use this extension within the demo app given above. Learn more about this extension to understand how you can use it in your apps. More Resources Contentstack + commercetools demo site tutorial commercetools custom field extension for Contentstack sites

May 31, 2019

Contentstack Introduces Advanced Language and Localization Features

Delivering content in multiple languages enables businesses to serve their customers better across geographies and improve engagement. However, performing tasks related to multi-language content—from the translation of content to uploading and managing the translated content—can be tedious and tricky at times. Contentstack understands this, and that’s why we are delivering new features and capabilities that ease the process of managing the content of multiple languages. Fallback Languages For Easy Localization Contentstack is introducing the ability to select the fallback language for the languages of your stack. It lets you specify which language to use as source content if the entry does not exist in the specified language. For example, let’s consider that ‘English - United States’ is the master language of your stack. The fallback language of ‘French - France’ is ‘English - United States,’ and the fallback language for ‘Spanish - Spain’ is ‘French - France.’ Now, while creating an entry for ‘Spanish - Spain,’ Contentstack will fetch data from ‘French - France’ to show the unlocalized entry. You can then use (and modify) this inherited content to localize the content in ‘Spanish - Spain’. The flexibility of specifying a fallback language makes the process of localization quicker and less painful for content managers. Read more about specifying a fallback language. Adding Support For Generic Languages Until now, Contentstack provided support for country-specific languages that allowed you to deliver content to specific markets (for example, ‘English - United States,’ ‘English - United Kingdom,’ ‘French - France,’ ‘French - Canada’). Contentstack now supports generic language options. A generic language is a language that is not tied to the corresponding region it is spoken in. So, for example, you can now add the generic language of 'Spanish' to your stack, instead of requiring you to associate the language with a region, such as 'Spanish - Bolivia,' 'Spanish - Argentina' or 'Spanish - Spain.' Read more about how generic languages work in Contentstack.

Apr 05, 2019

New Dashboard for Stacks, Widgets, and Field Configurations

Since the beginning, Contentstack’s objective has been to help enterprises transform and simplify the way they manage their digital assets. To that end, we have been releasing powerful and unique features on a near-weekly basis. Last week, we introduced several new features that will aid every member of your team, business and IT users alike. Here’s a rundown of what’s new. Dashboard for Stacks Your stacks just got a brand new Dashboard. Dashboard is a collection of widgets that are independent powerhouses, enabling you and your team to work better and faster. The best part about the new Dashboard is that it is fully customizable. In a single, central location, you now can show or hide whichever widgets you’d like, and you can even add new widgets to your stack right from the Dashboard. The default widgets that Contentstack provides are ‘Recently Modified Entries’ and ‘Recently Modified Assets.’ You can add new widgets through our new type of Experience Extensions called ‘Dashboard Widgets’ (more on this below). The Dashboard replaces the Content page as the default homepage of the stack. We are introducing the Dashboard to provide users with a console where they can get a quick overview of their stack, navigate to important pages, access widgets, and so much more, all from a centralized location. Read our documentation to learn more about the new Dashboard. Dashboard Widgets - A New Type of Extension We are glad to introduce yet another type of Experience Extension — Dashboard Widget. The Dashboard Widget lets you add any custom widget to your stack Dashboard. Developers can use this powerful extension to add a plethora of tools to their Dashboard. For example, you can create widgets that allow your stack’s users to view information about stack usage, add personal notes, and see a summary of other Contentstack components (total assets, users, roles, etc.). You can also use your Dashboard to display information from third-party apps, such as analytics, RSS feeds, and news, and add external functionalities, such as a text translator, keyword generator, and more. With Contentstack Dashboard Widgets, the possibilities are endless. We have created a step-by-step guide that explains how to create these widgets. Read through the guide and get started with the all-new Dashboard Widgets. Instance-level Configuration for Custom Fields Previously, if you had defined a configuration for a custom field, the configuration applied to all instances of that custom field. While this is still possible, you now also can define a different configuration for each instance of that custom field. For instance, if, while creating the Color Picker custom field, you define in the config parameter that the default color is blue, you can change the default color each time you add the Color Picker custom field in the content type. Read more about instance-level configuration for custom fields.

Mar 26, 2019

DataSync Offers the Best Content Synchronization Solution

The all-new DataSync is here. With the addition of DataSync to our synchronization offerings, we now provide the best and the most comprehensive synchronization solutions in the headless CMS space. We have something for every kind of content synchronization need. And that makes us the go-to choice for all things synchronization related. Our Synchronization offerings include the following components: Sync API Get all content or only incremental (delta) updates, anywhere, anytime. DataSync (New) Sync Contentstack data with your database (FileSystem, MongoDB) SDKs with Sync API support Build power apps using our SDKs which now support Sync APIs Mobile sync helpers Create offline apps by storing content on the device’s local storage We will learn more about each of these components later in this post. All About the New DataSync Contentstack DataSync Overview DataSync allows you to synchronize Contentstack data with your database (MongoDB, Filesystem, etc.). DataSync consists of tools that we have combined to give you the best synchronization possible. Whenever a piece of content is published, deleted or updated, Datasync saves a copy of the content changes in your database. Subsequently, all page requests are served directly from your database, instead of from Contenstack through APIs. Why Use Contentstack DataSync? Datasync is better than any synchronization module available. The following lists some of the compelling reasons to use DataSync. Deprecation of contentstack-express frameworkThe contentstack-express web framework has a built-in sync utility. However, we have deprecated the framework. If you are using the framework’s sync, please switch to the faster and better DataSync. Synchronize data fastIn comparison to the 'sync' functionality of the contentstack-express framework, DataSync synchronizes data over 8x faster! The former takes about 2 hours to synchronize 10,000 items, whereas the latter synchronizes the same data in under 10 minutes. Reduced API callsServing content through your database after syncing reduces the number of API calls made to Contentstack to fetch data. Use it with any databaseWe offer connectors for FileSystem and MongoDB databases. But you can write your own connectors and use DataSync with any database of your choice. Learn more about DataSync. Contentstack Synchronization Tools The Sync API In addition to DataSync Contentstack includes the Sync API that is part of our Content Delivery APIs and can be used to sync complete data and fetch incremental updates. It provides three main synchronization requests: Initial sync: For synchronizing complete data, i.e., the content of a stack that has ever been published to the specified environment. Initial synchronization is usually used to load data when the user uses the app for the very first time. Subsequent sync: For keeping your app up-to-date through delta updates. After completing an initial sync, this request fetches only the content that was published since the last synchronization. Pagination token: To fetch the subsequent batches of data. Read our Sync API documentation to get started with the Sync API. DataSync DataSync allows you to synchronize Contentstack data with your database. While we have covered some basics in the previous sections, here are some additional resources to help you get started with DataSync: DataSync Overview Getting started with DataSync Create a Node.js app using Contentstack DataSync Contentstack DataSync vs contentstack-express SDKs with Sync API Support Most of our content delivery SDKs support Sync API. Refer to the corresponding documentation to learn how the Sync API works with these SDKs. Using Sync API with iOS SDK Using Sync API with Android SDK Using Sync API with Javascript SDK We have also created SDK-specific playground apps to help you get started with Contentstack Sync API. Clone these apps and try out the APIs to get a first-hand experience of the synchronization methods. iOS playground app Android playground app JavaScript playground app Mobile Sync Helpers The mobile sync helpers enable your mobile apps to save data on the device’s local storage, which serve as the base for creating offline apps. These helpers contain methods that are required to map data fields of your content types and Realm database management system. Learn more about them. Using Realm Persistence Library with iOS SDK Using Realm Persistence Library with Android SDK We have created a couple of example applications that demonstrate using mobile sync helpers with our SDKs. Refer to the documentation to get started with the helpers. iOS persistence example app Android persistence example app

Jan 18, 2019

Field Visibility Rules and the New Content Type Builder – Handy Developer Tools

Our last release—Advanced Search and Bulk Operations—was all about giving more power and flexibility to content managers. This release is for developers.  Contentstack introduces Field Visibility Rules and Improved Content Type Builder that make it easier for developers to create and edit content types. With the help of these features, developers can create dynamic content types, fast.  Field Visibility Rules enable developers to create dynamic fields that can appear or disappear based on rules you specify. The new Content Type Builder comes with an updated look, empowering developers to drag and drop fields and edit field properties quickly. In this blog, we will discuss these new features, and see how they take your Contentstack experience to the next level. Field Visibility Rules – Show or Hide Fields Dynamically Field visibility rules help you set rules that define the visibility of specific fields of your content types.  While creating the content type, the developer can set if some fields should appear (or disappear) on the entry page based on the value entered in the operand field. The examples below show how dynamic fields makes the process of content creation easier and intuitive for content managers: Hide the Billing Address field if the user checks the Same as Shipping Address box field.  Display the Number of Years field, if the user selects Yes in the Have Prior Work Experience? select field.  These are just some of the examples of showing or hiding fields dynamically. Developers can use the flexibility to customize and manipulate the entry fields based on the requirements and accumulate precise data.  Read more about how you can use Field Visibility Rules to create a dynamic content type. Content Type Builder – A Fresh Look and Feel Content modeling is the most crucial process of creating a website or an app. This process happens on the Content Type Builder page. This is where the developer adds fields to the content type and creates the structure of the app.  To make this process easier and more efficient for the developers, we have re-designed the page and have added new features.   In addition to making the page more refreshing and cleaner, we have also made it easier for developers to edit field properties. As you drop or select a field, its properties are displayed on the right side of the page. This ensures that you never miss editing the important details of the field. This new Content Type Builder page will look as follows: Read more about content types here. 

Dec 28, 2018

Advanced Search and Bulk Operations: Powerful Tools for Content Managers

For a CMS that caters to the enterprise, it’s crucial to offer capabilities that help manage a ton of content with ease and great swiftness. Keeping this in mind, we have added two new powerful tools that make life easier for content managers: Advanced Search and Bulk Operations. The new advanced search lets you perform field-level searches, combine multiple queries, and save your searches for quick reference. The other new feature is bulk operations that let you perform everyday actions (such as publish, unpublish and delete) on multiple entries and assets simultaneously.   Let’s look at these two new features in detail.  Quick Content Retrieval Through Advanced Search Apart from performing a basic, full-text search, you can now perform an advanced search to retrieve the exact pieces of content that you are trying to find. Here’s what you can do with the new advanced search capabilities. Field-Level Search for Finding Needles in a (Content) Haystack You can perform searches on the values of specific fields. So, for example, you can look for entries where the Title field contains the words My First Article.  These type of search queries help you find needles in the haystack. Combine Queries to Get the Needle’s Head The new Advanced Search lets you combine multiple queries, using ANY or ALL operators, to further refine your search. With this, you can aim to find not just the needle, but the needle’s head as well from the haystack. The ANY operator works like ‘Or,’ where it fetches entries that meet any of the specified conditions.  For example, find entries where the Title field contains the words My first article, or the Price field has a value greater than $200.  The ALL operator works like ‘And,’ where it lets you search for entries that meet all the given conditions. For example, find entries where the Title field contains the words My first article, and the Author is John Doe.  Save Searches for Quick Re-Searching You can build complex search queries using the new Advanced Search features. However, if your work involves performing similar searches regularly, building the same set of queries repeatedly can be frustrating.  Contentstack, therefore, allows you to save your searches. With saved searches, you do not have to build queries again but reuse the saved ones. This saves time, efforts and a lot of headaches. Read our documentation on Advanced Search. Publish, Unpublish, Delete Entries or Assets in Bulk Contentstack introduces bulk operations, one of the most awaited features to date. You can now perform common actions (such as publish, unpublish, and delete) on entries or assets in bulk. With assets, you can also perform an additional bulk operation, i.e., move to folder.  To perform bulk operations, go to the entries list page of any content type, or the assets list page. Then, select the required entries or assets. You will then see quick links (Publish, Unpublish, Delete) on the top of the page. Use these links, and then perform the operations as usual. Helpful Resources With the new advanced search and bulk operations, content managers now have more flexibility and ease in managing content. Here are some more resources that you can refer to learn more about the features. Advanced Search Bulk Operations on Entries Bulk Operation on Assets

Nov 30, 2018

Workflow Just Got Better With New Advanced Features

Workflows appropriately implemented have the power to reduce content creation cycle time, improve accuracy, eliminate rework and standardize processes. We know that workflows directly or indirectly impact the bottom line. Keeping this in mind, we introduced some new advanced features that help you make your workflows more robust, flexible and secure. In this blog, we will see what has changed in the new workflow release and how it improves your content creation and publication process. Create multiple workflows within a stack One workflow for one stack is the story of the past. We understand that the workflow you use for the ‘Blog’ content type may not be applicable for the ‘Navigation’ content type. The purpose of these two content structures is different, so they may not necessarily have to go through the same review cycle. Hence, we now allow creating separate workflows for different content types of a stack.  Stage transition rules for fine-grained control You can now add rules for each stage transition. Through these advanced settings, you gain better control of the content flow and define who can access the stages of your content. Let’s understand what these transition rules are: Next available stagesThis field lets you add stages that will be available for selection when the user is at a particular stage. For example, if you add ‘Ready for Review’ as a next available stage under Draft, then, on the entry page, the users will be able to move the entry stage from Draft to only ‘Ready for Review,’ even though the workflow has many other stages. This ensures that you can create a workflow where users cannot skip essential stages. Users who can move this stage to next available stagesThis option lets you define who can move the current stage to the next available stages. This ensures that only authorized users are allowed to change the stage.  The Stage transition rules are shown below: With the combination of these two advanced settings, you can define simple to complex workflows, suiting any business requirements. Read more about the various real-world workflow use cases that we have described in our documentation.  Superusers with super authorities You can add users as ‘Superusers’ for your workflow. For these users, Stage transition rules do not apply. They can move the entry from one stage to another, without any restrictions.  This is especially helpful when the content flow is blocked due to unavailability of users responsible for advancing the entry stage to the next.  Please note that these superusers cannot view or change the workflow settings. The admin-like rights of these users are restricted only up to the workflow details section on the entry page. Central dashboard to view all tasks of a stack The stack owners and administrators can now view all the tasks assigned to all the users of a stack. This helps them monitor the progress of all the tasks from one central location and enables them to make relevant changes in the workflow accordingly.  Enable, disable, or delete workflows in a few clicks You can now enable, disable, or delete a workflow from the workflows list page. This helps you make changes to your workflow in a few clicks.  You can also perform these actions from within the workflow page.  New ‘Stage’ condition in Publish Rules Previously using workflow publish rules, it was possible to add an approver for every publish and unpublish action. With the new features, now you can also add a stage condition, i.e., allow publishing or unpublishing only if the entry reaches a particular workflow stage. This option ensures that the entry can be published only if it reaches a certain point in the entry creation process, and ensures that content does not get published until ready.  Helpful resources Workflows now offer advanced features that help you manage your content flow, implement restrictions, and streamline the process of publishing entries. If you haven’t tried it yet, log in to your Contentstack account and check out these new workflow features. For more details and, refer to the links below. Workflows documentationSample use casesWorkflows API requests 

Oct 26, 2018

Introducing the Contentstack Sync API for Developers

It goes without saying that mobile applications these days should be capable of working even with intermittent or no internet connection. Consider the Gmail mobile app, for example. You can access existing emails and create new emails without an active internet connection. As soon as the device establishes an internet connection, the app fetches new incoming emails and sends the ones that you created. This is made possible by a concept called ‘synchronization’. Contentstack now brings you the same functionality via its new Sync API. Let’s dig deeper to understand what it is and how it works. What is the Contentstack Sync API? The Sync API allows you to save your app data on a device’s local storage and then fetch incremental changes through so-called delta updates. After it first syncs data, the system delivers only the content that was changed since the last sync. Let’s understand the Sync API in more detail. How does the Sync API work? Applications, especially mobile apps, need to work even without an internet connection. To do this, the client app must synchronize with Contentstack regularly, and especially after a period of internet disconnection. This synchronization is now done through the Sync API. When an application is accessed for the first time, the Initial Sync request of the Sync API allows your app to download and save a local copy of all the data of the stack (for e.g., all existing emails in your Gmail account). This ensures that even if the mobile loses internet connection, the user is able to access the data. When the device re-connects to the internet, the Subsequent Sync request of the Sync API ensures that the app receives only the updates missed while the connection was lost (for e.g., new email received). Without the Sync API, the device would always need an active internet connection, otherwise, it may not work. Furthermore, after losing internet connection, the app would need to fetch the entire content again the next time it establishes a connection. That’s a lot of work for an app with potentially limited bandwidth or sporadic connectivity. The Sync API is, therefore, a key component of any data-driven mobile app. Let’s look at some of the advantages of using the Sync API. Advantages of Sync API The Sync API is beneficial for developers and business users alike. It makes your app faster and smarter while saving time and preserving resources. Let’s look at some of the important advantages that Sync API offers. Lower data consumptionThe Sync API allows your app to fetch only the data that has changed since the last sync. This consumes significantly less data compared to fetching the entire dataset, which is especially useful for data plans with strict usage limitations. It also means that users don’t miss important updates even when the internet connection is slow. Improved app performanceThe Sync API ensures that your app can ignore data that hasn’t changed, and only load data that has been added or updated. As a result, it takes much less time to perform app operations that required the latest data. All data at onceThe Initial Sync API request updates ALL the data in your app at once. It delivers everything that has ever been published to a publishing environment of the corresponding stack. This was previously not possible through the traditional content delivery API since they only help you obtain entries of a specific content type at once, not of all content types in a single request. Fewer development cyclesThanks to Sync API, developers don’t have to spend time building synchronization infrastructure. They can instead work on building features that customers want, and leave the rest to Contentstack. Ready to build powerful sync and offline apps? Here are a few resources that you will get you started building your new Sync API-powered applications: Sync API documentation Sync API reference

Sep 29, 2018

Greater Control Over Your Content with Delivery Tokens and Updated Roles

This release gives you greater control over who can access your data. We have introduced two new features—Permissions for roles and Delivery Tokens—that let you define fine-grained rules for better security and control of your data. Let’s look at what is new in this release. Fine-Grained Permissions for Roles Custom roles are now more customizable; apart from defining permissions on all entries of content types, you can assign entry-level and field-level permissions to roles. Entry-level permissions: Manage permissions on entries of a content type. You can, for example, allow a role to access only specific entries of a content type, such as READ only ‘Blog Post 1’ and ‘Blog Post 2’ entries of the ‘Blog’ content type.  Field-level permissions: Manage permissions on fields of a content type. You can, for example, restrict a role from accessing specific fields of a content type, such as CANNOT EDIT the SEO Title and SEO Description fields of the ‘Blog’ content type.  Asset-level permissions: Manage permission on assets of the stack. For example, EDIT all assets of this stack.    You can add ‘exceptions’ to restrict access to certain fields, entries or assets. For example, NOT EDIT the ‘Title’ field of the ‘Blog’ content type.  More in-depth control over your content’s accessibility ensures that your data is secure and not exposed to other users. It allows you to assign users only the permissions required to perform a given task.   Learn more about these permissions. Delivery Tokens for Content Delivery Until this release, Contentstack provided a single ‘Access Token’ for each stack. This access token gave access to draft content as well as the content of all environments. In this release, we introduced Delivery Tokens, which work a little differently. A delivery token, as the name suggests, is a token used for content delivery, as it provides read-only access to an environment. It is used as a credential, along with stack API key, to fetch published content via APIs. One delivery token gives access to only one environment, not all. You can create separate delivery tokens for separate environments, but it does not let you fetch draft or unpublished content. This separation ensures that only specified people have access to the required environments and that you can manage different delivery channels independently.  Using delivery tokens ensure that your content is secure, since you have greater control over who has access to what. Read more on how to manage your stack’s delivery tokens.

Sep 04, 2018

Contentstack Introduces Custom Widgets: Artificial Intelligence for Your Content

Create AI-powered Content After introducing Custom Fields last month, we now introduce yet another upgrade to Contenstack’s Experience Extensions: Custom Widgets. Custom Widgets lets you analyze entry content and provide highly contextual recommendations – in realtime. For example, you might want SEO tag suggestions as you create a new campaign page, or you would like sentiment analysis on a blog that is being drafted. Whether it’s a content statistics summarizer or language translation – there really is no limit to how you can enhance your content production process. This includes the use of artificial intelligence (A.I.) and applying it to your content. You can easily insert your own custom code or integrate with any third-party app to help you get more out of your content (think Google Translate or sophisticated text AI apps such as MonkeyLearn). Releasing Custom Widgets is part of our efforts to bring you more than just a CMS and delivering a true, comprehensive Digital Content and Experience Hub. Contentstack now provides you with the most comprehensive and powerful platform and combines it with the most intuitive user experience. What You Can Build with Custom Widgets Anything you might theoretically want to do with and to your content, can now practically done faster and easier with Custom Widgets.. Through Contentstack’s unique architecture and acceptance of custom code, you can plug in any kind of content-processing ability, including Artificial Intelligence, to the core CMS. Let’s look at some of the useful widgets that you can create using this type of extension. Text Intelligence Create a Custom Widget, connect it to any text intelligence tool (such as MonkeyLearn), and what you get is incredibly useful: an AI tool customized for your content requirements. Some of the things you can do with this widget are: Summarize content Analyze sentiment Extract keywords Get suggestions for tags and categories Detect profanity and abuse Language Translation Why use a separate tool or website to translate your entry’s content, if you can integrate any language translator into your CMS? Plug in a custom translator or connect to any third-party translator (such as Google Translate). Plagiarism Checker What’s better than a CMS that checks if any content being published was accidentally or deliberately copied from somewhere to prevent plagiarism? Add a plagiarism checker widget to your stack and make sure that you publish 100% original content. Grammar and Spelling Checker Instead of adding browser add-ons that pop up on every input field of your screen, add a widget in Contentstack for grammar and spellchecking only where it actually matters on your content entry page. Image Suggestions Instead of spending time searching for the relevant images for your blog post, again, let an A.I. help you. Add a widget that searches for relevant images on the web, based on the content of your entry or a specific field of your entry. SEO Score and Recommendations Make sure your content is search engine friendly before it is published. Add a widget that provides the predicted SEO score based on your existing content and even offers suggestions to improve the SEO friendliness of your content. How Does Contentstack’s Custom Widget Feature Work? Contentstack offers Experience Extensions that let you extend Contentstack’s default UI and enhance its behavior. There are two types of extensions you can create: Custom Fields and Custom Widgets. Custom Fields let you create any type of custom input fields for your content types, while the newly-released Custom Widgets lets you utilize the power of AI and analytics for your content. In order to use Custom Widgets in your entry, you need to first create the required widgets. Read our guide on creating Custom Widgets. Once created, you will see a new Widgets selector tool on the entry page. As soon as you select the required widget, you will see it on the sidebar. You can then start using the widget to receive recommendations. Irrespective of the type of widget you create, the way it works conceptually remains the same: A widget fetches the content of a selected field It analyzes the content It then provides value-added, relevant information (e.g. recommendations or suggestions) to you Your role is simply to generate the entry, save it, and then use the widget to obtain feedback on and ideas for the content that you created. Explore Custom Widgets To get started with Custom Widgets, read our documentation. You can create a new Custom Widget by using your own code or, alternatively, you can check out our example guide on how to create a Text Intelligence widget (code available on Github). Enjoy!

Aug 03, 2018

Global Search in Contentstack Content Management System

Picture this. You are the chief editor of an online media house that publishes hundreds of articles every day. You just got an email that says that a piece published about the Football World Cup a few days ago had several mistakes and typos. You are like “What? Really? How can that happen?”. You login to your CMS and search for ‘Football World Cup’. And this is what you get: ‘10 things to do if your wife hates football’ ‘The end of our world is near, very near’ ‘Archeologist finds a 1000-year old Egyptian cup made of meteorite rock’ Obviously not the results that you were looking for. After about 200 attempts and 20 minutes, you finally ask a coworker to help you. He points out that you are searching under the ‘Funny’ category, and that you can try searching in ‘News’.  ‘Doesn’t it search the whole CMS?’, you frown. You search for ‘football world cup’ under ‘News,’ and you find the relevant article buried under 150 results. You now wonder how much time your staff must be wasting every day finding relevant content. Search is one of the most important features in any app—especially in a CMS—and yet, it remains one of the most underrated and neglected. At Contentstack, we felt that pain as well. That’s why we created Global Search. Global Search – Find the Most Relevant Content from One Central Location Contentstack recently introduced Global Search, a new search capability that helps you find the most relevant entries or assets from a single location. Contentstack’s Global Search is a full-text search. This means that when you search for something, each word in your search phrase is matched against the values used in the fields of all the entries/assets of your stack. It uses a complex search algorithm to bring the most relevant results in a fraction of a second. When you search a phrase, it displays the list of relevant entries by default. You can then switch to ‘Assets’ to get the relevant assets of your stack. This gives you the power to search anything within your stack from an easy-to-access location in the header. How Does It Work? Searching for entries or assets in your stack is incredibly easy with our new Global Search. Here are the steps to follow to search for content: Click the search bar on the header to expand it. Type your search query and hit Enter. Switch between results for entries and assets. Use Filters to refine your results.

Aug 03, 2018

Easily Integrate with Your Marketing Technologies with Contentstack CMS Custom Fields

This is one of our biggest announcements ever: Contentstack introduces Experience Extensions, a series of features and a new integration architecture to extend the capabilities of Contentstack. Experience Extensions allows the content editor experience to be customized and extended. It also allows Contentstack developers to create richer content experiences for their end-user audiences. This is big news in the CMS world, where traditionally you were limited to the capabilities provided by a single vendor’s CMS product or suite, or you would create a custom CMS stack using a mix of third party and open source plugins. The latter typically resulted in a ‘Frankenstein’ CMS stack that was both difficult to support and scale. Custom Fields for Custom Needs In the first installment to Experience Extensions, we just released a feature called “Custom Fields." As the name implies, a Custom Field allows a developer to create a non-standard field (i.e., one that isn’t provided by Contentstack’s editor by default). It provides a place to capture new information or properties about a content entry and can be either static or dynamic in nature. After a developer creates the Custom Field, content managers can use it as part of their content updates, i.e., creating or editing content entries. You can add just about any kind of field—from simple ones such as a color picker for your ecommerce site or a YouTube video selector for your video streaming site to more complex ones such as video editors or a selection field that fetches values through APIs—in your content types. Imagine the power it gives to you. This flexibility for developers, in turn, makes the CMS more rewarding and valuable for content managers. They are no longer bound to the predefined fields or UI that Contentstack offers. Adding a new custom field is as simple as forwarding your request to the developer of your stack (and writing a few lines of code on the developer’s end). What Can You Build with Custom Fields? A lot. Since it accepts custom code, you can create just about any kind of field. Let’s look at some common types of custom fields that you can create and use. Star Rating field – Provide ratings by selecting stars This field lets a user provide a rating (e.g., three out of five) through selecting visual stars. When stars are selected, it saves a corresponding integer in the CMS backend. Video selector – Browse and select videos This field displays the visual interface of a video platform – such as Brightcove or Ooyala – to the user. The user can browse videos and select the required one from the available videos directly from within Contentstack’s editor. Conditional fields — Auto populate list of states based on a selected country When an option is selected in the ‘Country’ field (e.g., US), the other field ‘Languages’ automatically populates the languages of that country (e.g., English, Spanish, French, Chinese). The user can then choose from the options provided. Color picker – Pick a color from a list of options This displays a set of colors to choose from. When a color is chosen, the corresponding color code or color ID is saved in the backend. This is ideal for e-commerce sites where the user can pick a color for the selected shirt or t-shirt. Photo capturer – Capture images through the device’s camera This field lets the user capture photos through the device’s camera. The photos may be saved as assets in the backend. It is ideal for food review forms, customer feedback forms, etc. Code editor – Input and edit any code in the code editor This field provides a code-editor interface to users for entering code. It helps the user format the code and enter relevant syntaxes, methods, etc. Key-value field – Enter a key and a corresponding value in the field The user can provide a key and associate a value with it. Product Catalog – Search external product databases This displays all the products of your e-commerce website to the Contentstack user within the field. The user can simply pick any product as the value of that field. Add Marketo / Salesforce cookie – Track user interaction across web/Marketo/Salesforce This field lets you track the details/information of the users of your website, Marketo account or Salesforce account by simply dropping in a .JS code snippet. Marketo Tracking – Apply lead scoring Pull the Marketo code snippet and add it to the contentstack global content type. Integrate field storage system – Fetch files saved in your DAM This field fetches and displays the files that you have saved in your DAM platform, e.g. Egnyte. The user can then browse these files and select the required one from the available options. How do Custom Fields and Experience Extensions Work in Contentstack? Working with Custom Fields as part of Contenstack’s Experience Extensions is easy. Contentstack provides an Experience Extensions SDK that has all the functions and methods that you will need. This SDK is the link between your custom Experience Extension and Contentstack. Learn more about the Experience Extensions SDK. Your custom code, which resides inside an ‘iframe,’ communicates with Contentstack through the SDK. Contentstack lets you include its design stylesheet so that your custom field’s design blends perfectly with our UI. Learn how to configure your custom code. You can either use one of the pre-built templates provided by Contentstack or create a new one from scratch. Let’s look at an example where we create a color picker field. In Contentstack, under ‘Extensions,’ create a new Extension, and provide the HTML code as shown below. <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <script src="https://www.contentstack.com/sdks/contentstack-ui-extensions/dist/latest/ui-extensions-sdk.js"></script> <link href="https://www.contentstack.com/sdks/contentstack-ui-extensions/dist/latest/ui-extension-sdk.min.css" rel="stylesheet" type="text/css" media="all"> </head> <body> <input type="color" id="html5colorpicker"> </body> </html> You can see that we have included Contentstack’s stylesheet in the code so that your customization doesn’t look out of place. We have also included the Experience Extensions SDK in the next line. Next, you need to provide the custom code of your extension. Here’s the sample code for the ‘Color Picker’ custom field. <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <script src="https://www.contentstack.com/sdks/contentstack-ui-extensions/dist/latest/ui-extensions-sdk.js"></script> <link href="https://www.contentstack.com/sdks/contentstack-ui-extensions/dist/latest/ui-extension-sdk.min.css" rel="stylesheet" type="text/css" media="all"> </head> <body> <input type="color" id="html5colorpicker" onchange="colorChange()"> <script> // initialise Field Extension window.extensionField = {}; // find color input element var colorPickerElement = document.getElementById("html5colorpicker"); ContentstackUIExtension.init().then(function(extension) { // make extension object globally available extensionField = extension; // Get current color field value from Contentstack and update the color picker input element colorPickerElement.value = extensionField.getData(); }) // On color change event, pass new value to Contentstack function colorChange(){ extensionField.field.setData(colorPickerElement.value); } </script> </body> </html> The ‘set.data’ method is the most crucial element of the code given above. It fetches and saves the given input value in Contentstack. Once you have configured the code, go to the Content Type builder, and look for the ‘Extension’ field on the left-hand side panel. Drag it onto your content type. In the dropdown list, you will now see the Custom Field that you just added. Select it and save the content type. Now, when content managers create an entry for this content type, they will see the Custom Field within the entry page. Do More with Experience Extensions and Custom Fields With Experience Extensions, possibilities are endless. Read our documentation to get started with this feature. You can create a new Custom Field from scratch—see our step-by-step tutorial—or use our pre-built templates to get started instantly. And watch this space for even more enhancements to follow soon!

May 07, 2018

New Features for a Better Content Editing Experience

Our latest release is all about improving your content editing experience. We have added new features that make it easier for you to edit entries and assets. Let’s look at the highlights of this week’s release. Referencing gets a makeover We have added smart new tools to our existing reference field. These tools are helpful especially when you want to make changes on-the-go without wasting much time. The first change is the addition of the new ‘quick edit’ link for your references. Using this, you can navigate directly to the referenced entry, where you can make changes. This saves time that you would otherwise spend on finding the referenced entry. Next is the ‘Create new entry’ link within the reference field. This lets you create a new entry immediately, and link it as a reference, thereby eliminating the need to navigate to different content types for adding a new reference entry. We have applied the same set of changes to asset referencing as well so that you get a consistent experience throughout Contentstack. Read more. Compare versions and languages of an entry Until now, it was possible to compare any two versions of a given language of an entry. Now, you can do comparisons across any languages as well. So, for instance, you can now compare ‘Version 2’ of ‘English - United States’ with ‘Version 4’ of ‘German - Germany’ of the same entry. View Entry localization details in a click If you have created an entry in multiple languages, you can get the current localization status of all languages in the new ‘Localization Details’ section added within the ‘Entry Information’ tab. This gives you a quick overview of the entry’s localization status in a glance. Get reference info of an entry We have added a new ‘Referenced in’ section under the ‘Entry information’ section of an entry. It displays the list of all the entries within which the current entry is being used as a reference. This ensures that you always know which entries will be impacted if you edit or delete the given entry.