Real-Time Usage Webhooks: The Hotel Top-Up Upsell Playbook (2026)
When your guest hits 80% of their eSIM data quota, YonoSIM fires order.data.low. Wire it to your PMS notification service and 25–35% of guests convert to a top-up. This is the integration pattern + attach-rate benchmark data from three property pilots.
Summary
YonoSIM's order.data.low webhook fires at 80% quota. Wire it to your PMS notification channel and 25–35% of guests convert to a top-up.
The webhook payload
POST https://your-pms.com/webhooks/yonosim
X-YonoSIM-Signature: <hmac-sha256>
{
"id": "evt_ABC123",
"type": "order.data.low",
"data": {
"orderId": "ord_XYZ",
"usageBytes": 4300000000,
"quotaBytes": 5368709120,
"percentUsed": 80,
"metadata": {
"bookingId": "BK-2026-4581",
"guestId": "G-9821",
"propertyId": "hotel-berlin-mitte"
}
}
}The handler + notification (~30 lines)
export async function POST(req: Request) {
const raw = await req.text();
// ... verify HMAC signature ...
const event = JSON.parse(raw);
if (event.type !== 'order.data.low') return new Response('ok');
const booking = await getBookingById(event.data.metadata.bookingId);
const topUpUrl = `https://esim.${property}.com/topup/${event.data.orderId}`;
await sendGuestNotification(booking, {
channel: booking.notificationChannel, // 'sms' | 'email' | 'app_push'
title: 'Your eSIM is at 80% — top up in one tap',
body: `Add 3 GB for $8 or unlimited for the rest of your stay for $22.`,
ctaUrl: topUpUrl,
});
return new Response('ok');
}Attach-rate benchmark by channel
| Notification channel | Top-up attach |
|---|---|
| Hotel app push notification | 32–38% |
| SMS to guest's local number | 25–30% |
| 12–18% | |
| In-room TV / lobby screen | 6–10% |
FAQ
QWhat is order.data.low and when does it fire?
AIt's a signed webhook that fires when the guest's eSIM hits 80% of the plan's data quota. Payload includes order ID, current usage bytes, quota bytes, metadata carried from the original order (bookingId, guestId, etc.).
QWhat top-up attach rate is realistic?
A25–35% across three property pilots. Higher for premium properties (guests less price-sensitive), lower for mid-market. The pattern that hits 35%+: send a push notification via the hotel's app/PMS immediately on receipt of the webhook, one-tap top-up with $8 for 3 GB extra.
QHow much revenue does this add per stay?
AAt 30% attach × $8 top-up × 20% partner margin (Growth tier) = $0.48/stay in top-up revenue. Modest per-stay but scales with volume — for the 200-room property model, ~$1,700/year in top-up revenue on top of the base bundle.
QDo we need our own app to trigger the top-up notification?
ANo. The notification can go via any channel your PMS supports: SMS to guest's local number, email, push via a partner hotel app (Marriott, Hilton, Hyatt all have this), or a lobby-screen notification. SMS and email are most common.
QWhat's the pattern for the top-up itself?
AOne-tap link in the notification → guest opens the branded top-up page → confirms top-up → Stripe charges the card on file → YonoSIM adds the additional GB to the existing eSIM (same ICCID, same LPA, no re-install). The whole guest-side flow is under 30 seconds.
QCan we upsell to unlimited instead of a fixed top-up?
AYes — offer a $22 'unlimited for the rest of your stay' upgrade at the low-data notification. Higher price point, higher attach for premium guests. Both work as fallback options in the same notification: 'Add 3 GB for $8, or unlimited for the rest of your stay for $22.'
Bottom line
order.data.low is the highest-leverage webhook in the hotel connectivity playbook — 25–35% top-up attach when wired to a push notification. Playground at api.yonosim.com/docs; back to Hotels hub.