# AI search for people
Source: https://docs.rallyuxr.com/api-reference/ai/ai-search-for-people
https://api.rallyuxr.com/api/openapi post /ai/people/search
Search for people using a natural language prompt. Returns results and optional filter suggestions.
# Import activities
Source: https://docs.rallyuxr.com/api-reference/backfills/import-activities
https://api.rallyuxr.com/api/openapi post /activities/import
Imports activities into your workspace. If you'd like access to this route, please reach out to your Customer Success rep.
# Export consent submission for a person
Source: https://docs.rallyuxr.com/api-reference/consent-submissions/export-consent-submission-for-a-person
https://api.rallyuxr.com/api/openapi get /people/{personId}/consent-submissions/export
Returns a pre-signed S3 URL to download the consent submission PDF for a specific person.
The URL expires after 15 minutes.
# Export consent submissions for a study
Source: https://docs.rallyuxr.com/api-reference/consent-submissions/export-consent-submissions-for-a-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/consent-submissions/export
Initiates an export of consent submissions as a ZIP file containing PDFs for a specific study.
The export runs asynchronously. Use the returned export ID to check the status and download the file when complete.
# Get consent submission export status
Source: https://docs.rallyuxr.com/api-reference/consent-submissions/get-consent-submission-export-status
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/consent-submissions/export/{exportId}
Returns the status of a consent submission export job.
When the status is `COMPLETED`, the response includes a `downloadUrl` which is a pre-signed S3 URL that can be used to download the ZIP file directly via a GET request.
The URL expires after 5 minutes. Request a new export status to get a fresh URL if needed.
# Search submissions for a consent form
Source: https://docs.rallyuxr.com/api-reference/forms/search-submissions-for-a-consent-form
https://api.rallyuxr.com/api/openapi post /consent/{consentFormId}/submissions/search
Search submissions for a specific consent form. Returns submission data including person ID, submission source, and submission date.
# Search submissions for a signup form
Source: https://docs.rallyuxr.com/api-reference/forms/search-submissions-for-a-signup-form
https://api.rallyuxr.com/api/openapi post /signups/{signupFormId}/submissions/search
Search submissions for a specific signup form. Returns submission data including person ID, approval status, and submission date.
# Gets an import by id
Source: https://docs.rallyuxr.com/api-reference/imports/gets-an-import-by-id
https://api.rallyuxr.com/api/openapi get /imports/{importId}
# Cancel an incentive
Source: https://docs.rallyuxr.com/api-reference/incentives/cancel-an-incentive
https://api.rallyuxr.com/api/openapi post /incentives/{incentiveId}/cancel
Cancels an already-sent incentive. Provider-backed incentives are voided; custom incentives are marked canceled.
# Get a custom incentive by id
Source: https://docs.rallyuxr.com/api-reference/incentives/get-a-custom-incentive-by-id
https://api.rallyuxr.com/api/openapi get /incentives/custom/{customIncentiveId}
Gets a custom incentive by id
# Get an incentive by id
Source: https://docs.rallyuxr.com/api-reference/incentives/get-an-incentive-by-id
https://api.rallyuxr.com/api/openapi get /incentives/{incentiveId}
Gets an incentive by id
# Get paginated list of custom incentives
Source: https://docs.rallyuxr.com/api-reference/incentives/get-paginated-list-of-custom-incentives
https://api.rallyuxr.com/api/openapi get /incentives/custom
Gets all custom incentives in your workspace
# Get paginated list of incentives
Source: https://docs.rallyuxr.com/api-reference/incentives/get-paginated-list-of-incentives
https://api.rallyuxr.com/api/openapi post /incentives/search
Gets all incentives in your workspace
# List incentive IDs
Source: https://docs.rallyuxr.com/api-reference/incentives/list-incentive-ids
https://api.rallyuxr.com/api/openapi get /incentives
Returns a paginated list of incentive IDs in your workspace, optionally filtered by study. Use the IDs with the resend and cancel endpoints.
# Log a custom incentive for study participants
Source: https://docs.rallyuxr.com/api-reference/incentives/log-a-custom-incentive-for-study-participants
https://api.rallyuxr.com/api/openapi post /incentives/custom/log
Logs the study's configured custom incentive (for example swag or cash handed out outside Rally) against one or more participants. Custom incentives are recorded in Rally, not sent by email.
# Resend an incentive
Source: https://docs.rallyuxr.com/api-reference/incentives/resend-an-incentive
https://api.rallyuxr.com/api/openapi post /incentives/{incentiveId}/resend
Resends the incentive email for an already-sent incentive. Only eligible for provider-backed incentives that have not been canceled or expired.
# Send an incentive to study participants
Source: https://docs.rallyuxr.com/api-reference/incentives/send-an-incentive-to-study-participants
https://api.rallyuxr.com/api/openapi post /incentives
Sends a standard (money / gift card) incentive to one or more study participants, mirroring the manual "Send Incentive" action in Rally. Larger sends are processed asynchronously.
# Search for emails
Source: https://docs.rallyuxr.com/api-reference/messages/search-for-emails
https://api.rallyuxr.com/api/openapi post /messages/emails/search
Search for email in your workspace using advanced filters. Supports filtering by email properties including ID, recipient, sender, status, type, subject, dates, and related entities (study, panel, participant, campaigns, teams, populations). Filters can be combined using AND/OR logic operators for complex queries.
**Required permissions:**
- View emails
- Access All People directory
# Get a paginated list of participant status-change events.
Source: https://docs.rallyuxr.com/api-reference/participant-status-events/get-a-paginated-list-of-participant-status-change-events
https://api.rallyuxr.com/api/openapi post /participant-status-events/search
Get a time-windowed, cursor-paginated list of participant status-change events across your workspace. Poll this endpoint with a moving time window to keep an external system in sync with participant status transitions.
# Append a note to a participant
Source: https://docs.rallyuxr.com/api-reference/participants/append-a-note-to-a-participant
https://api.rallyuxr.com/api/openapi patch /studies/{studyId}/participants/{participantId}/notes
Append a note to a participant. If no note exists, a new one will be created with the provided note
# Count participants in a study
Source: https://docs.rallyuxr.com/api-reference/participants/count-participants-in-a-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/participants/count
Get the total number of participants in a study matching the filter criteria, without returning individual participant records.
# Get a participant by ID
Source: https://docs.rallyuxr.com/api-reference/participants/get-a-participant-by-id
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/participants/{participantId}
Get a participant by ID
# Import participants to a study
Source: https://docs.rallyuxr.com/api-reference/participants/import-participants-to-a-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/participants/import
Import persons into a study. Supports all import properties within a person and also adds them as a participant. If the person is found then they are updated with any information included in here.
Internal properties are on the person object and custom properties can be specified either with the id of the property or an object that contains the name and property type.
If a property with that name already exists then it will be used with *no* modification, if it does not exist then then property will be created before the import begins.
# Paginated list of participants in a study
Source: https://docs.rallyuxr.com/api-reference/participants/paginated-list-of-participants-in-a-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/participants/search
Get a paginated list of participants in a study
# Participantstatus changed
Source: https://docs.rallyuxr.com/api-reference/participantstatus_changed
https://api.rallyuxr.com/api/openapi webhook participant.status_changed
Participant status changed. Ask Customer Support for Access.
# Delete a person
Source: https://docs.rallyuxr.com/api-reference/people/delete-a-person
https://api.rallyuxr.com/api/openapi delete /people/{personId}
Delete a single person by only id
# Delete people
Source: https://docs.rallyuxr.com/api-reference/people/delete-people
https://api.rallyuxr.com/api/openapi post /people/delete
Delete people by id or email.
# Get a person's opted out status by ID or email
Source: https://docs.rallyuxr.com/api-reference/people/get-a-persons-opted-out-status-by-id-or-email
https://api.rallyuxr.com/api/openapi get /people/{personIdOrEmail}/opted-out
Pass either the person ID or email to get the opted out status
# Import people
Source: https://docs.rallyuxr.com/api-reference/people/import-people
https://api.rallyuxr.com/api/openapi post /people/import
Internal properties are on the person object and custom properties can be specified either with the id of the property or an object that contains the name and property type.
If a property with that name already exists then it will be used with *no* modification, if it does not exist then then property will be created before the import begins.
# Search for people
Source: https://docs.rallyuxr.com/api-reference/people/search-for-people
https://api.rallyuxr.com/api/openapi post /people/search
Search for people in your workspace. You can filter by studies, segments, and panels. Or just retrieve additional metadata about a list of person ids
# Update a person's opted out status
Source: https://docs.rallyuxr.com/api-reference/people/update-a-persons-opted-out-status
https://api.rallyuxr.com/api/openapi put /people/{personIdOrEmail}/opted-out
Pass either the person ID or email to update the opted out status
# Create multiple new person properties
Source: https://docs.rallyuxr.com/api-reference/person-properties/create-multiple-new-person-properties
https://api.rallyuxr.com/api/openapi post /properties/import
# Delete person properties in bulk
Source: https://docs.rallyuxr.com/api-reference/person-properties/delete-person-properties-in-bulk
https://api.rallyuxr.com/api/openapi post /properties/delete
# Deletes a person property by ID
Source: https://docs.rallyuxr.com/api-reference/person-properties/deletes-a-person-property-by-id
https://api.rallyuxr.com/api/openapi delete /properties/{propertyId}
# Get a person property by ID
Source: https://docs.rallyuxr.com/api-reference/person-properties/get-a-person-property-by-id
https://api.rallyuxr.com/api/openapi get /properties/{propertyId}
# Get a person property group by ID
Source: https://docs.rallyuxr.com/api-reference/person-properties/get-a-person-property-group-by-id
https://api.rallyuxr.com/api/openapi get /property-groups/{propertyGroupId}
Returns a single property group in your workspace, including the IDs of its properties.
# Get all person properties in your workspace
Source: https://docs.rallyuxr.com/api-reference/person-properties/get-all-person-properties-in-your-workspace
https://api.rallyuxr.com/api/openapi get /properties
# Get all person property groups in your workspace
Source: https://docs.rallyuxr.com/api-reference/person-properties/get-all-person-property-groups-in-your-workspace
https://api.rallyuxr.com/api/openapi get /property-groups
Returns all property groups in your workspace, optionally filtered by population.
# Get the properties in a person property group
Source: https://docs.rallyuxr.com/api-reference/person-properties/get-the-properties-in-a-person-property-group
https://api.rallyuxr.com/api/openapi get /property-groups/{propertyGroupId}/properties
Returns a paginated list of the person properties belonging to the given property group.
# Search properties by name or value
Source: https://docs.rallyuxr.com/api-reference/person-properties/search-properties-by-name-or-value
https://api.rallyuxr.com/api/openapi post /properties/search
# Update a person property by ID
Source: https://docs.rallyuxr.com/api-reference/person-properties/update-a-person-property-by-id
https://api.rallyuxr.com/api/openapi put /properties/{propertyId}
# Deletes people by email
Source: https://docs.rallyuxr.com/api-reference/person/deletes-people-by-email
https://api.rallyuxr.com/api/openapi post /person/delete
Deletes all data for a set of persons by email within 90 days. Deprecated, use `POST /people/delete` or `DELETE /people/{personId}` instead
# Returns a person in your workspace
Source: https://docs.rallyuxr.com/api-reference/person/returns-a-person-in-your-workspace
https://api.rallyuxr.com/api/openapi get /person
Returns a person by email if they exist. Deprecated, use `GET /people/{personId}/opted-out` instead to get their status
# Updates a person's opted out status
Source: https://docs.rallyuxr.com/api-reference/person/updates-a-persons-opted-out-status
https://api.rallyuxr.com/api/openapi post /person
This will in turn update their contact status. Deprecated, use `PUT /people/{personId}/opted-out` instead
# Person importapifinished
Source: https://docs.rallyuxr.com/api-reference/person_importapifinished
https://api.rallyuxr.com/api/openapi webhook person_import.api.finished
Person import from API finished.
# Person importcsvfinished
Source: https://docs.rallyuxr.com/api-reference/person_importcsvfinished
https://api.rallyuxr.com/api/openapi webhook person_import.csv.finished
Person import from CSV finished.
# Personopted out
Source: https://docs.rallyuxr.com/api-reference/personopted_out
https://api.rallyuxr.com/api/openapi webhook person.opted_out
Person opted out of all communications.
# Paginated list of population in your workspace
Source: https://docs.rallyuxr.com/api-reference/populations/paginated-list-of-population-in-your-workspace
https://api.rallyuxr.com/api/openapi get /populations
Gets all populations in your workspace
# Create a screener question
Source: https://docs.rallyuxr.com/api-reference/screener/create-a-screener-question
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/screener/questions
Append a question to the end of a draft study's screener. Only Rally screeners can be managed via the API. Not available for survey studies.
# Delete a screener question
Source: https://docs.rallyuxr.com/api-reference/screener/delete-a-screener-question
https://api.rallyuxr.com/api/openapi delete /studies/{studyId}/screener/questions/{questionId}
Delete a question from a draft study's screener. Deleting a matrix parent question cascades to its rows. Matrix child questions must be deleted through their parent. Not available for survey studies.
# Delete a study's screener
Source: https://docs.rallyuxr.com/api-reference/screener/delete-a-studys-screener
https://api.rallyuxr.com/api/openapi delete /studies/{studyId}/screener
Delete the screener (and all of its questions) from a draft study and set the study's includeScreener flag to false. Only Rally screeners can be deleted via the API. Not available for survey studies.
# Get a screener question
Source: https://docs.rallyuxr.com/api-reference/screener/get-a-screener-question
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/screener/questions/{questionId}
Fetch a single screener question from the published rows. Available for studies in any status. For matrix questions, pass the parent MATRIX question id. Not available for survey studies.
# Get a study's screener
Source: https://docs.rallyuxr.com/api-reference/screener/get-a-studys-screener
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/screener
Fetch the full screener (top-level properties and all questions) for a study. Only available while the study is in draft status; any other status responds with 409. Not available for survey studies.
# Replace a study's screener
Source: https://docs.rallyuxr.com/api-reference/screener/replace-a-studys-screener
https://api.rallyuxr.com/api/openapi put /studies/{studyId}/screener
Completely replace (upsert) the screener for a draft study. The entire screener configuration must be sent: question ids are regenerated on every call and omitted top-level properties reset to their defaults. Creates the screener (and enables the study's includeScreener flag) when the study has none. Only Rally screeners can be managed via the API. Not available for survey studies.
# Update a screener question
Source: https://docs.rallyuxr.com/api-reference/screener/update-a-screener-question
https://api.rallyuxr.com/api/openapi put /studies/{studyId}/screener/questions/{questionId}
Fully replace a single screener question. Options are regenerated; the question id is stable. Questions created from a template must pass their questionTemplateId. Not available for survey studies.
# Update a screener's top-level properties
Source: https://docs.rallyuxr.com/api-reference/screener/update-a-screeners-top-level-properties
https://api.rallyuxr.com/api/openapi patch /studies/{studyId}/screener
Update the top-level properties of a draft study's screener. Only the provided fields change. Question updates must go through PUT /studies/{studyId}/screener. Only Rally screeners can be managed via the API. Not available for survey studies.
# Paginated list of segments in your workspace
Source: https://docs.rallyuxr.com/api-reference/segments/paginated-list-of-segments-in-your-workspace
https://api.rallyuxr.com/api/openapi post /segments/search
Gets all segments in your workspace. Filtering currently not supported
# Create a new study
Source: https://docs.rallyuxr.com/api-reference/studies/create-a-new-study
https://api.rallyuxr.com/api/openapi post /studies
Create a new study in your workspace. This can only be a draft study, certain features not supported and require updating in the UI
# Get a paginated list of interviews in a study
Source: https://docs.rallyuxr.com/api-reference/studies/get-a-paginated-list-of-interviews-in-a-study
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/interviews
Get a paginated list of interviews in a study
# Get a paginated list of study templates
Source: https://docs.rallyuxr.com/api-reference/studies/get-a-paginated-list-of-study-templates
https://api.rallyuxr.com/api/openapi get /studies/templates
Get a paginated list of study templates
# Get a study by ID
Source: https://docs.rallyuxr.com/api-reference/studies/get-a-study-by-id
https://api.rallyuxr.com/api/openapi get /studies/{studyId}
# Get an interview by ID
Source: https://docs.rallyuxr.com/api-reference/studies/get-an-interview-by-id
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/interviews/{interviewBookingId}
Get an interview by ID
# Get paginated list of studies in your workspace.
Source: https://docs.rallyuxr.com/api-reference/studies/get-paginated-list-of-studies-in-your-workspace
https://api.rallyuxr.com/api/openapi post /studies/search
Get a paginated list of studies in your workspace
# Get the observer room for an interview
Source: https://docs.rallyuxr.com/api-reference/studies/get-the-observer-room-for-an-interview
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/interviews/{interviewBookingId}/observer-room
Get the observer room for an interview
# Get the observer rooms for a study
Source: https://docs.rallyuxr.com/api-reference/studies/get-the-observer-rooms-for-a-study
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/observer-rooms
Get a paginated list of observer rooms for a study
# Get the transcript for an observer room bot
Source: https://docs.rallyuxr.com/api-reference/studies/get-the-transcript-for-an-observer-room-bot
https://api.rallyuxr.com/api/openapi get /studies/{studyId}/observer-rooms/{observerRoomId}/transcripts/{botId}
Get the transcript for an observer room bot
# Publish a draft study
Source: https://docs.rallyuxr.com/api-reference/studies/publish-a-draft-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/publish
Publish a draft study and all of its associated data (screener, questions, options), applying its pending draft changes and moving it out of DRAFT status so it goes live. This is the same publish action available in the Rally app.
# Search screener/survey responses for a study
Source: https://docs.rallyuxr.com/api-reference/studies/search-screenersurvey-responses-for-a-study
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/responses/search
Get a paginated list of screener or survey submissions and their question-level responses for a study. Optionally include question definitions to map question IDs to labels.
# Update a study
Source: https://docs.rallyuxr.com/api-reference/studies/update-a-study
https://api.rallyuxr.com/api/openapi put /studies/{studyId}
Update a study in your workspace. All data returned from a GET on a study needs to be included or will be overwritten. Certain features not supported and require updating in the UI
# Update a study
Source: https://docs.rallyuxr.com/api-reference/studies/update-a-study-1
https://api.rallyuxr.com/api/openapi patch /studies/{studyId}
Update a study in your workspace. Only the fields provided will be updated. Certain features not supported and require updating in the UI
# Update a study status
Source: https://docs.rallyuxr.com/api-reference/studies/update-a-study-status
https://api.rallyuxr.com/api/openapi post /studies/{studyId}/status
Update the status of a study in your workspace. This is the only way to programatically change a study's status
# Poll study status-change events in your workspace
Source: https://docs.rallyuxr.com/api-reference/study-status-events/poll-study-status-change-events-in-your-workspace
https://api.rallyuxr.com/api/openapi post /study-status-events/search
Returns a paginated, time-windowed list of study status-change events (draft, active, paused, closed transitions) across your workspace, most recent first. Poll this endpoint with a moving from/to window to ingest status changes without standing up webhooks.
# Paginated list of teams in your workspace
Source: https://docs.rallyuxr.com/api-reference/teams/paginated-list-of-teams-in-your-workspace
https://api.rallyuxr.com/api/openapi get /teams
Gets all teams in your workspace
# Get the current authenticated user
Source: https://docs.rallyuxr.com/api-reference/users/get-the-current-authenticated-user
https://api.rallyuxr.com/api/openapi get /me
Returns the authenticated user along with their team memberships
# Gets a paginated list of all users
Source: https://docs.rallyuxr.com/api-reference/users/gets-a-paginated-list-of-all-users
https://api.rallyuxr.com/api/openapi get /users
# Definitions
Source: https://docs.rallyuxr.com/definitions
Key definitions of the different objects within Rally
## Workspace and User Controls
**Workspace**: Top level of your Rally account that includes all your databases, populations, segments, and lists. Additionally, each workspace contains teams, users, permissions, and all your settings. A workspace can have multiple populations, segments, and lists.
**Team**: A group of users within a workspace. Teams can be used to control access to people data, studies, and assets. A user can be assigned to more than one team.
**User**: An individual who has access to a workspace. Users can be assigned to teams and have permissions to access different parts of the workspace. Users are also granted roles which determine their level of access to the workspace.
## People Organization and Properties
**Database**: Root level of your workspace that includes all your person records. A workspace only has 1 database, and only Admins have access to the full database.
**Population**: Large groups of people withing a database. Access to populations can be granted to the entire workspace or can be configured to only be assigned to specific team(s).
> Populations can enable an **Exclusivity Restriction** setting that allows it to prevent people in that population from being added to any other population, such as only allowing a specific team access to participants in a custom exclusive population. This setting can only be turned on when there are no people in the population.
**Segment**: Dynamic sub groups with a population that are determined by the saved filters on the segment. People are dynamically added or removed from a segment based on the filters.
**List**: Static sub groups with a population that are manually updated by adding participants from existing records, manually creating a new person, or via .csv upload. New participants who sign up for research through sign-up forms are added directly to a list.
People are able to be in multiple Populaations, Segments and Lists at the same
time. The only expection is whether a person record is within an exclusive
Population.
**Person (or person record)**: An individual unique record, or row, in your database. The person record contains the properties that serve to define an individual in Rally. A person record can have associations (sometimes called memberships) to other data objects in Rally. For example, Bob has an association to Population A which means Bob is a member of that population. Select a person's name to open their Participant Profile.
**Properties**: The fields that define a person record in Rally. Properties can be used to filter and segment people in Rally. Properties can be added to a person record manually or automatically through integrations.
## Study Objects
**Study**: The root object used to organize research activities in Rally. A study can have be one of the following types: Interview, Survey, Unmoderated Test, or Group Interview.
**Participant**: A person who has been invited to participate in a study. Participants can be added to a study from a population, segment, or list. Each participant has a person record in the database. A person can be a participant in multiple studies but each "participant record" is unique to each study.
> Participants include all the properties from the person record, plus any additional properties that are specific to the study. For example, a study may have a property for "Interview Start Date" that is not included in the person record.
**Templates**: A reusable set of components that can be used to create a study. Templates can include the Question Templates, Email Templates, Consent Forms, Documents, Brands, and Custom Incentives.
# Introduction
Source: https://docs.rallyuxr.com/introduction
Overview of Rally's Developer API
## What is Rally?
Rally is a modern User Research CRM that revolutionizes research by simplifying participant recruitment and management.
Rally streamlines research operations and eliminates manual tasks like scheduling interviews, sending bulk emails, and issuing gift cards.
## Setting up
The first step to getting started with Rally's Developer API is gaining access to your user's API key and reviewing key concepts.
Learn how to gain access to your API key in Rally
Key definitions of the different objects within Rally
How Rally's objects relate to each other
## Helpful Resources
While getting started with Rally's Developer API, you may find these resources helpful.
Rally's Help Center is a great place to find answers to your questions about
the product
Rally's changelong is a great place to see what's new in the product
# Relationships
Source: https://docs.rallyuxr.com/relationships
How Rally's objects relate to each other
The core to Rally's Participant CRM are the relationships between the different objects. Understanding how these objects relate to each other is key to understanding how Rally works.
## Workspace, Team, and User Relationship
A workspace is the highest level of organization in Rally. Workspaces contain teams, and teams contain users. Each user can belong to multiple teams and workspaces.
## Team Relationship to Populations, Templates, and Studies
Populations and Templates can be assigned to different teams. When a team is granted access to a Population or Template, all users in that team will have access to those Populations or Templates.
Stuides a similar to Populations and Templates in that they are assigned to a team. The difference is that a study can only have a relationship with a **single team**.
When creating a study, you must specify the team that the study will be associated with.
Additionally, you will only be able to add participants or templates that are associated with the same team as the study.
## People Relationships
The atomic unit of Rally is the person record. A person record is a collection of information about a participant including all of their properties, relationship to studies, and history of activity.
These person records can live in different containers within Rally: Database, Population, Segment, and List.
The root container of people is the Database. Only Admin users will be able to have access to the Database. All people within a workspace will be visible in the Database.
Within a Database, there can be one to many Populations that contain groups of people records. Each person record can be associated with one or many Populations. The exception is with exclusive Popluations.
Within a Population, there can be zero to many Segements and Lists. A Segement is a dynamic subset of a Population that match to saved filter on the Segment. A List is a static subset of a Population that is manually created and modified. See this help article for more information on [Segments and Lists](https://help.rallyuxr.com/en/articles/9213353-filters-segments-columns-saved-views).
## Exclusive Populations
Exclusive Populations are a special type of Population that can only contain people that are not in any other Population within the same workspace. This is useful for creating a Population that is mutually exclusive with other Populations.
When a person is added to an Exclusive Population, there is no way for that person to be added to any other Population within the same workspace.
For example in the diagram above, there is no way for Jane to be added to "General Populatin 1" or "General Population 2" via a CSV upload, data sync, or import via the API.
# Participant Status Changed
Source: https://docs.rallyuxr.com/webhooks/participant-status-changed
POST /webhooks/participant.status_changed
This webhook is triggered when a participant's status changes. **Note: This webhook requires a feature flag. Ask Customer Support for access.**
The type of event. For this webhook, it is always
`participant.status_changed`.
Unique identifier of the participant.
Unique identifier of the person.
Unique identifier of the study.
New status of the participant. Possible values are `NOT_STARTED`, `INVITE_SENT`, `NOT_ELIGIBLE`, `SCREENER_STARTED`, `SCREENER_COMPLETED`, `SCREENER_QUALIFIED`, `SCREENER_DISQUALIFIED`, `INTERVIEW_INVITE_SENT`, `INTERVIEW_SCHEDULED`, `INTERVIEW_COMPLETED`, `INTERVIEW_CANCELLED`, `INTERVIEW_NO_SHOWED`, `SURVEY_STARTED`, `SURVEY_COMPLETED`, `INCENTIVE_SENT`, `INCENTIVE_CLAIMED`, `INCENTIVE_SKIPPED`, `UNMODERATED_TEST_INVITE_SENT`, `UNMODERATED_TEST_STARTED`, `UNMODERATED_TEST_COMPLETED`, `COMPLETED_STUDY`, `CANCELLED`, `OPTED_OUT`, `EMAIL_SOFT_BOUNCED`, `EMAIL_HARD_BOUNCED`.
Prior status of the participant. Null if the participant was just created. Possible values are the same as `status`.
Timestamp the participant status changed.
**Example Payload:**
```json theme={null}
{
"_eventType": "participant.status_changed",
"participantId": "test_cm1uwhduy001vle4gr4soyqkq",
"personId": "test_cm1uwhduy001vle4gr4soyqkq",
"studyId": "test_cm1uwhduy001vle4gr4soyqkq",
"status": "INTERVIEW_SCHEDULED",
"priorStatus": "INTERVIEW_INVITE_SENT",
"updatedAt": "2024-09-01T00:00:00Z"
}
```
# Person Import API Finished
Source: https://docs.rallyuxr.com/webhooks/person-import-api-finished
POST /webhooks/person_import.api.finished
This webhook is triggered when a person import via API is finished.
The type of event. For this webhook, it is always
`person_import.api.finished`.
Unique identifier of the import.
Status of the import. Possible values are `NOT_STARTED`, `UPLOADING`, `ERROR`,
and `COMPLETED`.
Timestamp the import finished.
Array of failed records. Each record contains either a `personId` or an `email` field. Can be null if there are no failed records.
**Example Payload:**
```json theme={null}
{
"_eventType": "person_import.api.finished",
"importId": "test_cm1uwhduy001vle4gr4soyqkq",
"status": "COMPLETED",
"updatedAt": "2024-09-01T00:00:00Z",
"failedRecords": [
{
"personId": "test_cm1uwhduy001vle4gr4soyqkq"
},
{
"email": "dev@rallyuxr.com"
}
]
}
```
# Person Import CSV Finished
Source: https://docs.rallyuxr.com/webhooks/person-import-csv-finished
POST /webhooks/person_import.csv.finished
This webhook is triggered when a person import via CSV is finished.
The type of event. For this webhook, it is always
`person_import.csv.finished`.
Unique identifier of the import.
Status of the import. Possible values are `NOT_STARTED`, `UPLOADING`, `ERROR`,
and `COMPLETED`.
Timestamp the import finished.
Array of failed records. Each record contains either a `personId` or an `email` field. Can be null if there are no failed records.
**Example Payload:**
```json theme={null}
{
"_eventType": "person_import.csv.finished",
"importId": "test_cm1uwhduy001vle4gr4soyqkq",
"status": "COMPLETED",
"updatedAt": "2024-09-01T00:00:00Z",
"failedRecords": [
{
"personId": "test_cm1uwhduy001vle4gr4soyqkq"
},
{
"email": "dev@rallyuxr.com"
}
]
}
```
# Person Opted Out
Source: https://docs.rallyuxr.com/webhooks/person-opt-out
POST /webhooks/person.opted_out
This webhook is triggered when a person opts out.
The type of event. For this webhook, it is always `person.opted_out`.
The email address of the person who has opted out.
Indicates the opt-out status. A value of `true` means the person has opted
out; `false` means they have opted in.
The timestamp when the opt-out status was updated, in ISO 8601 format.
**Example Payload:**
```json theme={null}
{
"_eventType": "person.opted_out",
"email": "dev@rallyuxr.com",
"optedOut": true,
"updatedAt": "2024-09-01T00:00:00.000Z"
}
```