Branding
The landing page takes its look from your Workspace Branding, the same branding that styles your dashboards. You edit it in the consumer dashboard or with the API:- Get workspace branding is readable by every member of your partner and by every API key, without a permission.
- Replace workspace branding (
PUT /partner/v1/branding/workspace) needsmanage-workspace-branding, which you can delegate to an API key. It replaces the whole branding document, so send every field you want to keep.
The landing block
Localised fields are objects with a
de and an en text. Include at least your partner’s default locale; add both so that German and English visitors see your own words.
Landing Look
The Landing Look decides how colourful the page is. AllRide derives the page colours from your branding for the Look you pick; colours you set yourself are used unchanged. Layout, content and order are the same in every Look.
The Look applies only to landing pages. It does not change your dashboards or the generated OTP email.
Bot protection (Cloudflare Turnstile)
Bot protection is off by default. Turn it on withlanding.botProtection: "turnstile" if your links are shared widely, for example anonymous links in a newsletter.
off: no security check runs on the page. Link limits, entity limits and the Email OTP Gate still apply.turnstile: the page runs Cloudflare Turnstile before an end customer requests an OTP email and before they redeem, and again when they enter a wrong code more than once. Most visitors never see a challenge; Turnstile asks for an interaction only when it is unsure.
challenges.cloudflare.com cannot redeem, and the page tells them so.
Example
Content rules
Every text, Markdown and URL value is checked when you save. A value that breaks a content rule (hidden characters, HTML or scripts, encoded data, look-alike brand names, unsafe links, requests for passwords or payment details) is refused withcontent-blocked; more.validationErrors names each field and the reason. Markdown supports paragraphs, bold, italic, lists, headings level 3 and 4 and https links.
Terms and legal links
The page footer shows your legal links from thelanding block:
Two rules keep the legal links in place:
- You cannot create or reactivate a Redemption Link while
privacyUrlorimprintUrlis missing: the request fails with 422landing-legal-urls-missing. - You cannot remove
privacyUrlorimprintUrl(or sendlanding: null) while any of your links is not revoked, including exhausted and expired links, because their pages are still shown. The save fails with 409landing-legal-urls-requiredandmore.nonRevokedLinkCount. Revoke the links first.
termsUrl, your terms as well. All partner links open in a new tab.
Custom domains for landing pages
By default, links point tohttps://redeem.voucher.allride.io/r/<token>. To use your own host name, for example vouchers.example-transit.example.com, add a Custom Domain:
- Add the domain in the developer dashboard (Custom domains) or with Add a custom domain (
manage-domains, delegable to API keys). Only subdomains work, not the apex of your domain. - Create the DNS records the domain shows: a
CNAMEtocustomers.voucher.allride.ioplus the ownership and certificate validationTXTrecords. - Wait until the domain is
active. Re-check a custom domain asks for an immediate check.
customDomainId when that domain is active, otherwise your default landing domain (settings.defaultLandingDomainId of your partner, set in the dashboard) when it is active, otherwise redeem.voucher.allride.io. When you delete a domain, links that used it fall back to the next host in that order and the old host name stops serving pages.
Custom Domains serve only landing pages; your dashboards always run on AllRide host names. The full setup, statuses and troubleshooting are in Custom domains.
Embedding
Landing pages cannot be embedded in an iframe: they sendframe-ancestors 'none' and X-Frame-Options: DENY. To show a link inside your app, open it top-level, in an in-app browser or in a WebView; all of these work.
The page language follows the lang query parameter (?lang=en or ?lang=de), then the visitor’s browser language, then your partner’s default locale. Append ?lang=en to a link URL if you know your customer’s language. End customers can switch the language on the page.