My Optimized Route

Help Center

Everything you need to get your deliveries running smoothly.

Getting Started

Portal overview

  • Routes: Build routes, import a route via CSV or ecommerce integration, view active and past routes, and monitor driver progress.
  • Drivers: Add, edit, and deactivate driver accounts.
  • Address Library: Manage your customer list. Add manually or import via CSV.
  • Analytics: View delivery performance, driver compliance, stop counts, and trends over time.
  • Settings: Configure branding, notifications, POD defaults, customer tracking preferences, billing, integrations, and API access.
  • Billing: View your current plan, usage, and manage your subscription.
  • Support: Submit and track support tickets.

What is My Optimized Route?

My Optimized Route (MOR) is a delivery management platform for small and mid-sized businesses. It handles route building, driver dispatch, real-time tracking, customer notifications, and proof of delivery, all in one place. Dispatchers manage everything from the client portal. Drivers use the driver portal on their phone to work through their stops.

How stop-based pricing works

Pricing is based on stops per month, not drivers or routes. Your plan includes a monthly stop allowance that resets on the 1st of each month. Drivers and admins are unlimited on every plan. If you need to deliver 200 stops this month and 80 next month, you only pay for what you use against your plan limit.

  • Free: 150 stops/month
  • Starter: 500 stops/month
  • Pro: 1,200 stops/month
  • Enterprise: Unlimited stops

How to add a driver

  1. Go to Drivers in the top navigation.
  2. Click Add Driver.
  3. Enter the driver's name, email address, and phone number.
  4. Click Save. The driver receives an invitation email with a link to set up their account.

There are no driver limits on any plan. Add as many as your operation needs.

How to add customers to your Address Library

The Address Library is your customer list. You can add customers in two ways:

  • Manually: Go to Address Library and click Add Address. Enter the customer's name, address, and contact details.
  • CSV import: Upload a spreadsheet with your customer list. Required fields: first_name, last_name, address, city, state, zip. Download sample CSV.

Each customer record stores their default POD preferences (signature required, can leave at door) and SMS consent status.

Still need help? Submit a support ticket.

Building a Route

Step 1: Set date and driver

Go to Routes → New Route. Select the delivery date and assign a driver from the dropdown. Click Next to continue.

Step 2: Select stops

Search or browse your Address Library. Check the box next to a customer to add them as a stop. Each stop card shows:

  • Signature: Whether a signature is required on delivery.
  • Can Leave at Door: Whether the driver may leave the package without a recipient present.
  • Deliverables: A note to the driver about what's being delivered (e.g. "2x dog food, 1x treat bag").
  • Notes: Any special driver instructions for this stop.
  • Delivery Window: Optional start and end time for when the stop should be completed.
  • Customer Delivery Tracking: Send the customer a live tracking link so they can follow their delivery in real time. The default state is configurable in Settings → Customer Delivery Tracking Default.

Default values for signature and leave at door are pre-filled from your Settings → Route Defaults. You can override any setting per stop before pushing the route.

Stop cards show address verification status. Unverified addresses can be verified before pushing the route by clicking the Verify button. If an address cannot be verified, a correction modal opens with Google Maps autocomplete to help find the correct address.

Adding a stop by GPS coordinates

If a delivery location doesn't have a standard street address, you can add a stop using exact GPS coordinates. In the Quick Add modal, click 📍 Paste Coordinates, paste a latitude/longitude pair (e.g. from Google Maps), and click Look Up. We'll reverse-geocode the location and add it as a stop. Useful for loading docks, parks, marinas, and other locations that don't appear in standard address databases.

Step 3: Review stop order

Stops are listed in the order they were added. Drag and drop rows to reorder them manually. If you'd like the driver to be able to re-sequence stops using route optimization, leave Allow driver to optimize route toggled on. If you want stops delivered in exactly the order shown, turn it off.

Step 4: Push the route

Click Confirm & Push. The route is created and immediately visible to the assigned driver in their portal. You'll be taken to the route detail page where you can monitor progress.

