Adding a visa checker to a travel blog used to mean signing up for an affiliate program, hosting a plugin you can't audit, and praying it doesn't blow up your Lighthouse score. In 2026 it takes two lines of HTML and about ninety seconds. This guide walks through it for WordPress — block editor and classic editor — and shows you how to brand the widget, plug in your affiliate code, and track conversions.
Why a visa checker boosts a travel blog
Visa questions are some of the highest-intent searches in travel. When somebody types "do I need a visa for Vietnam from France" into Google, they are already mid-trip-planning. They have a date in mind. They are about to book a flight. A page that answers that question — accurately, instantly, in their language — outranks generic listicles and converts traffic into affiliate sales at 3-5x the rate of a sidebar banner.
The visa checker widget does three things at once: it answers the query, it surfaces a budget estimate and passport score, and it offers a paid travel guide as a contextual upsell. You earn 50% of every guide sold through your embed, with a 30-day attribution window.
WordPress block editor walkthrough
Open the post you want to add the widget to. Click the + icon to add a new block and pick Custom HTML(under "Widgets" in the block inserter, or just type /html).
Paste the embed snippet:
<div id="orizn-visa" data-destination="VNM"></div>
<script src="https://visa.orizn.app/embed/visa.js" async></script>Replace VNM with the ISO-3 code of the destination this post is about — THA for Thailand, JPN for Japan, USAfor the United States. The widget auto-detects the visitor's passport from their browser locale, so a French reader sees French-passport requirements and a Japanese reader sees Japanese-passport requirements, all from the same embed.
Click Preview. You should see the widget render inline, themed to match your dark or light mode. Hit Update and you are live.
unfiltered_html capability (administrators do by default).Customizing for your brand
Three data attributes give you full visual control without touching CSS:
data-color— hex code for the accent. Defaults to#3b82f6. Set it to your brand's primary color.data-theme—auto,light, ordark.autofollows the visitor's system preference.data-lang— force a specific language (15 supported) or let it auto-detect withauto.
A branded embed with affiliate tracking looks like this:
<div
id="orizn-visa"
data-destination="THA"
data-color="#ff6b6b"
data-theme="auto"
data-lang="auto"
data-affiliate="ORIZN-SARAH1"
></div>
<script src="https://visa.orizn.app/embed/visa.js" async></script>Tracking conversions
The data-affiliate attribute is what ties widget impressions, clicks and sales back to your account. Get your code from the Orizn dashboard at affiliate.orizn.app — it looks like ORIZN-SARAH1 or aff_1f3a9c2e, and both formats are accepted. Add it to every widget you embed and the same code works across all five widget types.
Attribution uses a first-party cookie that lasts 30 days. If a reader opens your post, doesn't buy, and comes back a week later through a different page, you still get credit. Stats show up in your dashboard within ~60 seconds of a sale, and payouts run monthly via Stripe.
Common errors and fixes
Three issues account for most of the support emails we get:
- The widget shows blank. Almost always a security plugin stripping the
<script>tag. Whitelistvisa.orizn.appin Wordfence, iThemes or whatever security plugin you run. - Layout shifts when the widget loads. Add a min-height to the container:
<div id="orizn-visa" style="min-height:480px">. This reserves the space and keeps your CLS score green. - Widget appears in English even though your blog is French. Either set
data-lang="fr"explicitly, or check that your<html lang="fr">attribute is set correctly — the widget reads it as a fallback.
visa.orizn.app from JS optimization. Aggressive script combining can break the async loader.That's it
Two lines of HTML, one affiliate code, ninety seconds of work. The visa checker handles 199 passports across 250 destinations in 15languages and weighs under 15 KB gzipped. Drop it into every destination post you publish, and you've added a passive revenue stream that scales with your traffic instead of fighting it.