Documentation

Setting Up A Conjoint Study

Conjoint analysis quantifies the tradeoffs respondents make across product attributes — brand, price, configuration, packaging — by asking them to choose between competing concepts. In MX8 Labs, the recommended way to set one up is the Conjoint Planning Tool: you design attributes and levels in the tool, paste its output into your survey alongside the screener and any other questions, and the platform handles the rest.

How conjoint analysis works

Conjoint studies decompose a product or proposition into attributes and levels, build a set of tasks from combinations of those levels, ask respondents to choose between alternatives, and then back out how much each level contributes to overall preference. The standard arc is:

  1. Define attributes and levels. Identify the dimensions you want to test and the values each can take. For a smartphone, attributes might be brand, price, battery life, and screen size, with several levels each.
  2. Design the task sets. Generate combinations of levels into competing concepts, organized into balanced task sets. Use an efficient experimental design so the data is statistically tractable.
  3. Collect responses. Each respondent works through their assigned task set, choosing one concept per task.
  4. Estimate utilities. Fit a statistical model that estimates a part-worth utility for each attribute level — how much that level contributes to overall preference. In MX8 Labs this runs natively after fielding closes; see Utility and simulated share methodology.
  5. Apply the results. Use the utilities to guide product configuration, pricing decisions, messaging emphasis, and share-of-preference simulations across competitive scenarios.

Why use conjoint analysis

  • Customer-driven product design. Surface which attributes and levels move preference, so design and feature decisions are grounded in evidence rather than internal opinion.
  • Pricing strategy. Quantify how price sensitivity varies with the rest of the product configuration, so you can identify the points that maximize perceived value.
  • Market segmentation. Different segments often weight attributes differently; respondent-level utilities make those patterns visible.
  • Competitive positioning. Modeling utilities across competitors' configurations shows where your product is differentiated and where it isn't.
  • Demand forecasting. Simulate share of preference across hypothetical market scenarios to estimate how a new configuration would perform against existing competitors.

The recommended workflow

The fastest path from "I want to run a conjoint study" to a fielded survey:

  1. Design the study in the Conjoint Planning Tool. Open the Conjoint Planning Tool and enter your attributes and levels. The tool sizes the concept pool, generates balanced task sets, and produces a rich export of the full study design.
  2. Paste the export into your survey description. When creating the survey, paste the tool's export straight into the survey description alongside your screener requirements and any other questions (consent, segmentation, follow-up). The platform's AI programs the conjoint block from it — no manual configuration of attributes, task assignment, or balancing required.
  3. Field the survey. When the survey runs, the platform assigns one task set per respondent using least-fill balancing, so per-task-set exposure stays roughly even across the fielding. Each task is presented to the respondent as a select question — a single-choice pick from the concepts in that task.
  4. Read the results. Hierarchical Bayes runs automatically the moment fielding closes. Utility scores and simulated share-of-preference are available automatically as cross-tab styles when estimation completes; see Choice-Based Conjoint for the report-side details.

Bayesian reporting

CBC supports model-based reporting in cross-tabs: utility scores (how strongly each attribute level drives choice) and simulated share (the predicted share of respondents who would pick each option). For the estimator, weighted aggregation, exports, and uncertainty methodology, see Utility and simulated share methodology.

Programmatic alternative

If you'd rather build the conjoint block in code — for example because you're scripting many studies at once, you need unusual conditional logic around the conjoint section, or you're managing concepts from an external system — use the conjoint_question method directly. The Planning Tool's export describes the same concept pool and task-set structure that conjoint_question takes, so you (or the AI copilot) can translate it into a direct call:

from survey import Survey

s = Survey(**globals())

concepts = [
    {"id": "A", "brand": "Apple",   "color": "Black",  "network": "5G", "price": "$800"},
    {"id": "B", "brand": "Apple",   "color": "Blue",   "network": "5G", "price": "$1000"},
    {"id": "C", "brand": "Samsung", "color": "Black",  "network": "4G", "price": "$600"},
    {"id": "D", "brand": "Samsung", "color": "Silver", "network": "5G", "price": "$800"},
]

task_sets = {
    "TS001": [["A", "C"], ["B", "D"], ["A", "D"], ["B", "C"]],
    "TS002": [["A", "B"], ["C", "D"], ["A", "C"], ["B", "D"]],
}

s.conjoint_question(
    question="Which product would you choose?",
    concepts=concepts,
    task_sets=task_sets,
    required_tags=["brand", "color", "network", "price"],
    randomize=True,
)

s.complete()

See Choice-Based Conjoint for the end-to-end walkthrough and the conjoint_question reference for the full API.