with their customers wherever they are: modern websites, mobile apps, on-site, in-home, and beyond. We are in the middle of a massive market shift 10 Now, all companies are digital product companies
Prevents reusability and creates content silos Requires heavy customization and specific tools Monolithic suites Legacy workflows Templating Editor Database Does not fit modern software delivery pipelines
forever Cloud-based, modular architectures have become the standard for building digital products 12 Customization Interoperability Cloud-based stacks MICROSERVICES
Structured content Reuse and repurpose content, independent of channel or language Composable stack, connected to other platforms, at cloud scale Integrate with digital delivery workflows for launch & optimization Decoupled architecture Agile workflows
and experiment with new digital products more rapidly 5x faster to launch new customer touch points Modern Stack Websites 3x faster to launch new event and campaign microsites Personalized Experiences 14% increase in conversion rate with personalization integrations Agile eCommerce 66% decrease in unit cost of new digital products across business teams Digital Delivery Platforms
and repetitive content updates to agile product releases for 12M customers Before Siloed content Slow to market Technical debt 7 content sources across 5 business units, powering 30+ digital products/properties After Fast time-to-value: reference architecture Low risk: more experiments & iteration Improved agility: 11 deploys per day One content infrastructure to rule them all, across business units and digital products 4x faster
mobile or web, online or onsite, all around the world Mobile Apps 2x quicker app load times Cross-Channel Experiences 4x faster to launch new onsite/offline and online experiences 98% reduction in time to launch new pages across multiple geographies Global Localization
delete content and content model Content Preview API Read-only Retrieve draft and updated content in addition to published content Content Delivery API Read-only Retrieve published content to display in an app or website Images API Read-only Retrieve and apply transformations to images stored in Contentful Contentful has 4 Core REST APIs
Web App Content Management API SDK SDK SDK Apps & Websites Conversational & Wearables Apps & AR/VR Powerful CLI and tooling to integrate into existing developer workflows or to help define brand new workflows The APIs, webhooks and SDK’s developers need to power content in any digital product. Content Preview API Customizable web app for marketers and publishers to collaborate and create content. Developer Images API
never have to pause content creation to wait for developers to make website changes Editors never have to wait for developers to deploy new or changed content Developers can run a full “code-like” change management process with version control, QA and CI/CD using the tools they are familiar with. Developers won’t get bogged down with ad hoc requests to update content
a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets. Implications for content modeling 27
1. Fast implementation. Fast performance. - Cloud-native SaaS with CDN - Use the development tools you know - Fast, scalable content migration and transformation using code 2. Build any user experience for any device (anywhere). ‐ A large collection of SDKs ‐ Flexible content models ‐ Designed for easy localization 3. Take advantage of the “modern stack” architecture. - Combine best-of-breed, single purpose apps (micro-services) - Built-in integrations with popular platforms - Connect platforms easily using webhooks and UI extensions
on Server Static Site Generator Dynamic on Device A client-side app using the Contentful SDKs requests content from the Contentful APIs and renders the content on the device. A server-side app receives a request from an end user, retrieves content from Contentful (and possibly other data sources), renders the content, and sends it back in response. A static site generator fetches content from Contentful at timed intervals or on content change webhook then builds the rendered HTML pages and stores them on a static web host.
– no stale data • Easier SEO • Secure secrets (API tokens not exposed to end-users) Cons • Server-related scalability ($$$) • Higher page latency • Requires external caching or CDN • Potential single point of failure Dynamic on Server
is fast and simple to serve • Secure secrets (API tokens not exposed to end-users) Cons • No immediate preview/potential for stale data • Web page-centric • Generation time can be problematic for frequent content changes • Requires external hosting, caching, and CDN Static Site Generator (SSG)
on Device JavaScript framework takes over user interaction and hydrates page Page initially built server-side on Node.js with JavaScript framework that supports isomorphic execution (e.g. React)
delete content and content model Content Preview API Read-only Retrieve draft and updated content in addition to published content Content Delivery API Read-only Retrieve published content to display in an app or website Images API Read-only Retrieve and apply transformations to images stored in Contentful Contentful Core APIs
Web App Content Management API SDK SDK SDK Apps & Websites Conversational & Wearables Apps & AR/VR Powerful CLI and tooling to integrate into existing developer workflows or to help define brand new workflows The APIs, webhooks and SDK’s developers need to power content in any digital product. Content Preview API Customizable web app for marketers and publishers to collaborate and create content. Developer Images API
You can modify content programmatically and refactor the content model • Enables CI/CD – Allows you to easily move content between spaces and environments using scripts • No CDN – Calls to this API are not cached, so you get and edit the most up-to-date content Content Management API
changes made to content, so when updating content, you need to send the entire body of an entry. If you update content with a subset of properties, you will lose all existing properties not included in that update. You should always update resources in the following order: - Fetch current resource. - Make changes to the current resource. - Update the resource by passing the changed resource along with current version number. Content Management API
access to both published and unpublished content • Editorial Preview – powers a preview deploy/version of your frontend to allow content editors to see their content exactly as it will look when published • Read Only – You can’t accidently change content • No CDN – Calls to this API are not cached so preview will always have the most up-to-date content Content Preview API
API (CDA) for published content, the Preview API is for previewing unpublished content as though it were published. It maintains the same endpoints and parameters as the CDA, but delivers the latest draft, updated, and published entries and assets. This is a read-only API API Base URL https://preview.contentful.com Learn more about the Preview API
• Read Only – You can’t accidently change content • Published Only – You can’t accidentally reveal unpublished content • CDN – Calls to this API take advantage of the Contentful CDN Content Delivery API
highly scalable, read-only API for delivering content to apps, websites, and other channels. This API is available via a globally distributed content delivery network (CDN) API Base URL https://cdn.contentful.com Content Delivery API
ea69ebac5e282b9e44d28fb340f778a4f5e788625a61abe - Parameters - space_id yadj1kx9rmg0 - environment_id staging - entry_id 5KsDBWseXY6QegucYAoacS - access_token fdb4e7a3102747a02ea69ebac5e282b9e44 d28fb340f778a4f5e788625a61abe Content Delivery API More details Get a single entry
Contentful and resize or transform it at delivery time to match the size & quality needed for the requesting device • Read Only – You can’t accidently change content • CDN – Calls to this API take advantage of the Contentful CDN Images API
and manipulation of image files referenced from assets. In other words, the Images API allows you to resize and crop images, change their background color and convert them to different formats Upload high-quality assets, deliver exactly what your app needs and still get all the benefits of our caching CDN API Base URL https://images.ctfassets.net
and manipulation language for APIs, and a runtime for fulfilling queries with existing data • It allows clients to define the structure of the data required, and exactly the same structure of the data is returned from the server, therefore preventing excessively large amounts of data from being returned • GraphQL schemas are strongly typed - reliably know what type of data is where
Contentful. • Each space has a GraphQL schema based on its content model. The schema is generated at request time so it is always current. • You can use this API to consume both published and unpublished content. • There is query complexity limit currently set to allow retrieval of 11,000 entities in one request • This API supports schema stitching which allows two or more GraphQL APIs to be combined into a single schema that can be presented to a client application GraphQL Content API
to a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets. Implications for content modeling 75
Type (reference) Shoe Size Sole type Heel type Pants Waist Length Type (formal, casual) Shirt Sleeve length Collar Fabric weight You can add or change fields that apply to every product without duplicating the change for every product type
Field Level Localization Entry Level Localization using Localization Objects Title Slug Text (EN) Text (FR) ... Title Slug Ref 1 Ref 2 ... Title Text (EN) 87
• Conduct an audit of existing content • Create prototypes of future content • Assemble screen shots into a slide deck Create a draft model based on visible fields • Create a list of visible fields from instances of each content type • Reconcile similar fields to create a master list • Group fields into content types of appropriate size & define relationships Revise model for functionality & best practices • Add invisible “meta” fields (for queries, workflow, webhooks, etc.) • Optimize for content creators • Optimize for developers • Implement naming conventions QA: Validate with actual content • Try to “break” the content model by using it to build diverse instances or real world content Test with Content Creators • Watch authors use the content model (usability test) • Create documentation, help and job aids Test with Developers • Have developers QA the model against front-end, migration scripts, etc. Test with Designers • Have designers test the content model by creating a variety of designs Assemble key stakeholders to define strategy • Clarify business objectives • Agree on required functionality • Make strategic content architecture decisions STEP 1 STEP 2 STEP 3 STEP 4 STEP 5 STEP 6 STEP 7 STEP 8 91
everywhere 2. Customizable workflow—build the approval process you need 3. Independence—add or change content instantly without the assistance of technical teams 4. Version control—see earlier versions of content and roll back instantly 5. Flexible localization—easily manage country-specific or audience-specific text and images So, what’s in it for Content Authors? Demo 93
them into new content instantly (no fussing with multiple browser tabs, copy and paste, or human errors). Custom UI for Spotify Artists content creators
to a company. Users A User can have access to all or limited access to certain spaces based on roles & permissions. Spaces A child entity of an organization. A container for content, assets and UI extensions. Environments Are entities belonging to a space, they contain an isolated copy of content and assets.
or different use cases unless they need to share content • For large scale implementations, consider putting global shared content, team shared content and project-specific content in separate spaces • Roles are specific to a space—use separate spaces if the same users need different permissions Tips for getting the most out of spaces
microservice 1 all projects at org Project Spaces Content consists of Assemblies, Topics, and Media Best pattern for use cases where all of the following are true: • Content types and/or content entries are reusable across projects. • Projects all have the same localization needs. • Roles & Permissions provide sufficient access controls across all projects. • Content is intended to be used for multi-channel delivery. • Multiple teams or business units want to collaborate together across projects.
specific content Space 2 Used for microservice 2 specific content Space N Used for microservice N specific content ... Project Spaces Content consists of Assemblies, Topics, and Media Best pattern for use cases where one or more of the following is true: • Content types are not reusable across projects. • Projects have different localization needs. • Roles & permissions cannot be effectively used to create granular access controls. • Business units have a regulatory or legal requirement to keep their project and content separate.
content Space 2 Used for microservice 2 specific content Space N Used for microservice N specific content ... Shared Space Used for highly reusable content across org Global Shared Spaces Project Spaces Shared Space 1 Used for reusable content for line of business 1 BU/Team Shared Spaces Shared Space K Used for reusable content for line of business K ... Content consists of Assemblies, Topics, and Media Requires UI Extension for cross space referencing
• Will governance rules (i.e. user roles and access permissions) be the same or different among the teams and projects? • Will content types be the same and/or shared across projects? • Will projects have the same localization requirements? Same or different set of locales? • Is there a legal or regulatory requirement for projects and their content to be isolated? Things to think about
Microservice Spaces could be defined based on: – Business Units – Business Functions – Projects – Content/Dev Teams • Goals: – Reduce dependencies and time-to-market – Improve release/publish lifecycle Space Planning Strategy
compiles as expected. 2. Test Run automated tests; unit tests; integration tests. 3. Migrate Run your migration scripts to update your content model for the space/environment you will next deploy to. 4. Deploy Deploy the application to a number of environments. Often to a staging or pre-production environment manually test before deploying to production. 5. Test Run automated end-to-end tests against the environments you deployed your application to in the previous step. CI/CD Best Practice
promotion or rollback is achieved by retargeting the alias to another environment – which happens instantly • Production content is served from unscoped/master API routes through the master alias • Currently only master can be an environment alias Environment Aliases In a nutshell
longer a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Production content is now served from release-2 environment Release 2 release-1 release-2 Environment aliases Change master alias to target release-2 environment master Release 3 release-3 Optional: Delete release-1 environment Production content is now served from release-3 environment Change master alias to target release-3 environment
a stand-alone environment but acts as an alias targeting another environment Production content is served from release-1 environment Execute migration scripts Change master alias to target release-2 environment Production content is now served from release-2 environment Promote Problem discovered! Rollback is required Rollback Rollback master to target release-1 environment release-1 release-2 Use case: Promote an environment to master master
environment but acts as an alias targeting another environment Content is served from prod environment Run migration scripts Restore by changing master alias to target prod-backup environment Backup Problem discovered! Rollback is required Restore prod prod-backup Use case: Backup and restore master Optional: Delete prod environment prod Optional: Recreate prod from prod-backup Change master alias to target prod environment
where you can see JSON output 2. Create the environments you need for CI/CD. Optionally use scripts to clone the master environment. 3. Create a script to programmatically build the full content model 4. Create migration scripts to move content into and out of the content model 5. After testing, propagate your changes into the Prod environment 5 Steps
JSON to speed your future script writing. Experiment with different data models. Try to add complex relationships in your model, how is that represented in JSON? 1. Create content types in the web app
is a full isolated clone of the master environment. Includes a full copy of all the content types, entries, assets, locales and webhooks. You can setup as many environments as your workflow requires. 2. Set up your initial environments
File: content-model-v1.js Write a script to execute your content model. File: create-model.js Invoke with Contentful CLI against one of the test environment. contentful space migration --space-id abcedef --environment-id feature-wow create-model.js 3. Create a script to build the content model
an existing content model, i.e. migrate your content model. File: content-model-animal-v2.js Execute with same script, except use new file: contentful space migration --space-id abcedef --environment-id feature-wow create-model.js Note when you execute a content migration, both the content type and all content entries (records) based on that content type are updated!
tested and verified your changes in sandbox environment, apply the content model migration to production by simply executing the same script but specifying master as target environment. contentful space migration --space-id abcedef --environment-id master create-model.js
do not prevent the currently released version of the software from running New fields and content types By leaving the existing content in place, while augmenting the content types and content such the new version of the software can also run. The content model can now support both the current version and the new version of your software in parallel. Add Transform
tailored to the requirements and objectives of your organization. A space is a content repository serving a single project / team. Guaranteed levels of service uptime and customer support responses for running business-critical websites, apps, and digital properties. The number of users included in the subscription. API calls and asset bandwidth amount included in the subscription and the fees for consuming additional units. Spaces Platform SLA Users Utility limits Platform Spc 1 Spc 2 Spc 3 Spc 4 Spc 5 Spc 6 SLA + +
Severity 1 (Critical) 8 biz hrs 4 hrs 1 hr 1 hr Severity 2 (High) 16 biz hrs 8 hrs 2 hrs 2 hrs Severity 3 (Standard) 24 biz hrs 8 biz hrs 4 biz hrs 4 biz hrs Service availability Content Delivery API 99.5% 99.7% 99.9% 99.99% Content Management API 99.5% 99.5% 99.5% 99.5% Asset CDN 99.5% 99.7% 99.9% 99.99% **When the customer is on the High Availability platform
terabytes/ month Enterprise Space 7,000,000/ month 2 terabytes/ month Overages API Calls Bandwidth Standard Space $5/Million api calls $65/ 1 terabyte Enterprise Space $5/Million api calls $65/ 1 terabyte
Digital Products Content Platform Digital Organization Speed or cost-driven Value-driven High performance, high velocity, multi-channel delivery Modern stack site or app Campaign optimization Cross-channel customer journey Innovation hub Non-web interface Global marketing & localization SEO landing pages at scale Digital workforce applications Knowledge portals The path to value What are you building now? What do you aspire to? Agile eCommerce
Mobile phone marketing Contentful facilitates highly reusable architectures Example: a 3-tier content architecture covering the org, teams, and individual applications ← Line-of-business domains GLOBAL Tier 1 spaces for teams focused on highly reusable content APPLICATION Tier 3 spaces for teams focused on app-specific content BUSINESS UNIT Tier 2 spaces for teams focused on line-of-business content ← Org-wide components ← Specific content services Mobile accessories Mobile deals Employee phone program Mobile overview
content repositories. Use your favorite tools and preferred technology to build your digital architecture. Select the components you need to get started fast, and grow to enterprise scale. Interoperability Composability Structured Content Empower your digital teams to work together to ship products faster. Staying true to our beliefs
create and deliver content across channels and campaigns using agile iterative processes. • Content planning • Content creation & curation • Content delivery pipelines • Growth and execution Content operations at scale Modern experience stack A modern experience management stack enabling teams to build use-case specific solutions through rapid iteration and integration of best-of-breed tools and services. • Open, modular stacks • Seamless orchestration • Cloud performance • Security & compliance
a set of content entries and assets into releases which can be operated on directly • Content to exist in different versions so it can be published at different times Scheduling, versions and releases
• Full support for space environments • Launching with apps for JAMStack, Martech, DAM and eCommerce • Public developer program follows after Apps: Beta Experimentation Live Preview Images Images & Videos Search Video eCommerce CI / CD
is no longer a stand-alone environment but acts as an alias pointing to another environment Production content is served from release-1 environment Execute migration scripts Promote release-2 environment to become master Promotion release-1 master release-2 Production content is now served from release-2 environment
Documentation • Developer Portal • Join our Meetups & Webinars (Gatsby,..) Keep track of new things • Changelog • What’s New Enjoy building with Contentful!
creation flows for environments • Space backups: offer options to backup spaces to enable disaster recovery for customers • Developer tooling: support of more advanced developer workflows Developer workflows
roles/permissions via SSO/IDP • Usage reporting enhancements: add support for GraphQL usage reporting and asset bandwidth historical view Org management