Skip to content

Multi-hotel reservation data, consolidated for reporting

Reservation data from twelve hotels depended on monthly lists reviewed by hand, so the workflow brings reservations in continuously and keeps one consistent, historical dataset for client reporting.

Period
2026
Context
Professional work
Client
Undisclosed

Context

Reservations for a group of hotels were reviewed and consolidated by hand, working from lists the booking platform sent once a month.

A workflow was needed to receive reservation events as they happen, keep them consistent across properties, and make that information usable for reporting and operational follow-up.

Message format
XML / SOAP
Scope
Multiple properties
Event types
Booking · Modification · Cancellation
Destination
Google Sheets

The challenge

Reservation events from multiple properties had to be received as structured XML/SOAP messages, authenticated, normalized and routed consistently while preserving the correct state across bookings, modifications and cancellations.

What I was responsible for

  1. Intake and validation

    • I built the event intake and processing flow for XML/SOAP reservation messages.
    • I implemented request authentication and validation.
  2. Data handling

    • I normalized booking, modification and cancellation events into a consistent internal structure.
    • I implemented property-based routing to the appropriate destination.
    • I built reconciliation logic for modification events so records removed from an updated reservation were correctly reflected in the destination data.
  3. Delivery and reliability

    • I implemented structured logging and error handling for valid and invalid requests.
    • I connected the processed reservation data to Google Sheets.
    • I tested the integration and message flows using Postman.

Solution

I built an end-to-end n8n workflow that receives reservation events, parses and validates incoming messages, transforms the relevant data into a consistent internal structure and routes it to the appropriate destination. The workflow separates standard events from modifications and includes reconciliation logic to keep previously stored reservation records synchronized when the incoming state changes.

Decisions

  • I chose n8n to run the workflow and Google Sheets as its destination, with advice from my manager.

  • I handled modifications separately from new reservations, so records removed from an updated booking are reflected in the stored data instead of being left behind.

  • I validated each external message flow in Postman before connecting it to the workflow.

Technical approach

  1. Intake

    Event-driven intake through webhooks.

  2. Parse & authenticate

    XML/SOAP parsing and request authentication.

  3. Normalize

    Reservation data normalization into a consistent internal structure.

  4. Route

    Property-based routing. Separate handling for standard and modification events.

  5. Reconcile

    Reconciliation of existing records during modifications.

  6. Persist & respond

    Structured valid/invalid response paths. Google Sheets as the operational destination.

The system

  1. Choose what arrives to run it.

An external reservation event is received and parsed. The request is then validated: invalid requests exit through a rejected branch and go no further. Valid reservation data is normalized into a consistent structure and routed according to its destination. The flow then splits by event type. Standard events, meaning new bookings and cancellations, are persisted directly. Modification events first reconcile the incoming state against existing records, then update the affected records before the incoming data is persisted. Both paths finish by returning a response.

Fig. 1 — Abstract reservation-processing flow showing validation, normalization, routing and modification reconciliation.

The production implementation

Fig. 2 — Production workflow overview. The full implementation runs as an n8n automation processing reservation events across multiple properties.

Outcome

  • The workflow has been running in production since 2026 and currently covers twelve hotels.

  • Reservation data can be viewed continuously rather than only through a monthly list, and its history is kept.

  • The consolidated data is the source for client reporting in Looker Studio, where it supports comparisons over time.

  • It reduces part of the manual review and consolidation that used to happen each month.

Lessons learned

  1. This project gave me production experience with SOAP as well as REST: XML messages that had to become JSON inside the workflow, the headers the service requires, and validating each external flow in Postman before connecting it to n8n.

  2. I also learned to design for data that changes after it is created. Modifications and cancellations needed reconciliation built around unique identifiers and reservation states, so the stored data keeps matching the bookings it describes.

  3. Running n8n in production taught me to work out up front which nodes, data, credentials and access a workflow needs, to anticipate the error cases and handle them, and how different a workflow that works in a test is from one that has to keep working in production.

Technologies

WebhooksXMLJSONSOAPWS-SecurityGoogle SheetsPostman

More of my work

All projects
  1. 01 · Client workMulti-step form and API integrationA two-step form had to check vehicle eligibility against an external service, turn each response into a clear result state, and carry campaign attribution through to submission.View project
  2. 02 · Client workInteractive golf club finder and enrollment flowA seasonal campaign needed one enrollment flow for multiple clubs, each with availability rules set by the client, so that every lead reached the right club with the right next step.View project
  3. 03 · Client workWordPress rebuild and structured content systemA new WordPress site built so a non-technical team can publish articles, ebooks and webinars through structured content, with lead forms connected to the CRM the client already used.View project

Open to integration, automation and technical implementation roles.