Dynamic Pricing Rules
Dynamic pricing allows you to automatically adjust ride prices based on time of day, weather conditions, demand, or specific vehicle models. This guide covers how to create, manage, and optimize dynamic pricing rules for maximum revenue and operational efficiency.
Overview
Dynamic pricing rules apply adjustments to base prices in real-time based on configurable conditions. These adjustments can increase prices during peak demand or decrease them during slow periods.
Key Features
- Time-based rules - Surge pricing during peak hours, discounts during off-peak
- Weather-based rules - Adjust pricing for rain, snow, or extreme temperatures
- Demand-based rules - Automatic adjustments based on high-demand areas
- Vehicle-model targeting - Apply rules to specific vehicle types only
- Priority ordering - Control which rules take precedence
- Multiple adjustment types - Use percentages, multipliers, or fixed amounts
Accessing Dynamic Pricing
Navigate to Pricing
Go to Dashboard and click Pricing in the sidebar navigation.
Find Dynamic Pricing Section
Scroll to the Dynamic Pricing Rules section.
Manage Rules
Click Add Rule to create a new rule or use edit/delete icons for existing ones.
Rule Types
Time-Based Rules
Schedule automatic price adjustments for specific time windows and days of the week.
Use Cases:
- Morning rush hour surge (7 AM - 9 AM weekdays)
- Happy hour discounts (4 PM - 6 PM)
- Weekend surge pricing
- Late night reduced rates
Configuration:
| Field | Description | Example |
|---|---|---|
| Start Time | When the rule activates | 07:00 |
| End Time | When the rule deactivates | 09:00 |
| Days of Week | Which days the rule applies | Mon, Tue, Wed, Thu, Fri |
Overnight Spans
Time-based rules support overnight spans. For example, a rule from 10:00 PM to 2:00 AM will work correctly across midnight.
Weather-Based Rules
Adjust pricing based on current weather conditions. Requires external weather integration.
Available Conditions:
| Condition | Description |
|---|---|
| Rain | Any precipitation detected |
| Snow | Snow or sleet conditions |
| Extreme Heat | Temperature above threshold |
| Extreme Cold | Temperature below threshold |
Use Cases:
- Increase prices during rain to account for higher risk
- Decrease prices in perfect weather to encourage ridership
- Apply surcharges during dangerous conditions
Demand-Based Rules
Automatically adjust pricing in high-demand areas. These rules work with zone-based demand detection.
How It Works:
- System monitors ride requests and vehicle availability by zone
- When demand exceeds supply thresholds, the rule activates
- Prices adjust automatically to balance demand
Best For:
- Event venues during concerts/games
- Transit hubs during rush hour
- Popular nightlife areas on weekends
Adjustment Types
Each dynamic pricing rule can use one of two adjustment methods, plus an optional fixed surcharge:
Percentage Adjustment
Increases or decreases the price by a percentage.
| Value | Effect | Example |
|---|---|---|
| +25% | 25% increase | $10.00 becomes $12.50 |
| +10% | 10% increase | $10.00 becomes $11.00 |
| -15% | 15% discount | $10.00 becomes $8.50 |
| -20% | 20% discount | $10.00 becomes $8.00 |
Calculation:
Adjusted Price = Base Price x (1 + Percentage / 100)
Typical Ranges:
- Rush hour surges: +20% to +50%
- Off-peak discounts: -10% to -25%
- Bad weather surcharges: +15% to +30%
Multiplier
Applies a direct multiplier to the base price.
| Value | Effect | Example |
|---|---|---|
| 1.5x | 50% increase | $10.00 becomes $15.00 |
| 2.0x | 100% increase (double) | $10.00 becomes $20.00 |
| 0.9x | 10% discount | $10.00 becomes $9.00 |
| 0.75x | 25% discount | $10.00 becomes $7.50 |
Calculation:
Adjusted Price = Base Price x Multiplier
Typical Ranges:
- Major event surge: 2.0x to 3.0x
- Extreme weather premium: 1.5x
- Promotional discount: 0.8x
Fixed Adjustment
Add or subtract a fixed dollar amount on top of percentage/multiplier adjustments.
| Value | Effect |
|---|---|
| +$1.00 | Add $1.00 flat fee |
| +$2.50 | Add $2.50 flat fee |
| -$0.50 | Subtract $0.50 |
Best For:
- Flat surcharges (e.g., "Peak hour fee")
- Fixed discount promotions
- Cost recovery for specific conditions
Creating a Dynamic Pricing Rule
Step 1: Basic Information
Rule Name (Required)
A descriptive name for the rule. Examples:
- "Morning Rush Hour Surge"
- "Weekend Night Premium"
- "Rainy Day Discount"
- "Happy Hour Special"
Rule Type (Required)
Select one:
- Time Based
- Weather Based
- Demand Based
Priority (Required)
Enter a number (1 and up). Higher numbers are processed first. When multiple rules apply:
- Rules are sorted by priority (highest first)
- Within the same priority, newer rules take precedence
- All applicable rules are applied sequentially
Step 2: Configure Adjustment
Adjustment Type
Choose between:
- Percent - Enter percentage (positive for increase, negative for discount)
- Multiplier - Enter multiplier value (
>1for increase,<1for discount)
Adjustment Value
| Type | Examples |
|---|---|
| Percent | 25 (for +25%), -15 (for -15%) |
| Multiplier | 1.5 (for 50% increase), 0.8 (for 20% discount) |
Fixed Adjustment (Optional)
Enter a dollar amount to add/subtract after the percentage/multiplier.
Step 3: Set Conditions
For Time-Based Rules:
- Set Start Time (24-hour format)
- Set End Time (24-hour format)
- Select applicable Days of Week (at least one required)
For Weather-Based Rules:
- Check one or more weather conditions
- Leave unchecked conditions won't trigger the rule
For Demand-Based Rules: Configure zone demand thresholds in advanced settings.
Step 4: Target Vehicle Models (Optional)
By default, rules apply to all vehicle models. To limit to specific models:
- Check the boxes next to the desired vehicle models
- Leave all unchecked to apply globally
Example:
- Only apply surge pricing to premium e-bikes
- Only discount standard scooters during promotions
Step 5: Activate
Toggle the Active checkbox to enable the rule. Click Create to save.
Rule Priority and Stacking
How Priority Works
When multiple rules apply to a ride, they're processed in this order:
- Highest priority number first (priority 10 before priority 1)
- Most recently created first (for same priority)
All applicable rules are applied sequentially, building on each other.
Stacking Example
Active Rules:
- "Morning Surge" - Priority 5 - +20%
- "Premium Vehicle Premium" - Priority 3 - +$1.00
- "Rainy Weather" - Priority 2 - +10%
Base Price: $10.00
Calculation (for a premium vehicle during morning rain):
Step 1: Morning Surge (+20%)
$10.00 x 1.20 = $12.00
Step 2: Premium Vehicle (+$1.00)
$12.00 + $1.00 = $13.00
Step 3: Rainy Weather (+10%)
$13.00 x 1.10 = $14.30
Final Price: $14.30
Best Practices for Priority
| Priority Range | Use Case |
|---|---|
| 10+ | Emergency/override rules |
| 5-9 | Time-based surges |
| 3-4 | Vehicle-specific adjustments |
| 1-2 | Weather/demand modifiers |
Managing Existing Rules
Viewing Rules
The rule table displays:
| Column | Description |
|---|---|
| Priority | Execution order |
| Rule Name | Descriptive name |
| Type | Time/Weather/Demand icon |
| Adjustment | Percentage, multiplier, and/or fixed |
| Schedule/Condition | Time window or weather triggers |
| Vehicle Models | Which models are affected |
| Status | Active/Inactive badge |
Editing Rules
- Click the Edit icon on the rule row
- Modify any fields
- Click Save
Immediate Effect
Changes take effect immediately for new rides. Active rides continue with their original pricing.
Deactivating Rules
- Toggle the rule's Active status to inactive
- Rule remains in the system but won't apply
Use this for:
- Seasonal rules (holiday pricing)
- Testing rules before full rollout
- Pausing rules during promotions
Deleting Rules
- Click the Delete icon
- Confirm deletion
Rules are permanently removed. For temporary suspension, use deactivation instead.
Common Use Cases
Rush Hour Surge
Setup:
- Name: "Morning Rush Hour"
- Type: Time Based
- Times: 7:00 AM - 9:00 AM
- Days: Monday - Friday
- Adjustment: +25%
- Priority: 5
Happy Hour Discount
Setup:
- Name: "Happy Hour Special"
- Type: Time Based
- Times: 4:00 PM - 6:00 PM
- Days: Monday - Friday
- Adjustment: -15%
- Priority: 4
Weekend Night Premium
Setup:
- Name: "Weekend Nights"
- Type: Time Based
- Times: 9:00 PM - 2:00 AM
- Days: Friday, Saturday
- Adjustment: +30% + $0.50 fixed
- Priority: 6
Rainy Day Pricing
Setup:
- Name: "Rain Surge"
- Type: Weather Based
- Conditions: Rain
- Adjustment: +15%
- Priority: 3
Premium E-Bike Surge
Setup:
- Name: "Premium E-Bike Peak"
- Type: Time Based
- Times: 12:00 PM - 2:00 PM
- Days: All days
- Adjustment: +$1.00 fixed
- Vehicle Models: Premium E-Bike only
- Priority: 4
Best Practices
- Start with modest adjustments - Begin with 10-15% surges and increase based on data
- Use clear naming - Rule names should describe when/why they apply
- Set appropriate priorities - Avoid conflicts with careful priority planning
- Test before activating - Use the preview feature to verify calculations
- Monitor rider feedback - Excessive surges can drive customers away
- Combine with promotions - Use discounts to balance surge fatigue
- Communicate to riders - Show surge pricing in the app before ride start
- Review regularly - Adjust rules based on ride data and revenue metrics
Technical Reference
Database Structure
dynamic_pricing_rules
| Column | Type | Description |
|---|---|---|
id | UUID | Unique identifier |
name | Text | Rule name |
rule_type | Enum | 'time_based', 'weather_based', 'demand_based' |
multiplier | Decimal | Multiplier value (null if using percent) |
percent_adjustment | Decimal | Percentage value (null if using multiplier) |
fixed_adjustment_cents | Integer | Fixed surcharge in cents |
priority | Integer | Execution priority |
is_active | Boolean | Whether rule is enabled |
conditions | JSONB | Weather conditions (for weather rules) |
vehicle_model_ids | UUID[] | Targeted vehicle models (null = all) |
subaccount_id | UUID | Location scope |
dynamic_pricing_time_windows
| Column | Type | Description |
|---|---|---|
rule_id | UUID | Links to parent rule |
start_time | Time | Start of window |
end_time | Time | End of window |
days_of_week | Integer[] | Array of day numbers (0=Sunday) |
Troubleshooting
Rule Not Applying
- Verify the rule's Active status
- Check the time window matches current time (account for timezone)
- Confirm days of week include today
- Verify vehicle model targeting is correct or set to all
- Check rule priority isn't being overridden
Incorrect Adjustment Amount
- Confirm you're using the right adjustment type (percent vs multiplier)
- Verify the value is entered correctly (25 for 25%, not 0.25)
- Check if multiple rules are stacking unexpectedly
- Review the applied rules in ride details
Rules Conflicting
- Review priority numbers
- Adjust priorities to ensure correct execution order
- Consider consolidating similar rules
- Use vehicle model targeting to separate concerns
Dynamic Pricing Configured
With dynamic pricing in place, your pricing will automatically adjust based on conditions. Monitor your revenue metrics to fine-tune rules and maximize profitability while maintaining customer satisfaction.