Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket

Push and pull OCC strategies

When Omnichannel Content (OCC) is produced and organized in the Optimizely Content Marketing Platform (CMP) library, you decide whether to use push or pull distribution of the content.

Push and pull strategies can be implemented within a single instance and even for the same pieces of content, so they do not have to be mutually exclusive. For example, a piece of content that will be part of both a marketing automation software and a next.js-powered site might employ push for the marketing automation software and pull for next.js.

Push is most suitable when there is a software or platform responsible for final delivery. For example, marketing automation software is responsible for delivering email, a CMS for delivering a web page, and so on.

Even when there is a delivery platform, you might deploy pull in addition to push mechanisms such as when you trigger a static site generation build. You might use the webhooks, but the generation actually uses GraphQL. Depending on how we want the delivery to work, OCC offers a flexible solution needed for a given integration requirement.

Push distribution

Push distribution refers to content being pushed to subscribers with webhooks. The primary implication is that CMP or other Optimizely software is not directly involved in the final delivery of the content. For example, CMP's WordPress integration leverages OCC to push the content into WordPress, where it is stored and delivered to be rendered. You can push content in the following ways.

  • Publish events—This option enables explicit recording of content being pushed to an external system and allows for scheduling publishing at a future time. It is recommended when...
    • Content is to be distributed to more than one destination
    • Some content is not meant for all downstream channels
    • You need explicit control over the content's distribution
    • There is a task for every content intended for distribution
  • Library events – Pushed as soon as contents reach the library (even when a piece of content is directly created in the library), which is useful when all contents end up in some distribution.

Pull distribution

OCC pull distribution refers to the content being fetched when it is needed. It serves content directly to the consumer through a productized integration with Optimizely Graph, a SaaS GraphQL product of Optimizely. That is OCC is delivered through GraphQL to end consumers.

When the integration is enabled, the flow of schema and contents are seamlessly synchronized from CMP to Optimizely Graph. (Contact your Customer Support Manager (CSM) or Account Executive (AE) to enable the integration.)

  • Only content with Organization View access is synched with Optimizely Graph.
  • In Optimizely Graph, each version of an individual content type will have its own schema. However, to encompass all versions of a content type, an abstract type is used, denoted by starting with I to signify interface. This allows for querying against a type, particularly when multiple versions exist.
  • In addition to a piece of content's field, CMP's metadata field and content's location in CMP are also available to query with the following fields:
    • LibraryPath – a Unix file-system-like path to the content's directory hierarchy
    • ParentFolderGuid – The folder the content belongs to. You can fetch folders through the API.

      📘

      Note

      The folders API is not meant to be used directly from end systems.

    • FolderGuids – Contains the GUIDs of the folders in the content hierarchy.
    • Labels – Contains each label value as a key-value pair.
    • Status – Denotes the status of content in Optimizely Graph; currently supported values are Draft (a piece of content still being authored) and Published.

Pull distribution is typically suited when there is no existing content delivery mechanism already in place; its also useful for creating content mesh and being used for content syndication and search.