CRM migration
Field-level mapping, validation, and rollback between Road Runner and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
Road Runner
Source
HighLevel
Destination
Compatibility
11 of 11
objects map 1:1 between Road Runner and HighLevel.
Complexity
BStandard
Timeline
5–10 business days
Overview
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.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
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
HighLevel
Custom Object: Trajectory
1:1Road 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
HighLevel
Custom Object: Pose
1:1Road 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
HighLevel
Custom Object: Motion Profile
1:1Road 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
HighLevel
Custom Object: Trajectory Sequence
1:1Road 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)
HighLevel
Task
1:1Road 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
HighLevel
Custom Object: Drive Constants
1:1Road 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
HighLevel
Opportunity
1:1Road 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
HighLevel
Company
1:1Road 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
HighLevel
User / Contact
1:1Road 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
HighLevel
Note / Activity
1:1Git-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
HighLevel
Tag
1:1Road 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.
| Road Runner | HighLevel | Compatibility | |
|---|---|---|---|
| Trajectory | Custom Object: Trajectory1:1 | Fully supported | |
| Pose2d / Pose3d | Custom Object: Pose1:1 | Fully supported | |
| MotionProfile | Custom Object: Motion Profile1:1 | Fully supported | |
| TrajectorySequence | Custom Object: Trajectory Sequence1:1 | Fully supported | |
| Action (OpMode trigger) | Task1:1 | Fully supported | |
| DriveConstants / Feedforward constants | Custom Object: Drive Constants1:1 | Fully supported | |
| Opmode | Opportunity1:1 | Fully supported | |
| RobotConfig / RobotProfile | Company1:1 | Fully supported | |
| Team / Repository owner | User / Contact1:1 | Fully supported | |
| Trajectory revision history | Note / Activity1:1 | Fully supported | |
| Tags / Labels | Tag1:1 | Fully supported |
Gotchas + challenges
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 gotchas
No public REST API for FSM record export
v1-to-v2 API rewrite requires complete config migration
Per-installation KV namespace schema varies
Bulk export not supported — we read incrementally
Attachment and media files are external to RoadRunner
HighLevel gotchas
Sub-account architecture creates isolated data silos per client
Usage-based telecom and AI costs are not in the subscription price
Workflows have no native equivalent in most destination CRMs
API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account
White-label configuration and branding assets do not export via API
Pair-specific challenges
Migration approach
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).
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.
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.
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.
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
Road Runner
Source
Strengths
Weaknesses
HighLevel
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Road Runner and HighLevel.
Object compatibility
3 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Road Runner: Not applicable.
Data volume sensitivity
Road Runner doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Road Runner to HighLevel migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Road Runner
Other ways to arrive at HighLevel
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.