A deep dive into event-driven loyalty architecture and why it enables rewarding any customer behavior.
Traditional loyalty systems reward one thing: purchases.
Event-driven architecture lets you reward anything: signups, referrals, reviews, social engagement, community participation, and behaviors that haven't been invented yet.
The Problem with Purchase-Only Rewards
Purchase-only loyalty misses 90% of customer engagement:
👥
The Referrer
Refers three friends but only buys once. No reward.
✍
The Reviewer
Writes detailed reviews (valuable social proof). No reward.
📣
The Sharer
Shares your content (free marketing). No reward.
💬
The Community Builder
Participates in your Discord daily. No reward.
All of these behaviors indicate loyalty. None of them trigger traditional rewards.
Event-Driven Architecture
Instead of hardcoding "purchase = points," event-driven systems let you define what earns rewards:
event-config.js
Flexible
// Define any event type
const events = {
purchase: { rsncPerDollar: 10 },
signup: { rsncFlat: 100 },
referral_complete: { rsncFlat: 500 },
review_submitted: { rsncFlat: 50 },
social_share: { rsncFlat: 25 },
discord_message: { rsncFlat: 1 },
event_attendance: { rsncFlat: 200 }
};
// Trigger any event
await resonance.triggerEvent({
eventType: 'review_submitted',
userEmail: customer.email,
metadata: {
product_id: product.id,
rating: 5,
has_photo: true
}
});
How Resonance Events Work
In the Partner Portal, define what behaviors earn RSNC:
| Event Type |
Reward |
Conditions |
| purchase |
10 RSNC per $1 |
order_value > 0 |
| signup |
100 RSNC flat |
First-time only |
| referral_complete |
500 RSNC flat |
Referred user purchases |
| review_submitted |
50 RSNC flat |
Verified purchase |
When the behavior occurs, trigger the event via API:
trigger-event.js
// Server-side event triggering
async function triggerLoyaltyEvent(eventType, user, metadata) {
await fetch('https://api.rsnc.network/resonance-api/manual-event', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`
},
body: JSON.stringify({
brandId: BRAND_ID,
eventType,
userEmail: user.email,
metadata
})
});
}
Resonance processes the event:
- ✓ Validates the event against your configuration
- ✓ Checks conditions (first-time, rate limits, etc.)
- ✓ Awards RSNC based on your rules
- ✓ Updates the customer's balance
Event Metadata
Metadata makes events powerful. Include context for analytics and conditional rewards:
rich-metadata.js
// Rich event metadata
await triggerLoyaltyEvent('purchase', user, {
order_id: order.id,
order_value: order.total,
items: order.line_items.map(item => ({
product_id: item.product_id,
category: item.category,
quantity: item.quantity
})),
coupon_used: order.discount_code,
first_purchase: user.orders_count === 1,
acquisition_source: user.utm_source
});
Advanced Patterns
Conditional
Bonus for High-Value Orders
if (order.total > 100) {
await triggerLoyaltyEvent('high_value_purchase', user, {
order_value: order.total,
bonus_multiplier: 2
});
}
Streak
Consecutive Engagement Rewards
const streak = await getEngagementStreak(user.id);
if (streak >= 7) {
await triggerLoyaltyEvent('weekly_streak', user, {
streak_length: streak
});
}
Milestone
Achievement-Based Rewards
const totalSpend = await getUserTotalSpend(user.id);
if (totalSpend >= 1000 && !user.reached_1k_milestone) {
await triggerLoyaltyEvent('milestone_1000', user, {
total_spend: totalSpend
});
await markMilestoneReached(user.id, '1k');
}
The Power: Any behavior you can detect, you can reward. The architecture doesn't constrain you to purchases.
Why This Matters
1
Full Journey Rewards
Not just transactions
2
Growth Incentives
Referrals, reviews, shares
3
Future-Proof
Add events without platform changes
4
A/B Test Rewards
Experiment with what drives engagement
Purchases are one behavior.
Loyalty encompasses many behaviors.
Event-driven architecture lets you reward them all.
See Also