Lyra

Online
Trusted reporting at scale
Insight 3 min read

Trusted Reporting at Scale: Metric Dictionaries, Canonical Events, and Data Quality (Insight 18)

S
Squalltec Team May 16, 2013

TL;DR

“Reporting” becomes painful when every module defines metrics differently. In travel and hospitality, this shows up as conflicting revenue numbers, mismatched conversion rates, and dashboards that nobody trusts. The fix is not a prettier dashboard; it is a consistent data contract:

  • Define canonical business events (search, select, book, cancel, refund)
  • Maintain a shared metric dictionary (what “conversion” means, exactly)
  • Build data quality checks and reconciliation as part of the pipeline
  • Align operational systems and analytics systems with clear ownership

The Problem: Metrics Drift Across Systems

As platforms grow, each team ships features and defines metrics locally:

  • Marketing uses one “conversion” definition
  • Product uses another
  • Finance uses a third
  • Operations tracks cancellations in a different system

Eventually:

  • Numbers disagree
  • Stakeholders stop trusting dashboards
  • Teams spend time arguing about metrics instead of improving outcomes

The root cause is usually missing contracts, not missing data.

Step 1: Build a Metric Dictionary (Non-Negotiable)

Create a shared, versioned dictionary for core metrics. Examples:

Conversion Rate

Define the numerator and denominator precisely:

  • Denominator: sessions with a valid availability response
  • Numerator: confirmed reservations (not “payment initiated”)

Clarify edge cases:

  • What about bookings confirmed after a delay?
  • Do cancellations within 5 minutes count?
  • How are “pay later” reservations handled?

Revenue

Define:

  • Gross vs. net
  • Currency normalization rules
  • Tax and fee inclusion
  • Refund and chargeback handling

If finance cannot reconcile platform totals to payment ledgers, trust will never form.

Step 2: Define Canonical Events

Define a small set of business events that every product team can depend on:

  • availability.searched
  • availability.results_returned
  • rate.selected
  • booking.hold_created (if holds exist)
  • booking.confirmed
  • booking.canceled
  • payment.authorized
  • payment.captured
  • payment.refunded

Each event should have:

  • A stable identifier (reservation ID, payment ID)
  • A timestamp and source system
  • Versioned payload fields
  • Clear ownership (who emits it, who consumes it)

This prevents “metrics by interpretation.”

Step 3: Separate Operational Records From Analytics Contracts

Operational systems optimize for correctness and workflows (PMS, booking engine, payments). Analytics systems optimize for queries and history (warehouse/lake).

Do not treat your database tables as your analytics contract. Instead:

  • Emit events or normalized records into an analytics pipeline
  • Preserve history (slowly changing dimensions where needed)
  • Keep auditability (who changed what, when, and why)

This makes it possible to answer questions consistently, even as product evolves.

Step 4: Quality Checks and Reconciliation

Assume bad data will appear. Build automated checks:

  • Schema validation (required fields present, types correct)
  • Range checks (negative totals where impossible)
  • Duplicate detection (idempotency failures, double events)
  • Referential integrity (reservation events must reference a known reservation)

Reconciliation jobs should compare analytics outputs against sources:

  • Payment captured totals vs. payment provider exports
  • Reservation counts vs. booking engine records
  • Cancellations vs. operational cancellation logs

If you cannot reconcile, you cannot safely scale reporting.

Step 5: Make Attribution Explicit

Attribution is often where teams disagree most.

Define:

  • What constitutes a session and how it is stitched across devices
  • Source/medium rules (and how you handle missing referrers)
  • UTM handling and overrides
  • How you treat “assisted conversions”

Write it down. Version it. Use it everywhere.

Step 6: Build Dashboards That Reflect Workflows

Once contracts and quality are in place, dashboards become useful:

  • Funnel by segment (device, region, partner, property)
  • Booking lifecycle states over time
  • Payment decline reasons and provider performance
  • Inventory mismatch rate and time-to-heal

Dashboards should tell operators what to do next, not just what happened.

Closing Thought

The fastest way to get trustworthy analytics is to treat data like product: define contracts, enforce quality, and maintain ownership. When metrics are consistent, teams can focus on improving them instead of debating them.