# 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 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 Team relationship to objects 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 People relationships within Rally 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 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" } ```