AdvancedCustom Pricing (MDP)

Custom Pricing (MDP)

MDP (Markup/Discount Pricing) allows you to create sophisticated pricing rules that go beyond global markup settings. Define custom pricing per supplier, per brand, or for specific product categories.

Overview

MDP enables:

  • Per-supplier pricing - Different margins for different suppliers
  • Per-brand pricing - Brand-specific markup strategies
  • Tiered rules - Apply rules in priority order
  • Price rounding - Professional price endings

Accessing MDP Settings

  1. Navigate to PromoSync > Settings
  2. Click Pricing > Custom Pricing
  3. Enable MDP (Markup/Discount Pricing)

Creating Pricing Rules

Rule Structure

Each MDP rule contains:

{
  "id": "rule_001",
  "name": "SanMar Standard Markup",
  "enabled": true,
  "priority": 10,
  "conditions": {
    "supplier_code": "SanMar"
  },
  "pricing": {
    "type": "percentage",
    "value": 40,
    "apply_to": "cost"
  },
  "rounding": {
    "type": "charm",
    "value": 0.99
  }
}

Adding a Rule

  1. Click Add Pricing Rule
  2. Enter a descriptive name
  3. Set the priority (lower = higher priority)
  4. Define conditions
  5. Configure pricing action
  6. Set rounding options
  7. Click Save

Condition Types

Supplier-Based Rules

Apply pricing to all products from a specific supplier:

{
  "conditions": {
    "supplier_code": "SanMar"
  }
}

Available supplier codes:

SupplierCode
SanMarSanMar
alphabroderALPH
S&S ActivewearSS
Hit PromotionalHIT
PCNAPCNA

Brand-Based Rules

Apply pricing to specific brands:

{
  "conditions": {
    "brand": "BELLA+CANVAS"
  }
}

Combined Conditions

Combine supplier and brand:

{
  "conditions": {
    "supplier_code": "SanMar",
    "brand": "The North Face"
  }
}

This rule only applies to The North Face products from SanMar.

Category-Based Rules

Apply to product categories:

{
  "conditions": {
    "category": "Outerwear"
  }
}

Pricing Actions

Percentage Markup

Add a percentage to the base cost:

{
  "pricing": {
    "type": "percentage",
    "value": 40,
    "apply_to": "cost"
  }
}
// $10.00 cost × 1.40 = $14.00

Fixed Amount Markup

Add a fixed dollar amount:

{
  "pricing": {
    "type": "fixed",
    "value": 5.00,
    "apply_to": "cost"
  }
}
// $10.00 cost + $5.00 = $15.00

Percentage Discount

Apply a discount to the base price:

{
  "pricing": {
    "type": "percentage",
    "value": -15,
    "apply_to": "retail"
  }
}
// $20.00 retail × 0.85 = $17.00

Margin-Based Pricing

Set a target margin:

{
  "pricing": {
    "type": "margin",
    "value": 35,
    "apply_to": "cost"
  }
}
// $10.00 cost / (1 - 0.35) = $15.38

Price Rounding

Rounding Options

TypeExample InputResult
none$14.37$14.37
nearest_cent$14.374$14.37
nearest_5$14.37$14.35
nearest_10$14.37$14.40
nearest_dollar$14.37$14.00
ceiling$14.37$15.00
charm$14.37$14.99

Charm Pricing Configuration

{
  "rounding": {
    "type": "charm",
    "value": 0.99
  }
}

Other charm endings: 0.95, 0.97, 0.00

Rule Priority

Rules are evaluated in priority order (lowest number first):

Priority 1: Brand-specific (The North Face from SanMar)
Priority 10: Supplier-specific (all SanMar products)
Priority 100: Global default

When multiple rules match, the highest priority (lowest number) wins.

Priority Best Practices

Priority RangeUse For
1-9Specific product overrides
10-49Brand-specific rules
50-99Supplier-specific rules
100+Default/fallback rules

Examples

Example 1: Standard Distributor Markup

40% markup on all products:

