Skip to content
Marketing
Skill

/channel-economics-analyzer

Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually profitable vs which is bleeding money — e.g. "which channel makes money?", "is OTTO/Amazon worth it?", "channel

From plugin
seo-survival-kit
1119 skills6 commands

Claude Code

$ npx -y skills add maxschottke-spec/seo-survival-kit --skill channel-economics-analyzer --agent claude-code

SKILL.md

channel-economics-analyzer.SKILL.md
name: channel-economics-analyzer
description: 'Use when an e-commerce business sells across multiple channels (own shop, Amazon, OTTO, eBay, Etsy, Zalando, etc.) and wants to know which channel is actually profitable vs which is bleeding money — e.g. "which channel makes money?", "is OTTO/Amazon worth it?", "channel break-even calculation", "marketplace profitability", "Kanal-Ökonomie", "soll ich den Channel zumachen?". Also triggers when ad budget allocation decisions are needed across channels, or when consolidating to fewer channels is being considered.'
user-invocable: true
argument-hint: '[channels.json path?]'
allowed-tools: [Read, Write, Bash(node:*)]
license: MIT
metadata:
  author: Max Schottke
  version: '0.5.4'
  category: marketing

Channel Economics Analyzer

Overview

A simple-but-rigorous channel-level P&L calculator for multi-channel e-commerce businesses. Computes per-channel: revenue, COGS, ad-spend, marketplace fees, operating margin, break-even order count. Output: scorecard that names which channels are loss-making and the minimum monthly order volume needed for profitability.

**Core principle:** *Revenue is vanity, margin is sanity, cash is reality.* A €5k/month channel that loses €500/month is worse than no channel at all.

When to use

  • Multi-channel sellers (Direct-Shop + 1+ marketplace)
  • Quarterly P&L review by channel
  • "Should we keep this marketplace?" decisions
  • Ad budget reallocation across channels
  • Founder asks "is OTTO/Amazon actually profitable for us?"

**Don't use for:**

  • Pure direct-to-consumer (no marketplace) — trivial
  • Pure dropshipping with no COGS data
  • New launch <90 days (insufficient data)

Required data per channel (last 90 days)

| Data point | Source | |-----------|--------| | Gross revenue | Shop/marketplace order export | | Refunds + chargebacks | Same export | | COGS (manufacturing cost per unit × units) | ERP / spreadsheet | | Marketplace fee % | Channel docs (Amazon: 15%, OTTO: 9-15%, eBay: 11%) | | Ad spend on channel | Google Ads / Amazon Ads / OTTO Ads / Facebook Ads dashboards | | Shipping cost per order | Shipping provider invoices | | Returns processing cost | Internal time-cost estimate | | Order count | Order export |

**Data hygiene before the formula** (experimental, N=1):

  • Use **order date**, not invoice date, for demand questions. Clearing a delivery backlog produces fake growth months on an invoice basis.
  • Read the status distribution first. Cancelled orders and drafts counted as revenue distort every ratio.
  • Keep gross and net strictly apart, and check per platform which one it reports. Marketplace fee percentages are usually quoted before VAT on the fee; whether that VAT is a cost depends on your input-tax position.
  • Remove your own test orders and duplicate payment attempts. They sit in analytics and ad platforms as conversions.
  • Never add attributed revenue across ad platforms; the same order is routinely claimed twice.

The formula

NET_REVENUE = GROSS_REVENUE - REFUNDS
MARKETPLACE_FEE = NET_REVENUE × FEE_RATE
GROSS_PROFIT = NET_REVENUE - COGS - MARKETPLACE_FEE - SHIPPING_TOTAL
OPERATING_PROFIT = GROSS_PROFIT - AD_SPEND - RETURNS_HANDLING

CONTRIBUTION_PER_ORDER = (NET_REVENUE - COGS - MARKETPLACE_FEE - SHIPPING) / ORDERS
BREAK_EVEN_ORDERS = AD_SPEND_TOTAL / CONTRIBUTION_PER_ORDER

CHANNEL_HEALTH = OPERATING_PROFIT / NET_REVENUE × 100

Healthy channel: margin > 15 %. Risky: 5-15 %. Loss-making: < 5 % or negative.

Workflow

Step 1 — Define channels

Create `channels.json` — only the channels you actually sell on. Use the [Channel fee reference table](#channel-fee-reference-table) below for the right `fee_rate` per channel.

{
  "period_days": 90,
  "channels": [
    {
      "name": "direct-shop",
      "label": "Own shop (Shopware/Shopify/WooCommerce)",
      "fee_rate": 0.029,
      "fee_label": "Payment provider 2.9 %",
      "currency": "EUR"
    },
    {
      "name": "amazon-de",
      "label": "Amazon DE",
      "fee_rate": 0.15,
      "fee_label": "Referral fee + FBA",
      "currency": "EUR"
    },
    {
      "name": "otto",
      "label": "OTTO Marketplace",
      "fee_rate": 0.11,
      "fee_label": "Verkaufsprovision",
      "currency": "EUR"
    },
    {
      "name": "kaufland",
      "label": "Kaufland.de",
      "fee_rate": 0.12,
      "fee_label": "Kategorie-abhängig 8-15 %",
      "currency": "EUR"
    },
    {
      "name": "ebay-de",
      "label": "eBay DE",
      "fee_rate": 0.11,
      "fee_label": "Verkaufsprovision + Listing-Fees",
      "currency": "EUR"
    }
  ]
}

Step 2 — Pull per-channel data

For each channel, generate a CSV: `data/<channel-name>-period.csv` with columns:

order_id,date,gross_revenue,refunds,cogs,shipping,ad_spend,returns_cost

Sources:

  • Amazon: Seller Central → Reports → Payments → Date Range Reports
  • OTTO: OTTO Partner Connect → Berichte → Auszahlungen
  • Shop: order export from Shopware/Shopify admin
  • Ads: Google Ads/Amazon Ads/OTTO Ads campaign reports

Step 3 — Run the analyzer

node channel-economics.js

Output (per channel):

══════════════════════════════════════════════════════════
DIRECT-SHOP (last 90 days)
══════════════════════════════════════════════════════════
  Gross Revenue:      €48,200
  Refunds:            €1,840 (3.8%)
  Net Revenue:        €46,360
  COGS:               €18,544 (40%)
  Marketplace Fee:    €1,344 (2.9%)
  Shipping:           €3,200
  Gross Profit:       €23,272 (50.2% margin)
  Ad Spend:           €4,200
  Returns Handling:   €920
  Operating Profit:   €18,152 (39.2% margin)  ✅ HEALTHY
  
  Orders:             420
  Contribution / Order: €55.42
  Break-Even Orders:  77/mo (you did 140 — well above)

══════════════════════════════════════════════════════════
OTTO (last 90 days)
══════════════════════════════════════════════════════════
  Gross Revenue:      €8,400
  Net Revenue:        €7,980
  COGS:               €3,192
  Marketplace Fee:
Read more
@maxschottke-spec
Ships withseo-survival-kit

Recovery-first decision support for ecommerce/D2C SEO. Claude Code skills for Core Update recovery diagnosis, prioritized action plans, weekly monitoring, and a Change Governor / Settlement Gate that prevents over-optimizing during recovery windows.

Stars on GitHub

Momentum

stars in total
11
Star history of maxschottke-spec/seo-survival-kit on GitHub, a chart by star-history.com

Other skills on seo-survival-kit.

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag3w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about channel-economics-analyzer.

Which coding agents can use channel-economics-analyzer?
channel-economics-analyzer installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.