Rajdip Khavad Logo
Rajdip Khavad
Back to all articles
Engineering

GA4 Custom Events vs Recommended Events: What Should You Use?

Rajdip Khavad•2026-09-01•8 min read

# GA4 Custom Events vs Recommended Events: What Should You Use?

When implementing GA4 in an Angular application, one of the first analytics design decisions is whether an interaction should use a recommended event or a custom event.

For a hotel booking platform, this decision appears throughout the booking journey:

📐 Architecture Diagram
Search
 ↓
Hotel Results
 ↓
Hotel View
 ↓
Rooms Loaded
 ↓
Selection
 ↓
Checkout
 ↓
Payment
 ↓
Purchase

Some stages map naturally to established GA4 event concepts. Others represent application-specific behaviour and may need custom events.

The important point is to choose events deliberately rather than creating a custom event for every application action.

GA4 Recommended Events vs Custom Events in Hotel Booking
GA4 Recommended Events vs Custom Events in Hotel Booking

1. Recommended Events and Custom Events

A useful conceptual distinction is:

📐 Architecture Diagram
GA4 event model
      |
      +----> Recommended event
      |
      +----> Custom event

Recommended events provide established event semantics.

Custom events are useful when the business action does not fit an existing event model or when the application needs a domain-specific signal.

2. Start With the Business Action

Do not begin with:

Note

"What event name should I send?"

Begin with:

Note

"What customer action am I trying to measure?"

For example:

📐 Architecture Diagram
Customer searches for Sydney
        ↓
Search action

or:

📐 Architecture Diagram
Room availability successfully retrieved
        ↓
Rooms loaded

The event name should follow the business meaning.

3. Use Established Events Where They Fit

A hotel booking funnel can contain events such as:

Application actionGA4 event
Searchsearch
Hotel result listview_item_list
Hotel viewview_item
Selectionselect_item
Checkoutbegin_checkout
Paymentpayment_started
Completed bookingpurchase

The application should use established semantics where they accurately represent the action.

Hotel Booking Funnel: Business Actions to GA4 Event Mapping
Hotel Booking Funnel: Business Actions to GA4 Event Mapping

4. When a Custom Event Makes Sense

Some application actions do not necessarily map to a standard ecommerce event.

For example:

text
Rooms successfully loaded

can be represented by:

text
rooms_loaded

This event is specific to the application's hotel availability workflow.

The same applies to other domain-specific signals when they provide meaningful analytical value.

5. Avoid Custom Events for Everything

A poor analytics model might produce:

text
hotel_card_clicked
hotel_component_loaded
room_component_loaded
button_clicked
checkout_component_loaded
payment_component_opened

These events describe implementation details rather than business behaviour.

Prefer:

text
view_item
select_item
begin_checkout
payment_started
purchase

where those semantics fit.

6. Event Names Should Be Stable

Once an event becomes part of the analytics contract, changing its name casually can fragment historical reporting.

For example, avoid moving between:

text
hotel_view
hotel_viewed
view_hotel
ViewedHotel

Choose a stable convention.

7. Parameters Matter Too

The event name alone is not enough.

A hotel event can contain relevant item information:

ts
{
  event: 'view_item',
  ecommerce: {
    items: [
      {
        item_id: hotelId,
        item_name: hotelName
      }
    ]
  }
}

The event should provide enough context to answer the intended business question.

8. Keep Provider-Specific Mapping in the Analytics Layer

Angular components should not need to decide how every event is represented.

Prefer:

ts
this.analyticsService.trackHotelView(data);

The analytics service can determine the appropriate GA4 event and payload.

Analytics Layer Service Abstraction Architecture
Analytics Layer Service Abstraction Architecture

9. Hotel Booking Example

Consider the sequence:

📐 Architecture Diagram
Hotel View
     ↓
Rooms Loaded
     ↓
Room Selected
     ↓
Checkout

view_item and begin_checkout have clear ecommerce meanings.

rooms_loaded may be a custom application event because it represents a domain-specific technical/business milestone.

This combination is valid when each event has a clear purpose.

10. Testing Event Semantics

For each event ask:

  • What business action does this represent?
  • Is there an established event concept that fits?
  • Does the event name remain stable?
  • Are the parameters useful?
  • Can another developer understand the event without reading the component code?
  • 11. Common Mistakes

  • Creating custom events for every click.
  • Using implementation-specific event names.
  • Renaming events frequently.
  • Sending incomplete parameters.
  • Letting components own provider-specific event mapping.
  • 12. Conclusion

    The goal of GA4 event design is not to maximize the number of events.

    Use established event semantics when they fit the business action and introduce custom events only when the application has a meaningful behaviour that needs its own signal.

    For a hotel booking platform, this creates an event model that is easier to understand, analyze and maintain.

    Related Content

  • Proven Engineering

    Need enterprise architecture consulting?

    Explore our real-world case studies detailing production migrations, performance scaling, and high-throughput gateways.

    View Case Studies