Satış Artırma Teknikleri: Kampanya ve Fiyat Optimizasyonu
E-ticaret satışlarınızı %65 artıracak kampanya stratejileri, dinamik fiyatlandırma ve A/B testing yöntemleri. Veri odaklı karar alma rehberi.
Eyüp Aktaş
5 dakika okuma
15 görüntüleme
Satış Artırma Teknikleri: Kampanya ve Fiyat Optimizasyonu
Doğru kampanya ve fiyatlandırma stratejileri, e-ticaret satışlarınızı katlanarak artırabilir. Bu rehberde veri odaklı kampanya yönetimi ve dinamik fiyatlandırma tekniklerini öğreneceksiniz.
Kampanya Türleri ve Etkileri
1. Flash Sale (Flaş İndirim)
Özellikleri:
- Kısa süreli (%1-24 saat)
- Yüksek indirim oranı (%30-50)
- Aciliyet hissi yaratır
interface FlashSale {
productId: string;
originalPrice: number;
discountRate: number;
startTime: Date;
endTime: Date;
stockLimit: number;
}
async function createFlashSale(data: FlashSale) {
const salePrice = data.originalPrice * (1 - data.discountRate / 100);
await db.campaign.create({
data: {
name: `Flash Sale - ${new Date().toLocaleDateString()}`,
type: 'FLASH_SALE',
startDate: data.startTime,
endDate: data.endTime,
products: {
create: {
productId: data.productId,
discountedPrice: salePrice,
stockLimit: data.stockLimit
}
}
}
});
// Bildirimleri gönder
await sendNotifications({
type: 'FLASH_SALE',
productId: data.productId,
discount: data.discountRate
});
}
Sonuçlar: Satış artışı %150-300 🚀
2. Hafta Sonu Kampanyaları
async function scheduleWeekendCampaign() {
const friday = new Date();
friday.setDate(friday.getDate() + (5 - friday.getDay()));
friday.setHours(18, 0, 0);
const sunday = new Date(friday);
sunday.setDate(sunday.getDate() + 2);
sunday.setHours(23, 59, 59);
await createCampaign({
name: 'Hafta Sonu Fırsatları',
startDate: friday,
endDate: sunday,
discountRate: 20,
categories: ['fashion', 'electronics']
});
}
Dinamik Fiyatlandırma Stratejileri
1. Rakip Fiyat Takibi
class CompetitorPriceTracker {
async trackCompetitorPrices(productBarcode: string) {
const competitors = await this.getCompetitorPrices(productBarcode);
const avgPrice = competitors.reduce((sum, c) => sum + c.price, 0) / competitors.length;
const minPrice = Math.min(...competitors.map(c => c.price));
const maxPrice = Math.max(...competitors.map(c => c.price));
return {
averagePrice: avgPrice,
lowestPrice: minPrice,
highestPrice: maxPrice,
competitorCount: competitors.length,
recommendation: this.getPriceRecommendation(avgPrice, minPrice)
};
}
private getPriceRecommendation(avg: number, min: number) {
// En düşük fiyatın %5 üstünde, ortalamadan düşük
return Math.max(min * 1.05, avg * 0.95);
}
}
2. Talep Bazlı Fiyatlandırma
async function adjustPriceByDemand(productId: string) {
// Son 7 günün satış verisi
const recentSales = await db.orderItems.count({
where: {
productId: productId,
createdAt: {
gte: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
}
}
});
const product = await db.product.findUnique({
where: { id: productId }
});
let priceMultiplier = 1.0;
// Yüksek talep: Fiyat artır
if (recentSales > 50) priceMultiplier = 1.10; // +%10
// Orta talep: Fiyat koru
else if (recentSales > 20) priceMultiplier = 1.0;
// Düşük talep: Fiyat düşür
else priceMultiplier = 0.90; // -%10
const newPrice = product.basePrice * priceMultiplier;
await updateProductPrice(productId, newPrice);
}
A/B Testing ile Optimizasyon
Test Senaryosu Örneği
interface ABTest {
testId: string;
variantA: {
price: number;
title: string;
image: string;
};
variantB: {
price: number;
title: string;
image: string;
};
}
class ABTestManager {
async createTest(productId: string, test: ABTest) {
await db.abTest.create({
data: {
productId: productId,
status: 'RUNNING',
variantA: test.variantA,
variantB: test.variantB,
startDate: new Date()
}
});
}
async assignVariant(userId: string, testId: string) {
// %50-%50 dağılım
const variant = Math.random() < 0.5 ? 'A' : 'B';
await db.abTestAssignment.create({
data: {
userId: userId,
testId: testId,
variant: variant
}
});
return variant;
}
async analyzeResults(testId: string) {
const results = await db.orderItems.groupBy({
by: ['abTestVariant'],
where: { abTestId: testId },
_count: { id: true },
_sum: { price: true }
});
const variantA = results.find(r => r.abTestVariant === 'A');
const variantB = results.find(r => r.abTestVariant === 'B');
return {
variantA: {
conversions: variantA?._count.id || 0,
revenue: variantA?._sum.price || 0
},
variantB: {
conversions: variantB?._count.id || 0,
revenue: variantB?._sum.price || 0
},
winner: (variantA?._sum.price || 0) > (variantB?._sum.price || 0) ? 'A' : 'B'
};
}
}
Sepet Analizi ve Cross-Selling
1. Sık Birlikte Alınan Ürünler
async function findFrequentlyBoughtTogether(productId: string) {
const orders = await db.order.findMany({
where: {
items: {
some: { productId: productId }
}
},
include: {
items: {
where: { productId: { not: productId } }
}
}
});
// Ürün kombinasyonlarını say
const productCounts = new Map();
orders.forEach(order => {
order.items.forEach(item => {
const count = productCounts.get(item.productId) || 0;
productCounts.set(item.productId, count + 1);
});
});
// En çok birlikte alınan 5 ürün
return Array.from(productCounts.entries())
.sort((a, b) => b[1] - a[1])
.slice(0, 5)
.map(([id, count]) => ({ productId: id, frequency: count }));
}
2. Sepet Terkedilme Oranı Azaltma
async function preventCartAbandonment() {
// 30 dakika önce sepete eklenmiş ama alınmamış
const abandonedCarts = await db.cart.findMany({
where: {
updatedAt: {
lte: new Date(Date.now() - 30 * 60 * 1000),
gte: new Date(Date.now() - 60 * 60 * 1000)
},
status: 'ACTIVE'
},
include: { user: true, items: true }
});
for (const cart of abandonedCarts) {
// %10 indirim kuponu gönder
const coupon = await createCoupon({
userId: cart.userId,
discountRate: 10,
expiresIn: 24 * 60 * 60 * 1000 // 24 saat
});
await sendEmail({
to: cart.user.email,
subject: 'Sepetinizde ürünler bekliyor! %10 İndirim 🎁',
template: 'abandoned-cart',
data: {
items: cart.items,
couponCode: coupon.code
}
});
}
}
// Her 30 dakikada bir çalıştır
setInterval(preventCartAbandonment, 30 * 60 * 1000);
Kampanya Performans Metrikleri
interface CampaignMetrics {
impressions: number;
clicks: number;
conversions: number;
revenue: number;
cost: number;
}
function analyzeCampaignROI(metrics: CampaignMetrics) {
const ctr = (metrics.clicks / metrics.impressions) * 100;
const conversionRate = (metrics.conversions / metrics.clicks) * 100;
const roi = ((metrics.revenue - metrics.cost) / metrics.cost) * 100;
const cpa = metrics.cost / metrics.conversions;
return {
clickThroughRate: ctr.toFixed(2) + '%',
conversionRate: conversionRate.toFixed(2) + '%',
returnOnInvestment: roi.toFixed(2) + '%',
costPerAcquisition: '₺' + cpa.toFixed(2),
recommendation: roi > 200 ? 'Artır' : roi > 100 ? 'Devam' : 'İyileştir'
};
}
TrendEntegre Kampanya Yönetimi
✅ Otomatik Flash Sale
✅ Dinamik Fiyatlandırma AI
✅ A/B Testing Dashboard
✅ Sepet Analizi
✅ ROI Hesaplama
Sonuç
Doğru kampanya stratejileri ile:
- 📈 Satışları %65 artırabilirsiniz
- 💰 Sepet ortalamasını %28 yükseltebilirsiniz
- 🎯 Dönüşüm oranını %8.4'e çıkarabilirsiniz
- 🚀 ROI'yi %300'e ulaştırabilirsiniz
Anahtar Kelimeler: kampanya yönetimi, fiyat optimizasyonu, dinamik fiyatlandırma, A/B testing, sepet analizi
Etiketler:
Eyüp Aktaş
Bu yazı Eyüp Aktaş tarafından yazılmıştır.
İlgili Yazılar
Yorumlar (0)
Yorum Yaz
Henüz yorum yapılmamış. İlk yorumu yapan siz olun!