Journeys
Journeys are the foundation of the Odyssey platform. A journey represents a multi-step process or workflow that users navigate through, such as a grant application, permit request, or onboarding flow. Odyssey tracks user behavior throughout these journeys to help you identify friction points and optimize completion rates.
What is a journey?
A journey is a defined sequence of steps that users move through to complete a task. Each journey has:
- A unique identifier (slug) within your organization
- A display name for human readability
- A collection of steps arranged in order
- Configuration for tracking and analytics
- Optional allowed origins for CORS security
Think of a journey as the blueprint for a form or workflow. Once defined, you can embed tracking into your actual application to collect behavioral data.
Journey lifecycle
1. Create the journey
First, create a journey by defining its basic properties and structure:
Create a journey
curl -X POST https://odysseylabs.ai/api/journeys/create \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"slug": "small-business-grant",
"displayName": "Small Business Grant Application",
"sourceSystem": "custom",
"allowedOrigins": ["https://grants.example.com"]
}'
2. Define steps
Add steps to your journey to represent each page or section:
Add a step
curl -X POST https://odysseylabs.ai/api/journeys/small-business-grant/steps \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"stepKey": "eligibility-check",
"name": "Eligibility Verification",
"stepType": "eligibility",
"index": 0,
"fieldCount": 5
}'
Step keys are derived from the form field id attribute. These must match the step keys exactly.
For example, if you have a step with the key eligibility, the form field must have the id attribute eligibility.
If steps are not configured correctly, the embed script will not collect event data. Step names can be chosen
freely—these serve only to identify the step in the dashboard and are not used for tracking.
It is highly recommended to enable debug mode during development and testing to verify the step keys are correct, or to use one of our automated step extraction tools in the dashboard to import your steps. Once you are satisfied with the configuration, you can disable debug mode.
3. Integrate the embed script
Add the Odyssey embed script to your application to start collecting analytics:
Embed script
<script
src="https://odysseylabs.ai/embed/v1.js"
data-org="your_org_slug"
data-journey="small-business-grant"
data-endpoint="https://odysseylabs.ai/api/ingest"
data-env="prod"
async
></script>
The embed script automatically tracks user behavior without blocking your page or collecting PII.
4. Monitor and optimize
Once data starts flowing, you can:
- View completion rates and drop-off points
- Analyze mobile vs desktop behavior
- Identify steps with high abandonment
- Track median time to completion
Journey configuration
Source systems
Journeys can originate from different sources:
custom- Journeys you build yourselfsimpliGov- Imported from SimpliGov platformunknown- Legacy or unspecified source
Environments
Separate production and staging data:
production- Live user datastaging- Testing and development
Allowed origins
For security, you can restrict which domains can send events to your journey:
{
"allowedOrigins": ["https://app.example.com", "https://staging.example.com"]
}
Events from other origins will be rejected. Leave empty to allow any origin (not recommended for production).
Step configuration
Steps are the individual pages or sections within a journey. Each step has:
Step identification
stepKey- Case-sensitive, stable identifier used by the embed script (e.g., "eligibility", "upload-docs"). Must match the form fieldidattribute exactly or it will not be tracked.name- Human-readable name for dashboards (can be chosen freely)index- Position in the journey sequence (0-based)
Step types
Classify steps by their purpose:
eligibility- Qualification or screening questionsupload- Document or file upload pagesreview- Summary or confirmation pagessubmit- Final submission pagesinformation- Informational or instructional pagesinput- Data entry formsselection- Choice or option selectionpayment- Payment processingsignature- Electronic signature pagesother- Miscellaneous step types
Field types
For form steps, specify the primary field type:
text_box,text_area- Text input fieldsradio_button,check_box,drop_down- Selection fieldsfile_upload,multi_upload- File handlingdatepicker- Date selectionsignature_field- Signature capture- And many more...
Complexity metrics (optional)
Track step complexity to understand user burden:
readingLevel- Grade level required to understand the contentfieldCount- Number of input fields on the steprequiredArtifacts- Number of documents needed
Event tracking
The embed script automatically collects these events:
Session events
session_start- User begins a new sessionsession_end- Session completes or times out
Navigation events
page_view- User views any pagestep_view- User enters a specific step
Interaction events
field_focus- User focuses on an input fieldfield_blur- User leaves an input fieldfield_change- User modifies field content
Validation events
validation_error- Form validation fails
Submission events
submit_attempt- User tries to submitsubmit_success- Submission succeeds
Analytics events
dropoff_signal- User shows abandonment behavior
The embed script never collects the actual values users enter - only behavioral signals like which fields they interact with and when.
Journey analytics
Once data is flowing, Odyssey provides rich analytics:
Health metrics
- Has steps configured
- Has recent events (last 24 hours)
- Session count
- Has simulation snapshots
Behavior metrics
- Completion rate - Percentage of sessions that finish
- Mobile rate - Percentage on mobile devices
- Median time to complete - Typical duration
- Top drop-off step - Where most users abandon
Event counts
Real-time counts by event type for the last 24 hours.
Unmapped steps
Steps that were configured but haven't received any events in the last 7 days (potential tracking issues).
Best practices
- Name
Use semantic step names- Description
Choose descriptive, stable names like "Business Information" rather than "step-1" so your tracking remains valid even if steps are reordered. Reordering steps is a key part of Odyssey's analytics and simulations, so it is important to use stable names for step identification.
- Name
Map all steps- Description
Ensure every page in your actual workflow has a corresponding step in Odyssey.
- Name
Set step types- Description
Accurate step types help with analysis and benchmarking.
- Name
Monitor regularly- Description
Check your journey analytics at least weekly to catch issues early.
- Name
Test in staging- Description
Use the staging environment to verify tracking before going live.