Note: Once the driver clicks Start Route in the driver portal, the route becomes active and can no longer be edited. You can cancel an active route from the route detail page if needed.

Locking a route

By default, drivers can re-optimize their remaining stops at any time during a route. If you want stops delivered in a specific order without any re-sequencing, you can lock the route order when building it. Turn off Allow driver to optimize route on the review screen before pushing the route. Locked routes are delivered in exactly the order shown, regardless of traffic or driver preference.

Still need help? Submit a support ticket.

CSV Route Import

What it is and when to use it

The CSV Route Import lets you build a complete delivery route from a spreadsheet in a few simple steps. Download the sample CSV to get started, fill in your stops, upload, review and reorder as needed, and build the route. Access it via Routes > Import > CSV in the client portal navigation.

Download the sample CSV

To get started quickly, download the sample file and use it as a template:

Download sample-csv-route-v3.csv

The sample includes all supported columns with example data so you can see the expected format before building your own file.

Supported columns

The following columns are supported. Column headers must match exactly (lowercase, underscores).

Required

  • first_name
  • last_name
  • address
  • city
  • state
  • zip

Optional

  • address2 — apartment, suite, or unit number
  • phone — used for SMS delivery notifications
  • email
  • signature_required — Yes/No or 1/0
  • can_leave_at_door — Yes/No or 1/0
  • deliverables — note to the driver about what is being delivered
  • notes — any special driver instructions for the stop
  • delivery_window_start — earliest acceptable arrival time (HH:MM or H:MM AM/PM)
  • delivery_window_end — latest acceptable arrival time (HH:MM or H:MM AM/PM)

Note: Suppress notifications is available as a per-stop checkbox on the review screen but is not a CSV column.

How address matching works

When you upload a CSV, each stop is matched against your Address Library. The matching rules are:

  • Name and address match (active record): The existing customer record is reused. No new address slot is consumed.
  • Name and address match (hidden record): The record is reactivated automatically when the route is built. No new address slot is consumed.
  • Address match with a different name: A new customer record is created and one address slot is consumed.
  • No match: A new customer record is created and one address slot is consumed.

If the number of net new addresses from your CSV would exceed your plan's address limit, the import is blocked before the review screen. The error message shows how many slots are available and how many are needed.

Review screen

After uploading, you land on the review screen before anything is saved. On this screen you can:

  • Reorder stops by dragging and dropping the rows.
  • Verify addresses: Addresses are checked against the geocode cache on upload. Unverified addresses are flagged with a red Address Unverified badge. Click Verify to geocode, or use the correction modal with Google Maps autocomplete if the address cannot be found.
  • Override per-stop settings including signature required, can leave at door, deliverables, notes, delivery window, and suppress notifications.
  • See a New badge on stops that will create a new address library entry, and a Reactivate badge on stops that match a hidden record.

No records are created until you click Build Route. You can go back and re-upload if you need to make changes to the CSV itself.

SMS consent on build

If any stop in your CSV has a phone number, a consent confirmation modal appears when you click Build Route. This confirms that you have consent to send SMS delivery notifications to the recipients. You can proceed or cancel and remove phone numbers if needed.

Still need help? Submit a support ticket.

Delivery Windows

What a delivery window is

A delivery window sets an expected arrival range for a specific stop. When a window is set, the driver sees it directly on their stop card. After delivery, MOR records whether the stop was completed on time. Use delivery windows when a customer has requested a specific time range or when you want to track on-time performance across your operation. Routes can be manually reordered according to their delivery window.

Setting a window during manual route creation

When building a route, each stop card includes optional Window Start and Window End time fields. Enter times using the time pickers or type directly in HH:MM format. The end time must be after the start time. If you set a start but no end, or vice versa, the route builder will show a validation error and prevent submission until both fields are filled or both are cleared.

Setting a window via CSV import

Include delivery_window_start and delivery_window_end columns in your CSV. Accepted formats:

  • 14:30 or 09:00 (24-hour HH:MM)
  • 2:30 PM or 9:00 AM (12-hour with AM/PM)

Both fields are optional. If you include one you should include the other. Windows can also be added or adjusted on the CSV review screen before building the route.

How the window appears to the driver

When a delivery window is set on a stop, the expected arrival range is shown directly on the driver's stop card in the driver portal. The driver sees the window before starting the stop so they know the target time without checking any other system.

Window compliance in analytics

The Analytics dashboard tracks on-time delivery rate for stops that have a delivery window set. The driver performance table shows per-driver window compliance so you can see which drivers consistently hit their windows and which may need attention.

Window data in the delivery history export

The CSV export from Routes > Deliveries includes three window-related columns:

  • Window Start — the scheduled start of the delivery window
  • Window End — the scheduled end of the delivery window
  • Window Status — On Time or Late for delivered stops that had a window set; blank if no window was set or the stop was not completed
Still need help? Submit a support ticket.

Managing Drivers

Adding a driver

  1. Go to Drivers in the top navigation.
  2. Click Add Driver.
  3. Enter the driver's name, email, and phone number.
  4. Click Save. The driver receives an invitation email with their login credentials.

Resetting a driver password

Go to Drivers, find the driver, and click Edit. Use the Change Password section to set a new password for them directly.

Drivers can also reset their own password from the login page using "Forgot password?"

Driver limits

There are no driver limits on any plan. Add as many drivers as your operation requires at no extra cost.

Deactivating a driver

Go to Drivers, find the driver, and click Edit. Toggle the driver's status to Inactive. Deactivated drivers cannot log in or be assigned to new routes. Their historical delivery data is preserved.

Still need help? Submit a support ticket.

Driver Portal

Accessing the driver portal

Drivers log in at myoptimizedroute.com using the credentials from their invitation email. The portal runs in any smartphone browser. No app download required. Drivers can bookmark the login page for quick access.

Working through a route

After logging in, drivers see a list of their routes for today. Tapping a route opens the stop list. Before starting, the driver can tap Optimize Route to automatically sequence their stops for maximum efficiency. MOR uses the Google Maps routing engine to calculate the fastest stop order based on current traffic conditions, distance, and road data. Route optimization can be run at any time during a route to re-sequence remaining stops if conditions change. Note: If the dispatcher locked the route order when building it, the optimize button will not be available.

For each stop, the driver can:

  • Tap Start Driving to mark the stop as En Route.
  • Tap Mark Arrived when they reach the address.
  • Complete the delivery by capturing proof of delivery.
  • Mark a stop Undeliverable if the delivery cannot be completed.

Only one stop can be active (En Route) at a time. Other stops' Start Driving buttons are disabled until the current stop is completed or reset.

Signature required

If a stop has Signature Required enabled, the driver must collect a signature before the stop can be marked delivered. If no one is available to sign, the driver must mark the stop as Undeliverable (failed).

Can Leave at Door

The Can Leave at Door option only appears to the driver if the dispatcher has enabled it for that stop. When enabled, the driver can take a photo and mark the stop delivered without requiring a recipient to be present.

GPS tracking

The driver portal posts GPS location every 15 seconds while a route is active. Dispatchers can see the driver's current position on the Routes → Monitor page and the individual route detail page.

Location history is retained based on your plan and then automatically deleted:

  • Free: 7 days
  • Starter: 30 days
  • Pro: 90 days
  • Enterprise: 365 days
Still need help? Submit a support ticket.

Proof of Delivery

POD options

MOR supports three types of proof of delivery:

  • Photo: Driver takes a photo at the delivery location. Available when "Can Leave at Door" is enabled for the stop.
  • Signature: Customer signs on the driver's phone screen. Required when "Signature Required" is enabled for the stop.
  • Manual confirmation: Driver selects a completion reason (e.g. "Handed to customer", "Left with reception"). Used when neither photo nor signature is required.

Setting POD defaults

Go to Settings → Route Defaults to configure the default POD behavior applied to every stop when building a route:

  • Signature: "Always required" pre-selects Yes on every stop card. "Not required" pre-selects No.
  • Leave at door: "Always allowed" pre-selects Yes on every stop card. "Not allowed" pre-selects No.

