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
}'
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- Stable identifier used by the embed script (e.g., "eligibility", "upload-docs")name- Human-readable name for dashboardsindex- 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 keys- Description
Choose descriptive, stable identifiers like "business-info" rather than "step-1" so your tracking remains valid even if steps are reordered.
- 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.