Airbnb Sync

Airbnb synchronisation is AirDoo's core feature. It automatically transforms Airbnb confirmation emails into structured reservations in Odoo.

Process Overview

graph TD A[Airbnb email received] --> B[Gmail API reads email] B --> C[AirDoo Parser extracts data] C --> D[Data validation] D --> E[Matching with Odoo accommodation] E --> F[Odoo Reservation created] F --> G[Invoice generated] G --> H[Calendar updated] H --> I[Notification & Communication]

Required Configuration

1. Gmail Account

  • Email address: The one used for Airbnb bookings
  • Gmail API enabled: Via Google Cloud Console
  • Scope: https://www.googleapis.com/auth/gmail.readonly

2. Configured Accommodations

Each Airbnb listing must have a matching record in Odoo:

Airbnb Field Odoo Field Matching Rule
Listing name Accommodation name Exact match
e.g. "Alpine Chalet" "Alpine Chalet"
e.g. "Alpine Chalet - Mountain View" "Alpine Chalet"

3. Configured Products

  • Accommodation Nights: Service type product
  • Cleaning Fee: Service type product (optional)

Sync Process

Manual Sync

  1. Open the AirDoo dashboard
  2. Click "Sync Airbnb Emails"
  3. Complete Google authentication (if required)
  4. Check results in the logs

Automatic Sync (Cron)

AirDoo includes a cron configured to run every 30 minutes:

# Cron configuration
'airdoo_cron_sync_airbnb': {
    'name': 'AirDoo: Sync Airbnb Emails',
    'model_id': 'airdoo.model_airdoo_accommodation',
    'state': 'code',
    'code': 'model._cron_sync_airbnb_emails()',
    'interval_number': 30,
    'interval_type': 'minutes',
    'numbercall': -1,
    'doall': False,
    'active': True
}

Data Extracted from Emails

Basic Information

  • Confirmation code: HM2YEYHZXC (unique per reservation)
  • Dates: Check-in / Check-out
  • Property: Exact Airbnb listing name
  • Guest: Name, email, phone
  • Price: Total, nightly rate, fees, taxes

Guest Composition

  • Adults: Count
  • Children: Count (with ages if available)
  • Babies: Count

Additional Information

  • Guest notes: Special requests
  • Status: Confirmed, Cancelled, Modified
  • Source: Airbnb (for tracking)

Sync Results

On Success

  1. Sales order created in Odoo
  2. Customer created or updated
  3. Invoice automatically generated
  4. Calendar updated
  5. Logs recorded in the chatter

Sales Order Structure

Sales Order #SO12345
├── Customer: John Smith (john@example.com)
├── Accommodation: Alpine Chalet
├── Period: 2026-02-01 → 2026-02-07 (6 nights)
├── Lines:
│   ├── Accommodation Nights: 6 × €150 = €900
│   └── Cleaning Fee: 1 × €80 = €80
└── Total: €980

Troubleshooting

Common Issues

1. No emails found

  • Cause: Gmail filters too restrictive
  • Solution: Check search parameters
    # Default filter
    query = "from:automated@airbnb.com is:unread"
    

2. Accommodation not found

  • Cause: Name does not match exactly
  • Solution: Check matching in AirDoo → Accommodations

3. Incomplete data

  • Cause: Unsupported email format
  • Solution: Check parsing logs

4. Google authentication error

  • Cause: Expired or invalid token
  • Solution: Regenerate credentials

Diagnostic Logs

Odoo Logs

# View AirDoo logs
tail -f /var/log/odoo/odoo-server.log | grep -i airdoo

AirDoo Logs

  1. Dashboard: Overview of sync runs
  2. Communication logs: History of processed emails
  3. Parsing logs: Details of extraction errors

Log Example

[INFO] 2026-02-26 11:30:00 - Sync started
[INFO] 2026-02-26 11:30:05 - 3 emails found
[SUCCESS] 2026-02-26 11:30:10 - Reservation #HM2YEYHZXC created
[WARNING] 2026-02-26 11:30:15 - Email ignored: unsupported format
[INFO] 2026-02-26 11:30:20 - Sync complete: 1/3 successful

Best Practices

1. Regular Checks

  • Daily: Verify new reservations
  • Weekly: Review error logs
  • Monthly: Review sync statistics

2. Accommodation Maintenance

  • Update names if changed on Airbnb
  • Archive unused accommodations
  • Verify matches regularly

3. Error Handling

  • Do not ignore recurring errors
  • Document issues encountered
  • Contact support if needed

4. Performance

  • Limit unnecessary manual syncs
  • Use the cron for automation
  • Monitor execution times

Statistics and Reporting

AirDoo Dashboard

  • Success rate: % of successful syncs
  • Volume: Number of emails processed
  • Trends: Evolution over time

Odoo Reports

  • Sales: Revenue generated
  • Occupancy: Occupancy rate per accommodation
  • Customers: New customers acquired

FAQ

Q: How long does a sync take?

A: About 2–3 seconds per email, depending on complexity.

Q: What happens when a reservation is modified?

A: AirDoo detects modifications and updates the existing reservation.

Q: Are cancellations handled?

A: Yes, cancellations are detected and the status is updated.

Q: Can I sync multiple Gmail accounts?

A: Yes, but requires additional configuration.

Q: Are old emails processed?

A: By default, only unread emails are processed.

Next Steps

  1. Reservations: Edit and manage reservations
  2. Dashboard: View statistics
  3. Communication: Configure automated messages

← Back: Home | Next: Reservations →