When designing good event structures it's important to create a common understanding of meaning between the data designer, the data consumer and the instrumenting developers. This is for example to avoid duplicates of events and properties and an event being sent at different times between platforms.
A few things to consider:
When defining events and properties, Avo recommends sticking to a naming convention and using the same words in all definitions. Consistency is the key to avoid duplicates and be able to easily find events and properties in your analytics tool. When signing up to Avo, example events and properties are created for you according to the industry chosen - with our recommended naming convention.
The Avo Naming Assistant helps you to avoid duplicates and be consistent in your casing and when selecting or changing event and property names. Note that some analytics tools require specific casing for events or properties.
A naming convention for events is comprised of three parts; 1/ order of objects and actions, 2/ tense and 3/ casing. Avo recommends the following convention:
All other naming conventions are supported and no matter which one you choose, we recommend that you try to stick to it.
Examples of events in the recommended naming convention:
A naming convention for properties is not as predictable as for events. As with events, casing and using the same words to describe things is important. We also recommend to be explicit about the property names to avoid misunderstanding to which value they describe.
For example when creating a property that describes the number of passengers many want to simply name the property "Passengers". But without context it’s hard to understand what the property means; is it number of passengers, is it a list of all the passengers or is at a boolean indicating if passengers were selected or not? Therefore we recommend explicitly naming the property either "Number of Passengers" or "Passenger Count" - or have a convention to shorten all number of properties to something like "Num Passengers".
Another example is something that has perhaps a name, ID and a type. It can be tempting to create a property on the "Purchase Completed" event with the simple name "Product", as you want to know what product the user was purchasing. In that case it's hard to know whether the property is describing the product name, it's ID, the type or something else. There for we recommend naming properties explicitly what they refer to;
Often user teams like to track event and user properties that have the same name. We generally recommend avoiding that because of two reasons:
Events an properties with a descriptive name get you far to create a common understanding on what they mean. However, often the name itself does not contain all the information required to know exactly when the event is sent or what the value of the property is. Then descriptions are useful, and we recommend adding descriptions to all new events and properties to prevent misunderstanding.
For events we recommend adding a description to an event with all the information required for a developers to trigger an event by the same user action for all code paths, platforms and products.
For example for the "Purchase completed" a good description would be: Event sent when the client receives a successful response when a user has completed a purchase.
This is to avoid a situation where for example an Android developer sends the "Purchase Completed" event when a user taps a purchase button and an iOS developer sending the same event when the client gets a response from the server about the purchase being successful. In this case iOS would include all purchase attempts, successful or not, while Android only includes successful ones.
For properties we recommend adding a description to supplement the event name - that describes exactly which value is in the property so that the developers know what value to send and the data consumer knows for sure what it means.
For example for a "Search Result Position" property on a "Search Result Clicked" event the property name is pretty descriptive on what it means, but still further information is required to know exactly which value it's referring to. A good description in this case would be: Which search result the user selected. 1 for the top search result, 2 for the one below and so on.Property constraints are very useful to ensure that the correct spelling or allowed numerical values are sent with the event.
We recommend using property constraints whenever possible, specifically in cases when: