Custom topics in Azure Event Grid

An Event Grid topic provides an endpoint where the source sends events. The publisher creates an Event Grid topic, and decides whether an event source needs one topic or more than one topic. A topic is used for a collection of related events. To respond to certain types of events, subscribers decide which topics to subscribe to.

Custom topics are application and third-party topics. When you create or are given access to a custom topic, you see that custom topic in your subscription. Custom topics support push delivery.

When designing your application, you have to decide how many topics to create. For relatively large solutions, create a custom topic for each category of related events. For example, consider an application that manages user accounts and another application about customer orders. It's unlikely that all event subscribers want events from both applications. To segregate concerns, create two topics: one for each application. Let event handlers subscribe to the topic according to their requirements. For small solutions, you might prefer to send all events to a single topic. Event subscribers can filter for the event types they want.

Event schema

Custom topics supports two types of event schemas: Cloud events and Event Grid schema.

Cloud event schema

In addition to its default event schema, Azure Event Grid natively supports events in the JSON implementation of CloudEvents v1.0 and HTTP protocol binding. CloudEvents is an open specification for describing event data.

CloudEvents simplifies interoperability by providing a common event schema for publishing and consuming events. This schema allows for uniform tooling, standard ways of routing & handling events, and a common way to deserialize your events. With a common schema, you can more easily integrate work across platforms.

Note

For more information, see Cloud event schema.

Event Grid event schema

When you use Event Grid event schema, you can specify your application-specific properties in the data object.

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Note

For more information, see Event Grid event schema.

The following sections provide links to tutorials to create custom topics using Azure portal, CLI, PowerShell, and Azure Resource Manager (ARM) templates.

Azure portal tutorials

Title Description
Quickstart: create and route custom events with the Azure portal Shows how to use the portal to send custom events.
Quickstart: route custom events to Azure Queue storage Describes how to send custom events to a Queue storage.
How to: post to custom topic Shows how to post an event to a custom topic.

Azure CLI tutorials

Title Description
Quickstart: create and route custom events with Azure CLI Shows how to use Azure CLI to send custom events.
Azure CLI: create Event Grid custom topic Sample script that creates a custom topic. The script retrieves the endpoint and a key.
Azure CLI: subscribe to events for a custom topic Sample script that creates a subscription for a custom topic. It sends events to a WebHook.

Azure PowerShell tutorials

Title Description
Quickstart: create and route custom events with Azure PowerShell Shows how to use Azure PowerShell to send custom events.
PowerShell: create Event Grid custom topic Sample script that creates a custom topic. The script retrieves the endpoint and a key.
PowerShell: subscribe to events for a custom topic Sample script that creates a subscription for a custom topic. It sends events to a WebHook.

ARM template tutorials

Title Description
Resource Manager template: custom topic and WebHook endpoint A Resource Manager template that creates a custom topic and subscription for that custom topic. It sends events to a WebHook.
Resource Manager template: custom topic and Event Hubs endpoint A Resource Manager template that creates a subscription for a custom topic. It sends events to an Azure Event Hubs.

Next steps

See the following articles: