CRM migration

Migrate from Road Runner to HighLevel

Field-level mapping, validation, and rollback between Road Runner and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.

Road Runner logo

Road Runner

Source

HighLevel

Destination

HighLevel logo

Compatibility

100%

11 of 11

objects map 1:1 between Road Runner and HighLevel.

Complexity

BStandard

Timeline

5–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Road Runner is an FTC robotics trajectory library built in Kotlin for Android Studio that stores trajectories, poses, motion profiles, and action-builder sequences as structured data. HighLevel is an all-in-one CRM, marketing automation, and workflow platform built for agencies and service businesses that stores contacts, companies, opportunities, custom objects, and workflow triggers. The two systems share no native data-model overlap — Road Runner configurations are trajectory-centric while HighLevel is contact-centric — which makes the migration a re-architecture problem, not a direct field-for-field translation. We map Road Runner trajectory metadata, pose data, and action-builder sequences into HighLevel custom objects with custom fields so the historical configuration context is preserved. Road Runner motion profiles (velocity constraints, acceleration limits) and trajectory sequences require custom-field storage in HighLevel because HighLevel's native objects are not designed to hold robotics motion data. We run the migration via HighLevel's API using authenticated bulk operations, with a scoped-read connector to Road Runner's JSON export format. Workflows, sequences, and automation triggers do not transfer — they must be rebuilt in HighLevel's Workflow builder. Activity history (pose adjustments, trajectory edits) migrates as task notes with original timestamps preserved. The delta-pickup window captures any Road Runner configuration changes made during the cutover window.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Road Runner logo

Road Runner

What's pushing teams away

  • Not applicable — there is no platform at this URL to leave. Road Runner Sports is a retailer; visitors leave the site when they finish shopping.
  • If the catalog intended the PHP RoadRunner server, customers migrate off RoadRunner v1 to RoadRunner v2 due to breaking API changes, or migrate to alternative PHP servers (FrankenPHP, Swoole, ReactPHP) for simpler operational profiles.

Choosing

HighLevel logo

HighLevel

What's pulling them in

  • Agencies choose HighLevel to consolidate CRM, email, SMS, scheduling, and funnels into one subscription, eliminating monthly bills for five to ten separate SaaS tools they previously stitched together.
  • The flat-rate pricing model bills per sub-account rather than per contact, so growing a contact database from 1,000 to 100,000 records does not trigger a billing surprise—a common pain point avoided by migrating customers.
  • White-label and sub-account capabilities let agencies resell HighLevel access to their own clients, turning a software cost center into a recurring revenue stream that justifies the subscription.
  • The platform ships a 14-day free trial with no credit card required, giving teams a low-friction entry point to validate fit before committing to the $97/month Starter tier.
  • Marketing agencies managing multiple client accounts use sub-accounts to maintain data isolation per client while operating under a single agency billing relationship with HighLevel.

Object mapping

How Road Runner objects map to HighLevel

Each row shows how a Road Runner object lands in HighLevel, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Road Runner

Trajectory

maps to

HighLevel

Custom Object: Trajectory

1:1
Fully supported

Road Runner trajectories (TrajectoryActionBuilder sequences) map to a HighLevel custom object named Trajectory. Each trajectory's name, waypoints, and start/end poses are stored as separate custom fields within this object. The associated opmode reference is preserved as a text field so you can trace which program uses each trajectory. Custom field types include text for the trajectory name and opmode reference, numeric fields for waypoint count, and datetime fields for original creation timestamps.

Road Runner

Pose2d / Pose3d

maps to

HighLevel

Custom Object: Pose

1:1
Fully supported

Road Runner Pose2d coordinates (x, y, heading) and Pose3d (with z) are decomposed into separate numeric custom fields in a HighLevel Pose custom object. Each Pose links back to its parent Trajectory via a lookup relationship. Heading values are stored in degrees.

Road Runner

MotionProfile

maps to

HighLevel

Custom Object: Motion Profile

1:1
Fully supported

Road Runner MotionProfile constraints including max velocity, max acceleration, and max angular velocity are stored as individual numeric custom fields within a HighLevel Motion Profile custom object. Each Motion Profile record establishes a lookup relationship to the Trajectory records that reference it, preserving the constraint-to-trajectory association in the target system.

Road Runner

TrajectorySequence

maps to

HighLevel

Custom Object: Trajectory Sequence

1:1
Fully supported

Road Runner TrajectorySequence objects (multi-trajectory sequences chained together) are stored as a HighLevel custom object. The sequence is represented as a JSON-serialized list of trajectory references stored in a custom long-text field, with step order preserved as an integer field.

Road Runner

Action (OpMode trigger)

maps to

HighLevel

Task

1:1
Fully supported

Road Runner action-builder actions tied to opmode lifecycle events are translated into HighLevel Tasks. The action name becomes the task subject; the triggering opmode name is stored in the task description. Task due dates are inferred from the opmode schedule if present in the source.

Road Runner

DriveConstants / Feedforward constants

maps to

HighLevel

Custom Object: Drive Constants

1:1
Fully supported

Road Runner drive constants (wheel constants, feedforward gains, sensor calibration values) are stored as a HighLevel custom object with multiple numeric fields. HighLevel does not have a native equivalent — custom fields are required. These are linked to the relevant robot profile record.

Road Runner

Opmode

maps to

HighLevel

Opportunity

1:1
Fully supported

Road Runner opmode files (autonomous/teleop programs) are treated as a high-level operational unit and mapped to HighLevel Opportunities. The opmode name becomes the Opportunity name; the opmode type (auto vs. teleop) maps to the Opportunity stage. Pipeline stages in HighLevel represent opmode categories.

Road Runner

RobotConfig / RobotProfile

maps to

HighLevel

Company

1:1
Fully supported

Road Runner robot configurations (hardware definitions, motor assignments, sensor mappings) are treated as organizational units and mapped to HighLevel Companies. The robot name becomes the Company name; motor count and sensor count are stored as custom fields on the Company record.

Road Runner

Team / Repository owner

maps to

HighLevel

User / Contact

1:1
Fully supported

Road Runner's git repository owner and team contributors are mapped to HighLevel Users by email match. Contributors without a HighLevel user account are stored as Contacts with a custom field indicating their repository role. This enables ownership attribution on trajectory records.

Road Runner

Trajectory revision history

maps to

HighLevel

Note / Activity

1:1
Fully supported

Git-based trajectory revision history (commit messages, timestamps, author) is translated into HighLevel activity notes on the relevant Trajectory custom object. Each revision becomes a separate Note record with the git commit message as the body and the commit timestamp as the note date.

Road Runner

Tags / Labels

maps to

HighLevel

Tag

1:1
Fully supported

Road Runner trajectory tags identifying robot type, competition class, and tuning status are mapped directly to HighLevel Tags applied to the Trajectory custom object. Tag labels are preserved verbatim during migration so filtering, segmentation, and reporting in HighLevel function immediately after cutover without requiring manual re-tagging.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Road Runner logo

Road Runner gotchas

High

No public REST API for FSM record export

High

v1-to-v2 API rewrite requires complete config migration

Medium

Per-installation KV namespace schema varies

Medium

Bulk export not supported — we read incrementally

Low

Attachment and media files are external to RoadRunner

HighLevel logo

HighLevel gotchas

High

Sub-account architecture creates isolated data silos per client

High

Usage-based telecom and AI costs are not in the subscription price

Medium

Workflows have no native equivalent in most destination CRMs

Medium

API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account

Low

White-label configuration and branding assets do not export via API

Pair-specific challenges

  • Trajectory-to-workflow translation requires complete manual rebuild

    Road Runner trajectory sequences are defined as Kotlin code using TrajectoryActionBuilder and action-builder chains. HighLevel's Workflow builder operates on CRM events (contact created, opportunity stage changed, form submitted) and has no native trigger for trajectory execution. The migration carries trajectory metadata into HighLevel custom objects, but the automated execution logic cannot be translated automatically. Teams must rebuild trajectory scheduling logic as HighLevel Workflow triggers paired with API calls or third-party robotics control integrations. This is a high-severity limitation because any automated opmode scheduling logic built in Road Runner will be lost without manual rebuild.

  • MotionProfile constraints map only as static values, not as active constraints

    Road Runner MotionProfile velocity and acceleration constraints are enforced at trajectory-generation time by the TrajectoryBuilder library. When these values are stored as HighLevel custom fields, they become passive reference data — HighLevel does not enforce or apply them during any operation. Teams using HighLevel's custom objects to track motion-profile settings must manually apply those values when generating new trajectories. This is a medium-severity limitation that requires a documented process note in the HighLevel instance to prevent configuration drift.

  • Git revision history collapses into linear notes with no branch context

    Road Runner trajectory revision history is stored in git with branch, merge, and commit-graph structure. HighLevel's activity timeline is linear — each Note is a discrete entry with no parent-child relationship between revisions. We preserve commit messages and timestamps as individual Note records, but git branch names, merge commits, and the full commit graph are not representable in HighLevel. Teams relying on git branch context for trajectory versioning should export the full git repository separately and link to it from the Trajectory custom object.

  • Pose mapping requires pre-migration validation of coordinate system conventions

    Road Runner uses a field-coordinate system (x, y in inches or meters, heading in radians or degrees) that is specific to the FTC field layout. HighLevel has no native coordinate field type — poses must be stored as separate numeric custom fields. Coordinate system conventions (units, zero heading direction, clockwise vs. counterclockwise) must be agreed upon before migration because HighLevel will not validate them. Incorrect convention alignment leads to trajectories that look correct in HighLevel but execute incorrectly on the robot.

  • Sub-account scoping in HighLevel affects data isolation for multi-team setups

    HighLevel's sub-account model is designed for agencies managing multiple client workspaces. Road Runner teams using a single shared repository may expect all trajectories to appear in one HighLevel workspace. If teams need sub-account isolation (each FTC team as a separate sub-account), the migration must route trajectories to the correct sub-account during the import, which requires pre-migration sub-account provisioning. HighLevel's API rate limits (200,000 requests/day per sub-account) apply independently per sub-account, which is typically sufficient but must be validated for high-volume imports.

Migration approach

Six steps for a successful Road Runner to HighLevel data migration

  1. Extract and audit Road Runner project structure

    FlitStack AI ingests the Road Runner project directory via JSON export, identifying all Trajectory, TrajectorySequence, MotionProfile, DriveConstants, and action-builder files. We catalog each record type, count trajectory instances, and flag custom MotionProfile constraints, Pose3d usage, and multi-sequence TrajectorySequences. The audit output is a migration plan that lists every object that will enter HighLevel, the custom fields required for each, and the relationship topology (which trajectories reference which motion profiles).

  2. Create HighLevel custom objects and fields

    Before any data moves, FlitStack creates the Trajectory, Pose, Motion Profile, Trajectory Sequence, and Drive Constants custom objects in the destination HighLevel sub-account, along with all required custom fields (numeric fields for pose coordinates, long-text fields for JSON-serialized sequences, datetime fields for original timestamps). We validate that each custom object relationship is correctly configured so that HighLevel Workflows can reference them. This step requires HighLevel admin credentials to create the schema.

  3. Map drive constants and team contributors by email

    Drive constants (wheel radius, gear ratio, motor RPM) are mapped into the Drive Constants custom object. Road Runner repository contributors are resolved against HighLevel users by email match — any contributor without a HighLevel account is flagged and stored as a Contact with a custom repository-role field so ownership attribution is preserved on migrated Trajectory records. Unmatched contributors do not block migration; they are queued for manual assignment post-migration.

  4. Run sample migration with field-level diff on trajectories, poses, and motion profiles

    A representative sample migrates first — typically 50–200 records spanning the most complex TrajectorySequence chains, a MotionProfile with non-default velocity and acceleration constraints, and several Opmode-linked Trajectories representing both autonomous and teleop modes. We generate a field-level diff comparing source JSON values against the resulting HighLevel custom-object records, enabling you to verify pose coordinate accuracy, motion-profile constraint values, and opmode-to-opportunity stage mapping before the full migration run commits data to the production HighLevel instance.

  5. Execute full migration with delta-pickup cutover

    The full migration ingests all remaining trajectories, motion profiles, action records, and git revision history. A delta-pickup window (typically 24–48 hours) captures any Road Runner configuration files modified during the cutover so HighLevel reflects the final repository state at go-live. Audit logs capture every operation; one-click rollback is available if reconciliation fails. Post-migration, you receive a summary report showing record counts per object, any fields that failed validation, and the list of unmatched contributors requiring manual assignment.

Platform deep dives

Context on both ends of the pair

Road Runner logo

Road Runner

Source

Strengths

  • Plugin-based architecture means FSM data lives in configurable storage backends, giving migration flexibility.
  • Native Temporal and Jobs support for background task queue migrations.
  • OpenTelemetry integration allows tracing data to be preserved during migration.
  • Distributed locks and health-check plugins give visibility into runtime state that helps us validate migration integrity.
  • Centrifuge websocket support enables real-time notification migration to destination platforms.

Weaknesses

  • No documented public REST API for standard CRM or FSM record types — all data lives in opaque plugin-specific storage.
  • FSM objects like Work Orders and Technicians have no native schema; they are custom KV namespaces that vary per installation.
  • No documented rate limit or bulk API — migration pacing must be negotiated per deployment.
  • RoadRunner v1-to-v2 migration has breaking changes across tuning, configuration, and API endpoints.
  • Road Runner Sports (roadrunnersports.com) usage suggests a heavily customised per-installation fork, making generic migration tooling unreliable.
HighLevel logo

HighLevel

Destination

Strengths

  • Consolidates CRM, marketing automation, email, SMS, scheduling, and funnels into one platform at a predictable flat monthly rate.
  • Supports unlimited contacts and unlimited users on all paid tiers, removing per-record billing anxiety as databases grow.
  • Offers white-label and sub-account capabilities that let agencies resell access and manage multiple client environments under one billing relationship.
  • Includes built-in review management, reputation monitoring, and AI agents as native features rather than third-party add-ons.
  • Exports Contacts and Companies via a scalable async bulk CSV system that handles multi-million-row datasets without blocking the UI.

Weaknesses

  • The breadth of features creates a steep learning curve; advanced automations and Workflow configuration require significant time investment that smaller teams may not recover.
  • The platform charges usage-based fees for telecommunications and AI features that are not included in the base subscription, leading to bill surprises.
  • Recurring user reports on Reddit and G2 describe bugs, errors, and slow support response times that disrupt live marketing and sales operations.
  • Sub-account architecture, while powerful for agencies, adds migration complexity when identifying which client data lives in which isolated environment.
  • The platform is designed for agencies and SMBs; larger enterprises requiring deep reporting, custom objects at scale, or complex role-based access may outgrow its capabilities.

Complexity grading

How hard is this migration?

Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Road Runner and HighLevel.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Road Runner: Not applicable.

  • Data volume sensitivity

    B

    Road Runner doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Road Runner to HighLevel migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Road Runner to HighLevel data migrations

Answers to the questions buyers ask most during Road Runner to HighLevel migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Road Runner to HighLevel migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Road Runner-to-HighLevel migrations complete in 5–10 business days for configurations with fewer than 5,000 trajectory records and standard motion profiles. Complex setups with multiple TrajectorySequences, Pose3d coordinates, non-default DriveConstants, and sub-account routing extend to 3–4 weeks. The longest planning step is custom-object schema setup in HighLevel and validating pose coordinate conventions before field mapping begins. Additional time may be required if coordinate system alignment requires extensive stakeholder review.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Road Runner.
Land in HighLevel, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day