Dispatchers can override any default per stop when building a route. Individual customer preferences set in the Address Library also carry through automatically.

QR code delivery confirmation

Every stop includes a QR code. Drivers with a mounted tablet can scan the QR code with their phone to complete the delivery at the door without handling the tablet at each stop. No extra configuration needed.

Viewing POD records

POD submissions are visible on the Route Detail page for each stop. All delivery records including POD data can be exported to CSV from the Deliveries report.

Still need help? Submit a support ticket.

Customer Delivery Tracking

What customer tracking is

Customer tracking gives each delivery stop a unique, shareable link. When a customer opens the link, they see their delivery status, a live map showing the driver's approximate location, and an estimated arrival window. The page refreshes automatically every 30 seconds while the route is active. No app download required, it works in any browser on any device.

How to enable tracking

  1. Go to Settings → Customer Delivery Tracking Default.
  2. Toggle Include tracking links by default on. This pre-checks the tracking checkbox on every stop when building a route.
  3. Optionally adjust the Average time per stop field. This is used to calculate the estimated arrival window and should reflect your typical time spent at each stop. Default is 5 minutes — increase it for longer deliveries such as furniture or appliance drops.
  4. Click Save.

Per-stop tracking control

Each stop card in the route builder, CSV import, and instant dispatch includes an Include tracking link checkbox. This lets dispatchers enable or disable tracking on individual stops regardless of the account default. For example, you may want to disable tracking for a business delivery while keeping it on for residential stops on the same route.

How tracking links are delivered to customers

When SMS or email notifications are enabled, the tracking link is automatically included in the notification message. Customers receive the link when the route starts or when the driver is on the way. The link is not included in the final "delivered" or "failed delivery" notifications.

You can also copy the tracking link manually from the route detail page and share it however you like.

What the customer sees

When a customer opens their tracking link, they see:

  • Delivery status: Scheduled, Driver is on the way, Driver has arrived, Delivered, or Delivery attempted.
  • Stop progress: Which stop number this is out of the total stops on the route.
  • Estimated arrival: A time window calculated from the driver's current location to the customer's address, plus buffer time for any stops in between.
  • Driver location map: An approximate driver location shown on a map. The location is intentionally offset by about a quarter mile for privacy — customers can see the driver is nearby without seeing their exact position.
  • Driver name: The first name of the assigned driver.

Privacy and security

Tracking links do not require a login and are safe to share via SMS or email. Each link is a unique random token with no connection to customer names, addresses, or account information. The driver's GPS location is intentionally fuzzed — the map shows the driver within approximately a quarter mile of their actual position, never the exact location. Tracking links expire automatically at the end of the day following the route date. After that, the link returns an unavailable message.

Still need help? Submit a support ticket.

Regulated Deliveries

What regulated delivery support is

MOR includes a verification module built for delivery verticals that require identity or age checks at the door. The module captures recipient ID details, runs an age check on the server, and writes an encrypted audit row that you can review later from the Compliance dashboard. Personal information from rejected attempts is never persisted.

MOR supports a variety of regulated delivery industries, including cannabis, alcohol, and vape and tobacco. Contact support so we can map your specific compliance needs onto the module.

My Optimized Route provides operational tools for regulated delivery, including scanning the barcode (PDF417) on the recipient's ID, identity and age verification, and an encrypted audit trail. Compliance with state, federal, and local regulations governing your industry, including licensing, reporting, record retention, and operational practices, is your responsibility as the licensee.

Turning on regulated delivery support

Regulated delivery support is available on the Pro and Enterprise tiers. Once your account is on a supporting tier, the configuration card appears in your settings.

  1. Go to Settings → Regulated Delivery. Cannabis is the currently live vertical inside this module.
  2. Toggle Enable regulated delivery mode on.
  3. Pick a default verification method. With Scan barcode of recipient ID (PDF417), the driver either scans the PDF417 barcode or enters the required fields manually; the recipient's data is encrypted and stored on the server, accessible only to tenant admins. With Driver attestation, the driver confirms the recipient is of legal age without storing personal data.
  4. Optionally toggle Signature Required on. When enabled, the driver also captures a recipient signature on the device screen as part of the verification, and submission is blocked until a signature is drawn. The signature is encrypted alongside the ID fields and revealed from the same Compliance dashboard row.
  5. Click Save.

