Ride Detail Page
The Ride Detail Page provides a comprehensive view of everything that happened during a ride. This is your go-to resource for investigating ride issues, processing refunds, understanding customer disputes, and analyzing ride patterns.
Overview
Every ride in the system has its own detail page accessible by clicking the ride number from the Rides list. This page consolidates all ride data including timing, pricing, route, events, and actions.
Key Features
- Complete ride timeline - See exactly what happened and when
- Pricing breakdown - Understand every charge and discount
- Route visualization - Map view of the ride path
- Activity log - All events including zone entries, pauses, and commands
- Admin actions - Pause, resume, end rides, and process refunds
- Customer context - Quick access to customer profile and history
Accessing a Ride Detail
Navigate to the detail page through any of these methods:
- From Rides list - Click the ride number (e.g., "R-12345")
- From Customer profile - Click any ride in their history
- From Vehicle detail - Click any ride in the vehicle's ride history
- Direct URL -
/dashboard/rides/{ride_id}
Page Sections
Header Section
The header displays essential ride identification:
| Element | Description |
|---|---|
| Ride Number | Unique identifier (e.g., "Ride #R-12345") |
| Status Badge | Current ride status with color coding |
| Created Date | When the ride was initiated |
| Action Buttons | Available admin actions based on ride state |
Admin Action Buttons
Available actions depend on the current ride status:
| Ride Status | Available Actions |
|---|---|
| Active | Pause, End Ride |
| Paused | Resume, End Ride |
| Completed | View only (no actions) |
| Cancelled | View only (no actions) |
Permissions Required
You need the ride:update permission to pause, resume, or end rides. The ride:refund permission is required to process refunds.
General Information Tab
The primary information section displays:
Ride Status and Timing
| Field | Description |
|---|---|
| Status | Current ride state (Active/Paused/Completed/Cancelled) |
| Started | Date and time the ride began (customer unlocked vehicle) |
| Ended | Date and time the ride ended (if completed) |
| Active Duration | Total time spent actively riding |
| Paused Duration | Total time spent in paused state |
| Total Duration | Combined active + paused time |
Distance and Route
| Field | Description |
|---|---|
| Total Distance | Distance traveled during the ride (miles or km) |
| Start Location | GPS coordinates and/or address where ride began |
| End Location | GPS coordinates and/or address where ride ended |
Vehicle Information
| Field | Description |
|---|---|
| Vehicle | Vehicle ID (clickable link to vehicle detail) |
| Vehicle Model | Type of vehicle used |
| Battery Start | Battery level when ride started |
| Battery End | Battery level when ride ended |
Customer Section
Quick access to customer information and actions:
Customer Details
| Field | Description |
|---|---|
| Name | Customer's full name (clickable link to profile) |
| Customer's email address | |
| Phone | Customer's phone number |
| Verification Status | Whether customer has verified their account |
| Customer Since | Account creation date |
Customer Metrics (Quick View)
| Metric | Description |
|---|---|
| Total Rides | Number of rides this customer has taken |
| Wallet Balance | Current prepaid wallet balance |
| Lifetime Value | Total revenue from this customer |
Pricing Section
A detailed breakdown of how the ride was priced:
Pricing Snapshot
When a ride starts, the system captures a "pricing snapshot" - the pricing rules in effect at that moment. This ensures consistent billing even if pricing changes mid-ride.
| Field | Description |
|---|---|
| Vehicle Model | The model determining pricing |
| Pricing Type | Per-minute or per-distance |
| Unlock Fee | One-time unlock charge |
| Per-Minute Rate | Rate charged per minute of active riding |
| Pause Rate | Rate charged per minute while paused |
| Per-Distance Rate | Rate per mile/km (if distance-based) |
| Minimum Price | Floor price for the ride |
| Daily Cap | Maximum daily charge for this customer |
Charge Breakdown
Detailed calculation of the ride charges:
Unlock Fee: $1.00
Active Time (15 min): $5.85 (15 x $0.39)
Pause Time (3 min): $0.30 (3 x $0.10)
----------------------------------------
Subtotal: $7.15
Discount (Promo): -$1.00
----------------------------------------
Total Charged: $6.15
Discounts Applied
If any discounts were applied, they appear in the pricing display:
| Discount Type | Display | Description |
|---|---|---|
| Package Discount | Shows package name and discount % | Pre-purchased ride bundles that reduce per-minute rate |
| Subscription Discount | Shows subscription name and discount % | Active membership that reduces pricing |
| Promo Code | Shows promo code and value | Single-use or campaign discount codes |
| Daily Cap | Shows cap limit reached | Automatic cap protection that limits daily spending |
Live Pricing Updates
For active and paused rides, the pricing display automatically refreshes:
| Feature | Behavior |
|---|---|
| Refresh Interval | Every 30 seconds for active/paused rides |
| Static Display | No refresh for completed/cancelled rides |
| Data Fetched | Current fare, discounts, outstanding balance |
The live pricing component shows:
- Current Fare - Running total based on elapsed time
- Applied Discounts - Active package, subscription, or promo discounts
- Outstanding Balance - Amount still owed (current fare minus any credits)
Outstanding Balance
The outstanding balance reflects what the customer currently owes: Current Fare - Wallet Credits Applied - Discounts. For active rides, this updates in real-time.
Activity Timeline
A chronological log of all events during the ride:
Event Types
| Event | Description |
|---|---|
| Ride Started | Customer unlocked vehicle and began ride |
| Ride Paused | Ride was paused (manual or automatic) |
| Ride Resumed | Ride was resumed from paused state |
| Ride Ended | Ride was completed |
| Zone Entered | Vehicle entered a special zone |
| Zone Exited | Vehicle exited a special zone |
| Lock Command | Vehicle was remotely locked |
| Unlock Command | Vehicle was remotely unlocked |
| Throttle Disabled | Vehicle motor was disabled |
| Throttle Enabled | Vehicle motor was enabled |
Zone Events
Special zones trigger events when entered or exited:
| Zone Type | Color | Effect |
|---|---|---|
| Parking Zone | Green | Designated parking areas |
| No Parking Zone | Red | Cannot end ride here |
| No-Go Zone | Black | Vehicle stops when entering |
| Speed Limit Zone | Yellow | Reduced max speed |
| Charging Zone | Blue | Battery swap locations |
| Bonus Zone | Green gradient | Incentive for ending here |
Each zone event shows:
- Zone name
- Entry or exit timestamp
- Duration inside zone (for exits)
Auto-Pause Events
When a ride is automatically paused, the timeline shows:
- Reason for pause:
idle_movement,no_location, orinsufficient_funds - Pause method: Whether vehicle was locked or just throttle-disabled
- Resume time: When/if the ride was resumed
Refunds Section
Track all refund activity for the ride:
Refund Summary
| Field | Description |
|---|---|
| Original Charge | Total amount charged for the ride |
| Total Refunded | Sum of all refunds issued |
| Remaining | Amount still chargeable (eligible for refund) |
Refund History
Each refund entry shows:
- Amount - How much was refunded
- Type - Wallet credit or card refund
- Reason - Why the refund was issued
- Issued By - Admin who processed the refund
- Date - When the refund was processed
Processing a Refund
To issue a refund (requires ride:refund permission):
Click Issue Refund
Click the Issue Refund button in the Refunds section.
Enter Amount
Enter the refund amount (up to remaining balance).
Select Refund Type
Choose refund type:
- Wallet Credit - Adds to customer's prepaid balance
- Card Refund - Refunds to original payment method
Enter Reason
Enter a reason/note (required for audit trail).
Process
Click Process Refund to complete.
Card Refunds
Card refunds can only be processed if the original charge was made via Stripe and is eligible for refund.
Route Map
An interactive map showing the ride's path:
Map Features
| Feature | Description |
|---|---|
| Route Line | GPS track of the ride path |
| Start Marker | Green pin showing ride start location |
| End Marker | Red pin showing ride end location |
| Zone Overlays | Visual representation of zones crossed |
| Event Markers | Icons for key events (pauses, zone entries) |
End Location Comparison
The system captures two end locations:
- Vehicle Location - GPS coordinates from the vehicle's IoT device
- User Device Location - GPS coordinates from the customer's phone
The page displays:
- Both locations on the map
- Distance between them (in meters)
- Which source was used for zone validation
Location Discrepancy
If there's significant distance between the two locations (>50m), it may indicate GPS drift, customer ended ride remotely, or potential abuse (customer not at vehicle).
End Photo Section
If a photo was submitted when the ride ended:
Photo Display
- Full-size image of the parked vehicle
- Timestamp when photo was taken
- GPS coordinates where photo was captured
Photo Requirements
End photos may be required based on settings:
- Required in No-Parking Zones - When ending outside designated areas
- Required Always - For all ride completions
- Optional - Customer choice to submit
Feedback Section
If the customer submitted feedback after the ride:
Feedback Display
- Star Rating - 1-5 star rating with visual display
- Comment - Customer's written feedback
- Submitted At - When feedback was provided
Use feedback to:
- Identify vehicle maintenance issues
- Understand customer satisfaction
- Track service quality trends
See Ride Feedback System for more details on the feedback system.
Technical Details
Data Sources
The ride detail page aggregates data from multiple tables:
| Data | Source Table |
|---|---|
| Ride info | rides |
| Customer | customers |
| Vehicle | vehicles |
| Pricing | live_pricing_snapshots |
| Route | ride_locations |
| Zone events | ride_zone_events |
| Lock events | ride_lock_events |
| Refunds | ride_refunds |
| Feedback | ride_feedback |
Refresh Behavior
- Active/Paused rides - Pricing section auto-refreshes every 30 seconds
- Completed rides - Static display (no auto-refresh needed)
- Manual refresh - Click "Refresh" to update all data immediately
- Live data includes - Current fare, discounts applied, outstanding balance
Permissions
| Permission | Access Level |
|---|---|
| ride:view | Required to access ride details |
| ride:update | Required to pause/resume/end rides |
| ride:refund | Required to process refunds |
Common Use Cases
Investigating a Customer Complaint
- Search for the customer or ride number
- Review the Activity Timeline for issues
- Check the Route Map for path anomalies
- Review Pricing section for charge accuracy
- Process refund if warranted
Identifying Stuck Rides
- Filter Rides list for "Active" status
- Sort by Started (oldest first)
- Open detail page for long-running rides
- Check if vehicle is reporting location
- Use End Ride action if needed
Verifying Zone Violations
- Open ride detail page
- Check Activity Timeline for zone events
- Review Route Map to see path through zones
- Check End Location for proper parking
- Document findings in notes
Troubleshooting
Route Not Displaying
- Vehicle may not have reported location data
- GPS signal may have been weak during ride
- Check if IoT device was online
Pricing Seems Incorrect
- Review the Pricing Snapshot (rules at time of ride)
- Check for applied discounts
- Verify subscription/package status at time of ride
- Check if daily cap was in effect
Cannot End Active Ride
- Verify you have
ride:updatepermission - Check if vehicle is communicating
- Try refreshing the page
- Contact support if issue persists
Refund Button Not Available
- Verify you have
ride:refundpermission - Check if there's remaining balance to refund
- Completed rides may have refund limitations