Observability
Connect records what happens to your traffic so you can control the business, watch API health, and debug one operation without guessing. Use the console for day-to-day ops. Use requestId and auditData when you need the wire.
Access to Connect screens requires connect.read on app.bundleport.com. Alerts are not available yet.
| Screen | What it answers | URL |
|---|---|---|
| Business Analytics | Bookings, GMV, conversion, markets | app.bundleport.com/connect/business-analytics |
| Quote Journey | Search→quote reliability: price, cancellation, surcharges, sold-out | app.bundleport.com/connect/quote-journey |
| API Performance | Success/error rate, latency, error_category, per-connection health | app.bundleport.com/connect/observability |
| Transactions | What happened on this search, quote, or book | app.bundleport.com/connect/transactions/hotels |
| Connectivity | Per-connection Overview Stats (24 hours), Performance / Errors (7 days) | app.bundleport.com/connect/connectivity |
| Request IDs | How to name one call with support | settings.requestId / X-Request-ID |
| Audit traces | What was exchanged with the connection | settings.auditTransactions → auditData.transactions |
API Performance is full volume. Transactions is the audited grain: quote, book, cancel, booking detail, and booking list are always recorded. Search is sampled for high-throughput API-key traffic (see What gets audited).
Older paths /connect/dashboard, /connect/analytics, and /connect/overview redirect to Business Analytics. /connect/performance redirects to API Performance.
Connectivity (per connection)
On a connection’s detail panel: Overview (Stats, 24 hours), Performance (7-day funnel and per-operation rates/latency), and Errors (7-day aggregates). Open API Performance with ?connection= for the same code.
Request IDs and tracing
Send a requestId in settings (returned as X-Request-ID) so you can find the call in Transactions and in support tickets.
{
"settings": {
"connectionCodes": ["testb-conn-1876"],
"requestId": "req-123456789"
}
}
If you omit it, Bundleport still assigns an internal correlation ID. A client-supplied requestId is easier to search on your side.
Audit traces (connection-level debugging)
Set settings.auditTransactions: true to include connection-level traces in auditData.transactions (raw request/response when captured).
{
"settings": {
"connectionCodes": ["testb-conn-1876"],
"auditTransactions": true
}
}
Audit payloads can include guest data and references. Do not store or log full bodies in production without redaction. Do not commit them.
Funnel tracking
Availability returns searchId (analytics only — not a booking token). Pass it as criteria.search_id on quote. Quote returns quoteId; pass search_id and quote_id on book. Do not put these values in optionRefId. If you omit them, analytics may fall back to request context or correlation id.
Treat search options[].id and quote/book optionRefId as opaque strings. Do not parse or truncate them. Their length may grow over time; store and echo them unchanged.
What gets audited
- Quote, book, cancel, booking detail, booking list, metadata — always recorded (bodies + Transactions row). Metadata has no dedicated Transactions operation filter; leftover ops render as Operation in the unfiltered list (API Performance has a separate Other tab).
- Option-block replay — when the platform returns the same book/quote
errors[]withbook_option_blocked/prebooking_option_blockedwithout calling the connection again, that call is still audited (synthetic evidence: correlation ids such asoptionRefId/clientReference+ replayed errors — never payment card or guest PII). Evidence is stored under hopaggregator(…-aggregator.json); Messages still show it in the integration slot. Bodies are for Transactions storage; they are not echoed on the buyer response (audit metadata may remain). Filter Option block → Blocked retries only in Transactions. - Search / availability — always audited for interactive console traffic. For API-key traffic it is sampled as volume rises. When a search was captured and later feeds a quote or book (
search_id/ funnel), that evidence stays available in the related timeline; the platform does not invent search bodies that were never sampled.
Temporary full capture for a connection’s search traffic is available from Transactions (Audit Search) when your account can manage Connect.