Once the module is enabled, a Regulated Stop checkbox appears on every editable stop in the route builder, CSV import, instant dispatch, and route edit screens. Two nested checkboxes let you override the tenant default per stop: Scan barcode (PDF417) switches between attestation and scan capture, and Signature required toggles the signature pad on or off for that stop. The two are independent, so a stop can be attestation plus signature, scan plus signature, attestation only, or scan only. When a stop is marked as a regulated stop, the standard signature and leave-at-door options are hidden because handoff runs through the verification flow instead.

How the driver verifies a stop

When a driver arrives at a stop marked for regulated verification, they see one of two flows depending on the configuration. If the stop also requires a signature, a signature pad appears below the main fields and submission is blocked until the recipient signs.

ID capture

  • Tap Scan ID Barcode (PDF417) to capture the PDF417 barcode on the back of the recipient's ID with the device camera, or type the recipient's details by hand.
  • Enter the recipient's name, date of birth, and ID number. Confirm the recipient is present.
  • If signature is required for the stop, the recipient signs in the canvas below the fields.
  • Submit. The server runs the age check.
  • If the recipient is of legal age, the stop is marked verified and the encrypted record (ID fields plus signature when present) is saved.
  • If the recipient is underage, the stop auto-fails. The personal details and signature are discarded immediately and never written to disk. The audit row records that an attempt was made and whether the fields came from a barcode scan or manual entry.

Driver attestation

  • The driver confirms they verified the recipient's identity and that the recipient meets the legal and regulatory requirements to receive the delivery.
  • If signature is required for the stop, the recipient signs the canvas before the driver can submit. The signature is encrypted and stored.
  • If signature is not required, no personal data is captured or stored.

Explicit failure paths. If the recipient is not available or refuses to verify, the driver taps Can’t Complete on the stop card and picks a reason: no one home, wrong person, possible minor, recipient refused, or no valid ID. Failed rows never collect or store recipient details.

Reviewing verifications in the Compliance dashboard

Every verification attempt, successful or failed, is logged for review at Routes → Regulated Verifications. Each row shows:

  • Date, route, stop, and the driver who performed the verification. The driver name is captured at submit time and stays accurate even if the driver is later renamed or removed from your account.
  • Method badge: ID capture or Attestation.
  • Outcome: Verified or Failed.
  • Entry path: Barcode scan or Manual entry. This appears on rows where any ID data was captured, so you can see exactly how every attempt was made.
  • Failure reason where applicable.
  • A Reveal Details button on any verified row that captured ID fields, a signature, or both. Clicking it decrypts and displays the recipient's name, date of birth, and ID number when ID capture was used, plus the recipient signature image when one was collected. Every reveal is logged to a separate compliance audit table with a 7-year retention window.

Any tenant admin on your account can view this dashboard and reveal stored details. A separate compliance officer role is on the roadmap for operations that require separation of duties between dispatch and compliance review.

How recipient data is protected

Recipient identity data (ID fields and signature, when captured) is encrypted at rest using AES-256-GCM authenticated encryption. The encryption key is stored outside the database, so a database backup by itself cannot be used to read verification details.

Evaluate then discard. When the server processes a scan or manual entry, it runs the age check on the values in memory. If the recipient passes, the values (ID fields plus signature when collected) are encrypted and written to the verification record. If the recipient is underage, all of those values are dropped before any database write happens, including the signature. The audit row that records the failed attempt contains only the verification method, the entry path, the failure reason, and timestamps. It does not contain the recipient's name, date of birth, ID number, or signature.

Retention. Verification records are retained indefinitely. They are not affected by the standard route and delivery retention window that auto-purges older route data on a per-plan schedule. If your jurisdiction requires explicit deletion of verification records after a specific window, contact support.

