# ExpressTrack tenant insurance connector — Muse operating instructions Version: 0.1.0. This is a proposed connector guide, not a claim that Meta has approved or installed it. ## What this connector does Create a tracked journey, guide a customer through the existing Westland Express website, and report small structured progress observations to ExpressTrack. Westland provides quotes, accepts payments, and issues policies. ExpressTrack provides routing and analytics. No Westland API is required by this version. The REST API does NOT drive a browser. Muse's own browser performs the website work. The API records observations Muse submits between actions. If the integration cannot call tools while browsing, use handoff mode and report downstream progress as unknown. A link click alone cannot instrument a cross-origin website. Live destination: https://dashboard.westlandexpress.ca/ziptenant/newQuote?lang=en ## Authentication and scope The connector installation supplies X-API-Key from secure credential storage. Never show it to a customer. POST /v1/journeys returns a journey_token. Preserve it privately with the journey ID and send it in X-Journey-Token for observation and status calls. The shared connector key alone cannot read other journeys. Do not put the journey_token in a URL, a browser form, local storage, a customer message, or an analytics field. There is no endpoint for listing customer journeys. The handoff URL contains a separate, limited capability that can only open the handoff page and continue to Westland. It cannot read status or send observations. Links and capabilities expire after 30 days. This API does not implement OAuth or claim to identify a Muse user. For production, validate that Muse preserves per-conversation tool secrets; otherwise add supported per-user authentication before wider use. ## Start 1. Explain that quotes and insurance are supplied through Westland Express and the final purchase happens in its existing flow. Confirm that the customer wants this assistance and agrees to ExpressTrack recording anonymous progress stages. Do not infer consent from a prior unrelated permission. 2. POST /v1/journeys with {"product":"tenant_insurance","language":"en","mode":"assisted","campaign":"muse","analytics_consent":true}. Use a new random Idempotency-Key for a new journey. Reuse exactly the same key and body only after an uncertain response. 3. Store the returned journey ID and capability privately. Open the handoff_url in the customer's authorized browser context. Continue via the visible button. This records a handoff activation; it does not prove Westland loaded. 4. Inspect the destination and report stage_viewed/name only when the active name form is visible. For a customer who wants to browse independently, use mode=handoff. Share only the handoff URL. Do not claim you can see subsequent steps. If moving from assisted to independent browsing, report user_handoff with evidence=user_statement. Do not record a made-up completion. ## Website navigation and accurate observations Verified live entry state: a cookie notice, EN/FR switch, five navigation stages, and the active name form. The first form asks email, first and last name, optional referral code, and student status. Its DOM exposed an active tabpanel headed 'Your Name'. The other four stage names appear in navigation even while the first page is active. Always inspect the ACTIVE form panel or selected step. Do not classify a page using all page text, all navigation headings, URL alone, or a clicked button. Do not assume a button click succeeded. Only report step completion when the next step is visibly active. Page layouts and selectors may change; reacquire controls from the current DOM/accessibility tree. | Active stage | Stage ID | Evidence required | | --- | --- | --- | | Your Name | name | Active name form | | Your Address | address | Active address form | | Choose Your Package | package | Active package options | | Personalize Your Coverage | coverage | Active coverage form | | Review Your Quote | quote_review | Active quote review panel | | Existing Westland purchase flow | checkout | Actual purchase/payment form, not a generic purchase link | | Policy confirmation | confirmation | Explicit issued-policy confirmation/document, not a payment receipt | Only the initial form and five navigation labels have been inspected live. The downstream layout, account requirements, payment fields, and policy confirmation have NOT been validated end to end. Read and follow the live UI; do not invent selectors, API endpoints, package prices, underwriting rules, or success messages. Ask the customer for missing application answers and use their supplied information in Westland, subject to Muse's consent controls. Never guess student status, insurance history, occupancy, business use, dates, or coverage needs. Do not send those answers to the ExpressTrack analytics API. If referral_code is returned by the connector, use that exact value in Westland's optional referral-code field, where present. No referral code is configured by default. Do not use the journey ID as a referral code or invent a URL parameter. Report with POST /v1/journeys/{id}/observations. Each event has a fresh opaque event_id (UUID hex recommended), UTC observed_at, type, evidence, and when relevant stage/error_code. Retry a failed report with the SAME event ID, time, and content. Event timestamps are observation times, not the retry time. Example: ```json { "event_id": "8f1f9a74b9a74337a70b11e303b8fb57", "type": "stage_viewed", "stage": "address", "evidence": "active_step_visible", "observed_at": "" } ``` Allowed type/evidence combinations: - stage_viewed / active_step_visible — a stage is active. - stage_completed / next_step_visible — the previous stage has been accepted; report its stage ID. - validation_failed / validation_message_visible — use a safe error_code, no raw error text. - quote_ready / quote_summary_visible — quote_review stage and an actual displayed quote. - checkout_started / checkout_visible — checkout stage. - payment_failed / payment_failure_visible — checkout stage plus safe error_code. - payment_succeeded / payment_success_visible — checkout stage, actual success message. - policy_issued / issued_policy_visible — confirmation stage and explicit issued-policy evidence. - broker_referral_required / referral_message_visible — Westland asks for broker assistance. - user_handoff / user_statement — the customer continues independently. - user_cancelled / user_statement — the customer explicitly stops; do not infer it from silence. - tracking_lost / observation_unavailable — the browser/session is no longer observable. Safe error codes: required_field, invalid_value, payment_declined, site_unavailable, session_expired, unsupported_applicant, other. Do not include free text, DOM snapshots, screenshots, quote/policy numbers, passwords, names, addresses, email addresses, card numbers, tokens or banking details. These fields are intentionally absent from the API. ## Payment and binding Assume the customer has a card connected to Muse. This does not expose the card to ExpressTrack and does not establish that Muse can use it with this specific Westland checkout. Use ONLY Muse's supported secure payment facility in the existing Westland flow, when available and permitted by the platform. Never ask the model to retrieve, transcribe, persist, or pass card details to this API. Before any consequential insurance purchase, let the customer review the exact displayed coverage, effective date, initial payment, subsequent payment schedule, declarations and terms. Follow Muse's insurance/payment restrictions and hand off the final purchase to the customer if required. This connector provides no bind/payment tool and cannot grant permission to bypass platform controls. If Westland asks for banking details or a recurring debit authorization not supported by Muse's wallet, let the customer complete that in Westland. Do not replace that flow with Stripe or a new ExpressTrack checkout. Never blindly retry a payment after a timeout or navigation failure. Inspect the existing result/account state first. If payment succeeded but no policy has been issued, report payment_succeeded only. Say issuance is pending/unknown. An observed policy_issued event is still agent_reported, not provider_verified. No commission entitlement is established by this event. ## Recovery and resumption Read GET /v1/journeys/{id}. Use the already-open Westland session to resume. The handoff URL opens the original NEW QUOTE entry point; it is not a Westland saved-quote link. Do not reopen it as a payment retry or assume it restores a saved quote. After an observed payment or issuance, the API intentionally returns no resume_url. Record tracking_lost when visibility ends. Do not treat missing events as failure or customer abandonment. The dashboard calculates inactivity after 24 hours by default and labels it as an inference. If event reporting is temporarily down, retain only the minimal event in private tool context, continue only within authorized scope, and retry with its original event ID. Do not repeat the website action simply to repair analytics. ## Limits - API keys plus per-journey capability; no OAuth in this release. - One connector installation per deployment. Do not share a credential across unrelated organizations. - Progress depends on Muse calling the observation tool. There is no background cross-site tracking, injected Westland script, proxy checkout, or provider webhook. - No independent policy verification, policy document retrieval, purchase binding, commission calculation, or cancellation monitoring. - The local simulator is synthetic. It validates connector behavior, not Westland checkout compatibility. - Confirm regional product eligibility and Muse distribution availability in the live rollout.