{
  "name": "Standard 40% Markup",
  "priority": 100,
  "conditions": {},
  "pricing": {
    "type": "percentage",
    "value": 40,
    "apply_to": "cost"
  },
  "rounding": {
    "type": "charm",
    "value": 0.99
  }
}

Example 2: Premium Brand Markup

Higher markup for premium brands:

{
  "name": "The North Face Premium",
  "priority": 10,
  "conditions": {
    "brand": "The North Face"
  },
  "pricing": {
    "type": "percentage",
    "value": 50,
    "apply_to": "cost"
  },
  "rounding": {
    "type": "charm",
    "value": 0.99
  }
}

Example 3: Competitive Supplier Pricing

Lower markup for competitive supplier:

{
  "name": "S&S Competitive",
  "priority": 50,
  "conditions": {
    "supplier_code": "SS"
  },
  "pricing": {
    "type": "percentage",
    "value": 30,
    "apply_to": "cost"
  },
  "rounding": {
    "type": "charm",
    "value": 0.99
  }
}

Example 4: Category-Based Margin

Different margins for outerwear:

{
  "name": "Outerwear High Margin",
  "priority": 75,
  "conditions": {
    "category": "Outerwear"
  },
  "pricing": {
    "type": "margin",
    "value": 45,
    "apply_to": "cost"
  },
  "rounding": {
    "type": "ceiling",
    "value": 1
  }
}

Compare-At Pricing

Automatic Compare-At

Set compare-at prices automatically:

{
  "compare_at": {
    "enabled": true,
    "type": "percentage",
    "value": 25
  }
}

This sets compare-at price 25% higher than selling price.

MSRP as Compare-At

Use MSRP for compare-at price:

{
  "compare_at": {
    "enabled": true,
    "type": "msrp",
    "minimum_discount": 10
  }
}

Only shows compare-at if discount is at least 10%.

Testing Pricing Rules

Preview Mode

Test rules before applying:

  1. Click Preview Pricing
  2. Select products to test
  3. See calculated prices with each rule
  4. Identify which rule applies

Price Preview Output

{
  "product": "Unisex Jersey Tee (3001)",
  "base_cost": 10.00,
  "rules_evaluated": [
    {"name": "BELLA+CANVAS Markup", "matches": true, "priority": 10},
    {"name": "Standard Markup", "matches": true, "priority": 100}
  ],
  "applied_rule": "BELLA+CANVAS Markup",
  "calculated_price": 14.99,
  "compare_at_price": 19.99
}

Bulk Price Updates

After configuring rules:

  1. Go to PromoSync > Products
  2. Select products to update
  3. Click Bulk Actions > Update Pricing
  4. Choose Apply MDP Rules
  5. Confirm the update

API Integration

GraphQL Mutation

For developers integrating with the API:

mutation UpdateMDPRule($input: MDPRuleInput!) {
  mdpRuleUpdate(input: $input) {
    rule {
      id
      name
      priority
      enabled
    }
    userErrors {
      field
      message
    }
  }
}

Python Example

# Configure MDP rule programmatically
mdp_rule = {
    "name": "Custom Brand Markup",
    "priority": 15,
    "conditions": {
        "brand": "Champion"
    },
    "pricing": {
        "type": "percentage",
        "value": 45,
        "apply_to": "cost"
    },
    "rounding": {
        "type": "charm",
        "value": 0.99
    }
}
 
response = promosync.create_mdp_rule(mdp_rule)

Troubleshooting

Rule Not Applying

  1. Check rule is enabled
  2. Verify priority order
  3. Confirm conditions match product
  4. Test with Preview mode

Incorrect Prices

  1. Review rule calculation type
  2. Check base cost/retail source
  3. Verify rounding settings
  4. Look for conflicting rules

Rules Conflicting

  1. Review priority order
  2. Make conditions more specific
  3. Use Preview to see which rule wins
  4. Adjust priorities as needed

Best Practices

  1. Document your rules - Keep notes on why rules exist
  2. Use descriptive names - “SanMar 40% Q1 2024” is better than “Rule 1”
  3. Test before deploying - Always preview price changes
  4. Review regularly - Update rules when costs change
  5. Start broad, refine narrow - Set global defaults first