Still need help? Submit a support ticket.

WooCommerce Integration

Overview

MOR connects directly to your WooCommerce store and pulls orders in. No CSV exports, no copy-paste. Once connected, you can send orders to MOR with a single click from the WooCommerce Orders screen.

How to connect

  1. In WooCommerce, go to Settings → Advanced → REST API and generate a new key with Read/Write permissions. Copy the Consumer Key and Consumer Secret.
  2. In MOR, go to Settings → Integrations → WooCommerce.
  3. Enter your WooCommerce store URL, Consumer Key, and Consumer Secret. Click Save.

Installing the MOR WordPress plugin

Contact support to request the installation file and setup instructions.

Sending orders to MOR

Once the MOR WordPress plugin is installed, sending orders to MOR takes a few seconds.

  1. In WordPress, go to WooCommerce → Orders.
  2. Select the orders you want to send using the checkboxes.
  3. Open the Bulk Actions dropdown and select Send to My Optimized Route.
  4. Click Apply. Orders appear in MOR immediately and are ready to add to a route.

WooCommerce Route Import

Once your WooCommerce integration is connected, orders pushed from your store appear in Routes → Import → Imported Orders. This lets you build delivery routes directly from your orders.

Step 1: Review imported orders

Orders appear with their delivery address and verification status. A green Address Verified badge means the address is ready to route. Click Verify to geocode an unverified address, or Edit to correct it before verifying.

Step 2: Select orders and assign

Check the orders you want to include in the route. Select a delivery date and driver, then click Next.

Step 3: Arrange stops and build

Drag and drop to set the stop order. Set POD requirements, delivery window, driver notes, and customer tracking per stop if needed. Toggle route optimization, then click Build Route.

Order statuses

  • Unassigned: The order has been imported but is not yet on a route.
  • Assigned: The order is on a planned route that has not started yet.
  • En Route: The route is active and the driver is working through stops.

Orders disappear from the import builder once they are delivered or marked failed. If a route is cancelled, all its orders return to Unassigned automatically.

Status pushback

When a driver marks a stop Delivered, the WooCommerce order status is automatically updated to Completed. When a stop is marked Failed, the order is set to On Hold. This keeps your WooCommerce store in sync without any manual updates.

Customer email and SMS notifications

Imported orders are eligible for the same email and SMS delivery notifications as routes built any other way. When the customer's address and phone number flow in from WooCommerce, MOR treats placing the order as implied SMS consent, so notifications fire automatically based on your route defaults (route started, driver on the way, delivered, failed). Email always sends when an email address is on file. SMS sending depends on your plan and your tenant's SMS settings.

You can override the per-stop "Send SMS", "Send Email", and "Share tracking link" toggles while building the route if you don't want notifications on a given stop.

Still need help? Submit a support ticket.

Shopify Integration

Overview

MOR is an official Shopify app. Once installed, every order placed in your Shopify store syncs to MOR automatically through native webhooks. No exports, no copy-paste, no plugin to build. Orders shipped via Shopify's native Local Delivery method appear in the default Deliveries tab ready to route; all other orders land in an Unflagged tab so you can review and reclassify any that should also be routed.

How to connect

You can start the connection from either side. Both paths end with your Shopify store linked to your MOR tenant.

Option A: Install from the Shopify App Store

  1. Find My Optimized Route in the Shopify App Store and click Install.
  2. Approve the requested scopes on Shopify's authorization screen.
  3. Shopify sends you back to MOR. If you don't have a MOR account yet, one is provisioned for you on the spot. If you already have one signed in, the integration is linked to that tenant.

Option B: Connect from inside MOR

  1. In MOR, go to Settings → Integrations and click the Shopify tab.
  2. Enter your your-store.myshopify.com handle in the Connect Shopify form and submit.
  3. Shopify opens to ask you to approve the same scopes. After you approve, Shopify sends you back to MOR and the integration is live.

MOR uses Shopify's OAuth flow, so you never share your Shopify password or API keys. You can disconnect at any time from the Integrations page. To fully revoke MOR's access on Shopify's side, also uninstall the My Optimized Route app from your Shopify admin.

