Embed
Copy the snippet from your dashboard (Web Callback → Embed snippet) — your project id is filled in for you — and paste it just before the closing</body> tag:
How it works
1
Visitor requests a callback
They click the button and enter their Saudi mobile number.
2
They confirm a one-time code
Wave sends an SMS code; the visitor types it back. This proves they own
the number, so the widget can never be used to dial a stranger.
3
Wave calls them
On a valid code, Wave places the callback. The call shows up in your
Call Logs and fires your webhooks like any other call.
No API key in the browser. The widget only talks to the public
/v1/public/widget/* endpoints, scoped by your public project_id. Your
secret API keys stay on your servers.Allowed origins
The widget is refused everywhere until you allowlist the sites that embed it. Add each site’s origin in the dashboard under Web Callback → Allowed origins (e.g.https://www.your-site.com). A request from any other origin is
rejected with 403 WIDGET_ORIGIN_NOT_ALLOWED.
reCAPTCHA (recommended for production)
Because the widget can spend money (each callback is a real call), we recommend adding Google reCAPTCHA v3. Create a v3 key pair, then add the site key to the snippet:Customisation
- Language & direction —
data-lang="ar"switches the widget to Arabic and flips it to right-to-left. - Colour —
data-accentthemes the launcher and panel. - Label —
data-button-textoverrides the launcher text.

