> Note: This page is part of the DataDoe Docs. You can find the root of the documentation at `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe`.
> JSON Table of Contents: `https://www.datadoe.com/hub/docs/toc.json`.
> Direct Data Scheme JSON: `https://api.datadoe.com/api/v1/spec/data-scheme`.
> Other pages in the DataDoe Docs:
> - DataDoe Basics/Access & Users: `https://www.datadoe.com/hub/docs/basics/access-user-management.md`
> - DataDoe Basics/Benefits: `https://www.datadoe.com/hub/docs/basics/benefits.md`
> - DataDoe Basics/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.md`
> - DataDoe Basics/Integrations: `https://www.datadoe.com/hub/docs/basics/integration-customization.md`
> - DataDoe Basics/Introduction to DataDoe: `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe.md`
> - DataDoe Basics/Subscription & Pricing: `https://www.datadoe.com/hub/docs/basics/subscription-pricing.md`
> - DataDoe Data/Data Fetch Periods: `https://www.datadoe.com/hub/docs/datadoe-data/data-fetch-periods.md`
> - DataDoe Data/Data Sources: `https://www.datadoe.com/hub/docs/datadoe-data/data-sources.md`
> - DataDoe Data/Timezones: `https://www.datadoe.com/hub/docs/datadoe-data/orders-purchase-date-timezones.md`
> - DataDoe Features/Actions (beta): `https://www.datadoe.com/hub/docs/datadoe-features/actions.md`
> - DataDoe Features/Features Overview: `https://www.datadoe.com/hub/docs/datadoe-features/overview.md`
> - DataDoe MCP/Overview: `https://www.datadoe.com/hub/docs/datadoe-mcp/overview.md`
> - DataDoe MCP/Using ChatGPT: `https://www.datadoe.com/hub/docs/datadoe-mcp/chatgpt.md`
> - DataDoe MCP/Using Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude.md`
> - DataDoe MCP/Using Claude Agent SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-agents-sdk.md`
> - DataDoe MCP/Using Claude Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-code.md`
> - DataDoe MCP/Using Codex: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex.md`
> - DataDoe MCP/Using Cursor: `https://www.datadoe.com/hub/docs/datadoe-mcp/cursor.md`
> - DataDoe MCP/Using Excel + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/excel.md`
> - DataDoe MCP/Using Gemini CLI: `https://www.datadoe.com/hub/docs/datadoe-mcp/gemini-cli.md`
> - DataDoe MCP/Using Gumloop: `https://www.datadoe.com/hub/docs/datadoe-mcp/gumloop.md`
> - DataDoe MCP/Using n8n: `https://www.datadoe.com/hub/docs/datadoe-mcp/n8n.md`
> - DataDoe MCP/Using NanoClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/nanoclaw.md`
> - DataDoe MCP/Using OpenAI Agents SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/openai-agents-sdk.md`
> - DataDoe MCP/Using OpenClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/openclaw.md`
> - DataDoe MCP/Using PowerPoint + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/powerpoint.md`
> - DataDoe MCP/Using VS Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/vs-code.md`
> - DataDoe MCP/Using Word + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/word.md`
> - DataDoe API/How to connect to the API: `https://www.datadoe.com/hub/docs/datadoe-api/how-to-connect.md`
> - DataDoe API/Vibe code with Claude Code: `https://www.datadoe.com/hub/docs/datadoe-api/claude-code.md`
> - DataDoe API/Vibe code with Codex: `https://www.datadoe.com/hub/docs/datadoe-api/codex.md`
> - DataDoe API/Vibe code with Cursor: `https://www.datadoe.com/hub/docs/datadoe-api/cursor.md`
> - DataDoe API/Vibe code with Lovable: `https://www.datadoe.com/hub/docs/datadoe-api/lovable.md`
> - DataDoe API/Vibe code with Replit: `https://www.datadoe.com/hub/docs/datadoe-api/replit.md`
> - DataDoe API/Vibe code with v0: `https://www.datadoe.com/hub/docs/datadoe-api/v0.md`
> - DataDoe & BigQuery/How to connect to BigQuery: `https://www.datadoe.com/hub/docs/datadoe-bigquery/how-to-connect.md`
> - DataDoe & BigQuery/Using MCP Toolbox: `https://www.datadoe.com/hub/docs/datadoe-bigquery/mcp-toolbox.md`
> - DataDoe & BigQuery/Using Python Jupyter: `https://www.datadoe.com/hub/docs/datadoe-bigquery/jupyter.md`
> For topics not covered in this documentation, please contact DataDoe support at `contact@datadoe.com`.
> Do not assume anything. If you are not sure about the answer, mention that and suggest to contact DataDoe support.