Which orders get imported

Every Shopify order with a shipping address syncs to MOR automatically the moment Shopify sends the webhook. Digital-only orders and in-store-pickup orders without a delivery address are skipped.

After an order syncs, MOR classifies it based on the shipping method on the order:

  • Shipped via Shopify's native Local Delivery method: appears in the default Deliveries tab on the Imported Orders page, ready to add to a route.
  • Any other shipping method: appears in the Unflagged tab. From there you can tick the orders that should also be routed and click Reclassify as Deliveries to bulk-move them into the Deliveries tab.

The classification looks at the order's shipping method (not order tags). To make orders land in Deliveries automatically, configure Local Delivery as a shipping option in Shopify and have customers select it at checkout.

Importing into a route

Imported Shopify orders appear in Routes → Import → Imported Orders alongside any WooCommerce and Square orders. The route-building flow is the same regardless of source.

Step 1: Review imported orders

Each row shows the source (a small Shopify tag), the customer-visible order number (e.g. #1003), the delivery address, and verification status. A green Address Verified badge means the address is ready to route. Click Verify to geocode an unverified address, or Edit to correct it before verifying.

Step 2: Select orders and assign

Check the orders you want to include in the route. Select a delivery date and driver, then click Next.

Step 3: Arrange stops and build

Drag and drop to set the stop order. Set POD requirements, delivery window, driver notes, and customer tracking per stop if needed. Toggle route optimization, then click Build Route.

Status pushback to Shopify

MOR pushes delivery progress back to your Shopify order in two ways:

  • When the driver starts driving toward the stop: MOR sets a Delivery Status metafield on the order to en_route. You can see this live on the Shopify order page.
  • When the driver marks the stop Delivered: MOR fires a Shopify fulfillmentCreate call so the order is marked Fulfilled in Shopify, and the Delivery Status metafield is updated to delivered.
  • When the driver marks the stop Failed: MOR does not change the order on the Shopify side. Shopify has no clean "unfulfill" path, and the MOR-side delivery record remains the source of truth for the failure reason. The Shopify order stays Unfulfilled.

Pushback is fire-and-forget. If Shopify is temporarily unreachable, the MOR-side delivery still completes normally and the Shopify side picks up on the next successful update.

Shopify's own shipping notification email

By default, MOR tells Shopify not to send its own shipping-notification email when the order is fulfilled, so your customer doesn't get duplicate messages alongside MOR's SMS and email notifications. If you'd rather have Shopify send the shipping email instead, go to Settings → Integrations → Shopify and turn on Send Shopify's shipping notification on fulfillment.

Customer email and SMS notifications

Shopify-imported orders are eligible for the same email and SMS delivery notifications as any other route. The customer email and phone number come from Shopify, and because the customer placed the order through your store MOR treats that as implied SMS consent. Notifications fire automatically based on your route defaults (route started, driver on the way, delivered, failed). Email always sends when an email address is on file. SMS sending depends on your plan and your tenant's SMS settings.

You can override the per-stop "Send SMS", "Send Email", and "Share tracking link" toggles while building the route if you don't want notifications on a given stop.

Billing through Shopify

If you signed up for MOR through the Shopify App Store, your subscription is billed by Shopify on your normal Shopify invoice using the Shopify Billing API. Plan changes (upgrades, downgrades, cancellation) go through Shopify's hosted approval modal directly from MOR's billing page. If you signed up at My Optimized Route first and then connected Shopify later, your subscription stays on the standard Stripe billing rail.

If a Shopify order can't be imported

If Shopify sends MOR an order it can't process (for example, no shipping address on file, or a malformed address), the order is flagged and surfaced at the top of the Imported Orders page so you can fix it or skip it. You'll also see a one-time notice in the nav the first time there's an issue to look at.

Still need help? Submit a support ticket.

Square Integration

Overview

MOR connects to your Square account and automatically imports orders that have a Delivery fulfillment. No exports, no copy-paste, no plugin to install. New delivery orders show up in MOR as soon as Square sends them.

How to connect

  1. In MOR, go to Settings → Integrations and click the Square POS tab.
  2. Click Connect Square. A new tab opens on Square's site asking you to sign in and authorize MOR.
  3. Once you approve, Square sends you back to MOR and the integration is live. Reload the Integrations page to confirm the connection status.

MOR uses Square's OAuth flow, so you never share your Square password or API keys. The connection refreshes itself in the background. You can disconnect at any time from the same tab.

Which orders get imported

MOR only imports Square orders that are set up as deliveries. Specifically, an order is imported when it has a fulfillment with type = DELIVERY and managed_delivery = false (meaning your business is handling the delivery, not a third party Square is routing it through). Pickup, dine-in, shipping, and Square-managed-delivery orders are skipped.

The customer's name, delivery address, phone, and email come straight from the Square order. If the address can't be geocoded automatically, the order appears in Imported Orders flagged for review so you can correct it before adding it to a route.

Importing into a route

Imported Square orders appear in Routes → Import → Imported Orders alongside any WooCommerce orders. The route-building flow is the same regardless of source.

Step 1: Review imported orders

Each row shows the source (a small Square tag), the delivery address, and verification status. A green Address Verified badge means the address is ready to route. Click Verify to geocode an unverified address, or Edit to correct it before verifying.

Step 2: Select orders and assign

Check the orders you want to include in the route. Select a delivery date and driver, then click Next.

Step 3: Arrange stops and build

Drag and drop to set the stop order. Set POD requirements, delivery window, driver notes, and customer tracking per stop if needed. Toggle route optimization, then click Build Route.

Status pushback to Square

When a driver marks a stop Delivered, MOR walks the Square order's delivery fulfillment through Square's state machine all the way to COMPLETED. When a stop is marked Failed, the fulfillment is moved to FAILED. Either way, the update is reflected in your Square dashboard automatically.

Pushback is fire-and-forget. If Square is temporarily unreachable, the MOR-side delivery still completes normally and the Square side picks up on the next successful update.

Customer email and SMS notifications

Square-imported orders are eligible for the same email and SMS delivery notifications as any other route. The customer email and phone number come from Square, and because the customer placed the order through your store MOR treats that as implied SMS consent. Notifications fire automatically based on your route defaults (route started, driver on the way, delivered, failed). Email always sends when an email address is on file. SMS sending depends on your plan and your tenant's SMS settings.

You can override the per-stop "Send SMS", "Send Email", and "Share tracking link" toggles while building the route if you don't want notifications on a given stop.

If a Square order can't be imported

If Square sends MOR an order it can't process (for example, a malformed address or a fulfillment type MOR doesn't support), the order is flagged and surfaced at the top of the Imported Orders page so you can fix it or skip it. You'll also see a one-time notice in the nav the first time there's an issue to look at.

Still need help? Submit a support ticket.

Billing & Plans

How billing works

MOR plans are billed monthly. Your billing date is the date you started your paid plan. Your monthly stop allowance resets on the 1st of each month regardless of your billing date.

There are no overage charges and no per-driver fees. If you reach your monthly stop limit, new route creation is paused until the 1st of the following month or until you upgrade your plan.

Free trial

Starter and Pro plans include a 14-day free trial. You will not be charged until the trial ends. Cancel any time before the trial period ends and you won't be billed.

Upgrading or changing your plan

Go to Settings → Billing to view your current plan and available options. Plan changes take effect immediately. When upgrading, your new stop limit applies right away.

Cancelling your subscription

Go to Settings → Billing → Cancel Subscription. Your account remains active and fully functional until the end of your current billing period. No data is deleted. You can resubscribe at any time.

Still need help? Submit a support ticket.

API Quick Start

API Documentation

The MOR REST API lets you integrate MOR with your own systems, automate route creation, manage customers, and update delivery statuses programmatically. For full API reference documentation including authentication, endpoints, request/response examples, and error codes, visit the API Documentation page.

Still need help? Submit a support ticket.