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 Analysis Design 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 Analysis Design Tool. Open the Conjoint Analysis Design 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 as a structured comparison with ordered attribute rows or media concepts.
  4. Read the results. Once estimation completes, use Part Worth Scores and Attribute Importance in the report editor's Analysis step. Calibrated studies also offer anchored versions; purchase follow-up data enables Marginal Purchase Lift. See Choice-Based Conjoint for the report-side details.

Bayesian reporting

Use Part Worth Scores to compare attribute levels and Attribute Importance (%) to compare attributes. Anchored versions also use None of these answers or purchase follow-ups. Yes/no purchase follow-ups enable Marginal Purchase Lift. The platform creates these analysis reports automatically, with demographic columns when available.

See Choice-Based Conjoint for the available reports and Utility and simulated share methodology for the calculations and their uncertainty.

Choose a calibration approach

Use an explicit None of these alternative when respondents should be able to reject every concept in a task. Use a yes/no purchase follow-up when they should first choose the best concept and then say whether they would actually buy it. Do not combine the two approaches. Don't know is a separate uncertainty response.

In this purchase-follow-up example, the respondent first chooses a home-internet concept. The separate Don't know option records uncertainty.

Three home-internet conjoint concepts with structured attribute rows, Choose buttons and a separate Don't know option

After a concept choice, the survey asks whether the respondent would buy it:

Conjoint purchase follow-up asking Would you buy this option, with Yes and No responses

Use placeholders such as {selected.brand} and {selected.price} to include the chosen concept's details in the purchase question. See the conjoint question reference for the parameters.

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.