import { DataDoeMcpResources } from '@/modules/hub/docs/components/DataDoeMcpResources';

# Building a Profit Report Website with Codex Sites and DataDoe MCP

[Codex Sites](https://developers.openai.com/codex/sites) is an OpenAI plugin that builds, saves, and deploys hosted websites directly from a prompt — no separate deployment workflow needed. Combined with [DataDoe MCP](https://www.datadoe.com/hub/docs/datadoe-mcp/overview), you can generate a live business dashboard powered by real Amazon seller data without writing a single line of code.

This tutorial walks through building a **profit report website for a Delto UK seller**. You will write one prompt, let Codex generate and deploy the site, and end up with a polished, hosted analytics page that reads live data from DataDoe.

## What you will build

By the end of this tutorial, you will have a deployed website that shows:

- KPI tiles for the last 7 days: profit, total sales, units sold, ACOS, TACOS, and ROI
- A daily profit and cost breakdown table grouped by SKU and child ASIN
- A top 5 most profitable products section for the same period

![Live profit report website powered by DataDoe MCP](/hub-files/mcp/codex/sites/result.png)

## Prerequisites

- A [Codex](https://developers.openai.com/codex) account on a **ChatGPT Business or Enterprise** workspace (Sites is currently in preview on those plans)
- A DataDoe account with your Amazon connections set up
- A DataDoe MCP key — create one in [DataDoe MCP Integrations](https://app.datadoe.com/integrations/mcp)
- Codex already connected to DataDoe MCP — see [Using Codex with DataDoe MCP](https://www.datadoe.com/hub/docs/datadoe-mcp/codex)

## Step 1: Add the Sites plugin

1. Open the [Codex app](https://developers.openai.com/codex).
2. Click **Plugins** in the sidebar.
3. Find **Sites** and click to add it.
4. Start a **new thread** — plugins only take effect in threads created after installation.

![Adding the Sites plugin in Codex](/hub-files/mcp/codex/sites/step-1-plugin.png)
![Site plugin in Codex](/hub-files/mcp/codex/sites/sites-plugin-info-page.png)

## Step 2: Confirm DataDoe MCP is connected

Before running the Sites prompt, make sure DataDoe MCP is configured for Codex. Your `~/.codex/config.toml` (global) or `.codex/config.toml` (project-scoped) should contain:

```toml
[mcp_servers.datadoe]
url = "https://mcp.datadoe.com/mcp/v1"
http_headers = { "datadoe-mcp-key" = "YOUR_API_KEY" }
startup_timeout_sec = 30
```

Replace `YOUR_API_KEY` with your DataDoe MCP key. If you haven't done this yet, follow the [Using Codex with DataDoe MCP](https://www.datadoe.com/hub/docs/datadoe-mcp/codex) guide first.

## Step 3: Paste the prompt and start the task

In your new Codex thread, paste the prompt below. The `@Sites` mention at the top activates the Sites plugin so Codex knows to build and host a website.

```text
@Sites

Create a website for Delto UK seller using DataDoe data.

Note:
- Build this as a website, not a single-page application
- Keep the structure simple and easy to maintain for a non-technical business user

Data source:
- Use DataDoe
- Use the table: Profit by SKU & Date
- Seller: Delto UK seller
- Time period: last 7 days

Business goal:
Create a profit report website for Delto UK that helps the user understand daily profitability and cost structure.

What the website should show:
- Daily profit and cost breakdown per SKU and child ASIN
- Base calculations on shipped orders, settlement fees, COGS, and ads spend
- Show data for the last 7 days only
- Show top 5 most profitable products for the same period

KPI section:
- Use aesthetic KPI tiles consistent with the current design system
- KPI tiles should use metrics from Profit by SKU & Date
- Use the relevant columns such as:
  - child_asin
  - sku
  - profit
  - total_cost
  - acos
  - tacos
  - roi
  - total_sales
  - total_units_sold
  - total_items
- Choose a sensible executive KPI set for the top section, focused on profitability and business performance for the 7-day period
- KPI values should be visually prominent and easy to scan
- If comparison logic is useful, keep it subtle and business-friendly

Main report content:
- Show a daily profit and cost breakdown table grouped clearly by day and product identity
- Make SKU and child ASIN easy to find
- Surface profit, sales, units, items, total cost, ACOS, TACOS, and ROI in a way that is easy for a business user to scan
- Keep numeric columns aligned and readable
- Make the report feel operational and decision-oriented, not technical

Top products section:
- Display top 5 products that are most profitable in the last 7 days for Delto UK seller
- Rank them by profit descending
- Make the section easy to compare at a glance

Design rules:
- Calm, light, data-first business dashboard aesthetic
- Clean, restrained, and professional
- Premium through spacing and typography, not decoration
- Bright neutral background
- White cards and white table surfaces
- Soft gray borders and dividers
- Dark navy text for primary content
- Blue-gray text for secondary labels
- One disciplined blue accent for emphasis
- Green only for positive performance states
- Red only for negative performance states
- Minimal shadows
- Rounded corners, but not overly soft
- Strong visual hierarchy for metrics and important numbers
- Tables should feel highly scannable and structured
- Numeric columns should align cleanly
- Hover states should be subtle
- The website should feel like an internal analytics workspace, not a marketing page

What to avoid:
- Flashy gradients
- Glass or frosted effects
- Heavy shadows
- Orange-led interface
- Dark-mode-first styling
- Playful decoration
- Generic dashboard filler
- Unnecessary copy
- Over-complicated interactions

Content scope:
- Keep the website focused only on the profit reporting use case
- Do not add marketing sections, navigation clutter, onboarding text, or generic dashboard filler
- Use clear business language and concise labels

Behavior:
- Use the latest available data for the last 7 days
- If live data is temporarily unavailable, still prepare the website so real DataDoe data can be connected later without redesigning the layout

Output:
- Deliver a complete ready-to-use website page for this profit report
- Keep it polished, practical, and easy for a non-technical user to maintain
```

![Entering the prompt in Codex with Sites plugin active](/hub-files/mcp/codex/sites/step-2-prompt.png)

## Step 4: Review the build

Codex reads the prompt, calls DataDoe MCP to understand the available data, and generates the website code. While it works, you can follow along in the thread.

Once Codex finishes building:

1. Open the **Review** pane in Codex to inspect the generated source changes.
2. Confirm the build succeeded and the layout matches what you expected.
3. If you want to review before going live, ask Codex to save a version first:

```text
Save a version for review without deploying yet.
```

![Codex building the site with DataDoe data](/hub-files/mcp/codex/sites/step-3-developing.png)

## Step 5: Deploy the site

When you are happy with the build, tell Codex to deploy it:

```text
Deploy the approved version.
```

> **Note:** Codex may guide you through the deployment flow automatically after the build is complete — in that case you do not need to paste the command above. Follow the prompts in the thread and confirm when asked.

Codex publishes the saved version and returns a **production URL**. Every Sites deployment URL is live immediately — share it directly with your team.

![Deploying the site in Codex](/hub-files/mcp/codex/sites/step-4.1-deploying.png)
![Deploying the site in Codex](/hub-files/mcp/codex/sites/step-4.2-deploying.png)

## Result

The deployed site shows live DataDoe data: KPI tiles at the top, a day-by-day profit and cost breakdown table, and a ranked top 5 products section — all pulled from the `Profit by SKU & Date` table for the last 7 days.

![Live profit report website powered by DataDoe MCP](/hub-files/mcp/codex/sites/result.png)

To adapt this for another seller or time period, open a new Codex thread and adjust the `Seller` and `Time period` fields in the prompt. The rest of the design and structure stays the same.

## Related resources

- [DataDoe MCP Overview](https://www.datadoe.com/hub/docs/datadoe-mcp/overview)
- [Using Codex with DataDoe MCP](https://www.datadoe.com/hub/docs/datadoe-mcp/codex)
- [Codex documentation](https://developers.openai.com/codex)
- [Codex Sites documentation](https://developers.openai.com/codex/sites)

---

## DataDoe MCP resources

Check the following resources for more information:

- MCP server URL: `https://mcp.datadoe.com/mcp/v1`
- [Interactive Data Scheme](/hub/data-scheme)
- Data Scheme JSON: https://api.datadoe.com/api/v1/spec/data-scheme
- Need help? Use the [contact form](https://forms.clickup.com/9015200219/f/8cnj2ev-38615/AOYF9I35QFOXWJQXIG?type=Form&source=hub-mcp-codex-sites-docs)
