Messages in Dataverse are business events that trigger under certain circumstances. The platform provides with lots of out of the box messages, but you can also extend them with your own custom ones.
An example of an out of the box message is the Create message, that triggers when we create a record. Another example of out of the box message is the AssignRequest, that triggers when we assign a record to somebody else.
When we have some requirements that can’t be fulfilled using out of the box messages, we can create our own custom ones. This can be done via either Custom Actions or Custom Apis.
When we add a new custom message we also expose and endpoint for consumption by other consumers.
When we add custom messages we can also generate early bound classes for them.
Custom Actions are custom messages created using the Workflow Designer experience. These existed prior to Custom Apis. This allowed, for example, to invoke a business event from a javascript web resource without having to create a table or entity and the associated plugin.
Custom Apis provide a more modern way of registering custom events as we can use custom code, via plugins, that will implement the business logic, therefore without having to use the Workflow Designer.
These plugins can also be unit tested and deployed more easily than custom actions, which makes the whole dev experience a bit more easier from an ALM point of view.
You can find more info about Custom Actions and Custom Apis on the official Microsoft learn site.
When developing with custom actions or custom apis, you can call them using late bound or early bound messages. You can generate strongly-typed messages for these by using the /generateActions parameter.
You’ll find more info on the Microsoft learn site, under the Using Custom Actions section.