Link Attribution
The query params a Stay22 booking link must carry when your own notification engine sends the push instead of the SDK.
The SDK builds its booking link for you. If you'd rather keep your own notification engine — you already have one, you already own the schedule and the consent flow — build the same link yourself and the booking is still attributed to you.
This page is the contract. It is what the SDK emits, and what we expect to see.
Using the SDK? You don't need any of this — Stay22.setTravelContext(...) builds the link and the Quick
Start covers the whole integration.
The link
Send users to /allez/roam on https://www.stay22.com:
https://www.stay22.com/allez/roam?address=Lisbon%2C+PT&checkin=2026-03-14&checkout=2026-03-18&aid=your-partner-id&source=direct&medium=pushnotif_manual&sid22=a1b2c3d4Copy it as one line — a line break before ? becomes part of the path, and the
link stops resolving.
sid22 is the one param you may not have — see About sid22.
Attribution params
These identify the booking as yours and place it in the right report.
| Param | Value | What it does |
|---|---|---|
aid | Your partner ID | Credits the booking to you. The only one that decides whether you get paid. |
source | direct | Marks the click as coming straight from your app rather than an embed or a pop. Also a fixed set. |
medium | pushnotif_manual | The one that identifies this traffic. The SDK sends pushnotif; send pushnotif_manual so your own sends stay separable. See Sending it yourself. |
sid22 | Stay22 session ID | Stitches the click to the rest of the session, which is what makes the shown → tapped → booked funnel work. See below. |
aid alone gets you paid. The rest decide whether you can see where the money came from — which is what you need in
order to argue for sending more of these.
Why there's no product
The SDK sets product=mobilesdk on the links it builds. Don't copy that onto a link you
send yourself: it would claim SDK traffic you didn't generate. Leave it off and these
clicks report under allez, with medium=pushnotif_manual marking them as your push.
About sid22
You don't generate this one. Stay22 issues it: the SDK requests a session on startup, stores what comes back, and reuses it for every link and event from that install.
If you're sending the notification yourself and have no sid22, send the link without it. The
booking still attributes to your aid — you lose the session stitching, not the commission. Talk to
us if you want the full funnel on a self-sent push.
Trip params
Give the link a destination one of two ways: as text (address, hotelname) or as a
coordinate pair (lat and lng). Everything else sharpens the results.
| Param | Value |
|---|---|
address | Destination as text, e.g. Lisbon, PT |
hotelname | A specific property name |
lat / lng | Destination coordinates, as an alternative to address |
checkin / checkout | YYYY-MM-DD |
adults / children | Guest counts |
campaign | Your own campaign ID, for segmenting inside your aid |
excludeproviders | Provider to leave out; repeat the param to exclude several |
Sending it yourself
Everything the SDK decides on its own — delivery timing, home-city suppression, one notification per trip, frequency caps — is yours to implement in this setup. The Overview walks through what each of those does and why, with a toggle that shows the same trip from both sides.
Set medium=pushnotif_manual rather than pushnotif. The suffix is what separates pushes
your engine sent from pushes the SDK sent. Send plain pushnotif and your traffic is
indistinguishable from an SDK integration — which costs you the comparison between the
two, and costs us the ability to tell you which one performs better.
Questions
Timing, caps, and suppression ranges are tuned per partner. Reach out to your Stay22 account manager or support@stay22.com.