Graceful degradation
The public SDK surface is fail-silent by design. Your integration should keep the core app path moving when a sponsored slot cannot be created, when a decision does not fill, or when delivery falls back between modes.
Basic fallback pattern
fallback.ts
typescript
Create-job failure
createJob() may resolve to null. Treat that as a failed handoff and continue without a sponsored placement.
Delivery fallback
The SDK supports explicit polling, websocket, and callback delivery. The SDK-side auto path falls back when the preferred delivery channel is unavailable.
No-fill behavior
A no-fill should leave your primary GenAI response untouched. The widget renders nothing for pending or no-fill decisions, and your app should treat that as a normal outcome.
Choose hosted defaults or package control
These pages document the package layer for teams that choose wavebird to control ad requests, decisions, rendering helpers, consent, and beacons directly. Use the API docs for hosted defaults, and use contact only when you want rollout review, enterprise coordination, or help with non-standard integration constraints. Beacon billing rules live in SDK Concepts.