=== VietnamVisaHelp Apply – Vietnam e-Visa Application Form for Travel Agencies ===
Contributors: vietnamvisahelp
Tags: vietnam, visa, e-visa, travel agency, tour operator
Requires at least: 6.3
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Put a Vietnam e-visa application form on your travel agency's site. Travellers apply and pay on your page; every order carries your partner code.

== Description ==

VietnamVisaHelp Apply is for travel agencies and tour operators that send travellers to Vietnam. It places the Vietnam e-visa application form of VietnamVisaHelp.com on any page of your own WordPress site, with a block or a shortcode. The traveller fills in the application, uploads the passport and portrait photos and pays, all without leaving your page.

VietnamVisaHelp.com is a private visa service. It checks each application before submitting it to the Vietnamese e-visa system, offers faster processing than applying alone, and has a person who answers the traveller's questions. Your agency can offer that service on its own site instead of sending travellers elsewhere.

**What the plugin does**

* A block, "Vietnam Visa Application Form", and a shortcode, `[vietnam_visa_apply]`.
* Form languages: English (the default), Hindi, Chinese (Simplified), Spanish, Portuguese, French and Russian, or automatic (the form guesses from the visitor's location). Whichever language the form starts in, the visitor can switch it with the selector at the top of the form. Traditional Chinese is not available yet.
* The frame grows to fit the application form, so visitors do not get a second scrollbar. Two forms on one page size themselves independently.
* Optional, off by default: the form on the WooCommerce order-received page.
* Optional, off by default: a chat bubble. Either our Vietnam visa support, answered by the people who check the applications and carrying your partner code, or your own chat with your own key, about your own business. While it is off, nothing is loaded.
* Nothing is loaded on pages without the form, unless you switch the chat bubble on, which then loads on every page. The page markup is the same for every visitor, so page caches keep working.

**For partners**

Every order placed through your form carries your partner code, and you earn a share of the VietnamVisaHelp.com service fee on it. The commission is worked out on the VietnamVisaHelp.com server from the code stored with the order; the plugin's only job is to carry the code. A partner code is free; you can request one from the plugin's settings screen or at [vietnamvisahelp.com/partners](https://vietnamvisahelp.com/partners). Until a code is saved, visitors see nothing and administrators see a short reminder where the form will appear.

**What VietnamVisaHelp.com is, and what it is not**

VietnamVisaHelp.com is a private company. It is not the Vietnamese government and does not act on its behalf. The official portal is evisa.gov.vn, where a traveller can apply alone for the US$25 government fee; what VietnamVisaHelp.com charges for on top of that is speed, a check of the application before it is submitted, and a person who answers.

No one can guarantee that a visa will be approved. That decision belongs to the Vietnam Immigration Department alone.

The plugin adds nothing to your pages except the form you place: no link, no credit, no "powered by" line. It is a sales tool and gives your site no search-engine benefit of any kind.

== Installation ==

1. In your WordPress admin, go to Plugins > Add Plugin (Add New on older WordPress), search for "VietnamVisaHelp Apply", install and activate it. Or upload the plugin zip under Plugins > Add Plugin > Upload Plugin.
2. Go to Settings > VietnamVisaHelp Apply, enter your partner code and save, then click "Check saved code" to confirm it is active and belongs to your agency. The check sends the saved code, not what is typed in the field.
3. Edit the page where the form should appear and add the "Vietnam Visa Application Form" block, or paste the shortcode `[vietnam_visa_apply]`. In the editor the block shows a placeholder; the form itself appears on the published page.
4. Optional, per placement: `[vietnam_visa_apply lang="hi" height="1400"]`. `lang` is one of en, hi, zh, es, pt, fr, ru or auto (auto guesses from the visitor's location; the visitor can switch language at the top of the form either way); `height` is the starting height in pixels, between 600 and 4000. In the block, the same options are in the sidebar.
5. Optional: if you use WooCommerce, tick "Show the application form on the order-received page" in the plugin settings.

No code yet? Open "Don't have a code yet? Request one" on the settings screen and send the short form. A person reviews every request and replies by email.

== Frequently Asked Questions ==

= How do I get paid? =

Each order placed through your form is stored with your partner code, and the commission is calculated on the VietnamVisaHelp.com server from that stored code. You earn a share of the service fee, which is the order total less the government fee. The government fee (US$25 per applicant, US$50 with multiple entry) goes to the Vietnamese state and is never commissionable. When a traveller who already applied on evisa.gov.vn asks us to escalate that application, no government fee is deducted, because the traveller paid it to the state themselves, so the whole price is commissionable.

Your share as an agency partner is 20% of the service fee on every order; individual referrers (airport staff, guides, drivers) have their own terms on their account page. Commission counts when the traveller's payment settles, not on clicks or started applications, and any refund, including a partial one, and any chargeback reverses the whole commission on that order. Payment is monthly by bank transfer or Wise, with a statement listing every order behind the payment: reference number, date, order total, government fee, service fee and your commission. The current terms are always at [vietnamvisahelp.com/partners](https://vietnamvisahelp.com/partners).

= Does this slow my site down? =

Very little. On pages that contain the form, the plugin adds one small script (under 2 KB) that sizes the frame; it adds no stylesheet and loads nothing on other pages, unless the chat bubble is switched on, which adds its script on every page. The frame uses lazy loading, so the browser fetches the form only as the visitor approaches it. The form itself, and the scripts it runs, are served inside the frame from vietnamvisahelp.com, not by your server.

= Is my customers' data sent to you? =

Yes, the traveller's application goes to VietnamVisaHelp.com, because it processes the application. It goes straight from the traveller's browser to vietnamvisahelp.com inside the frame; your WordPress site never receives, sees or stores it, and the plugin itself collects nothing about your visitors. Note that the form page loads third-party services of its own, including the Meta Pixel; see External services below. VietnamVisaHelp.com handles the data under its [privacy policy](https://vietnamvisahelp.com/privacy). The plugin adds suggested wording for your own privacy policy under Settings > Privacy.

= Can my customer pay inside my site? =

Yes. Payment is the last step of the same form: the card payment, handled by Stripe, runs inside the frame, so the traveller stays on your page from the first field to the confirmation, although the payment step itself is shown in English (in Chinese for Chinese-language forms). Wallet buttons such as Apple Pay may not appear inside a frame on your domain.

= Where do I see my orders and commission? =

On the monthly statement sent with each payment. The plugin itself has no reporting screen: it never receives order data.

= Which languages can the form use? =

English, Hindi, Chinese (Simplified), Spanish, Portuguese, French and Russian; English is the default. Choose a default in the settings, override it per block or shortcode, or pick "Automatic" to let the form guess from the visitor's location. Whichever language the form starts in, the visitor can switch it with the selector at the top of the form. The payment step is shown in English (in Chinese for Chinese-language forms). Traditional Chinese is not available yet.

= What is the chat bubble, and do I have to staff it? =

It is off until you switch it on, and you choose what it is. "Vietnam visa support, answered by us" puts our own support chat on your site: your visitors ask about Vietnam visas and the people who check the applications answer, around the clock, in English. You staff nothing. The conversation carries your partner code, so if a chat ends in an order, that order is counted as yours exactly like one from the form. "Your own chat" is the same widget with your own key, going to your own inbox about your own business; no partner code is sent and we never see those conversations. A key is free from [blissfulbookings.com/chat-key](https://blissfulbookings.com/chat-key), which asks for your e-mail and a file on your website so that only the owner of a site can get its chat. Either way the widget loads on every page of your site and is served by blissfulbookings.com; see External services.

= Can I place the form on more than one page, or twice on one page? =

Yes. Every placement carries the same partner code, and each frame sizes itself on its own.

= Does it work with caching plugins? =

Yes. The form markup depends only on your settings, never on the visitor, so a cached page is correct for everyone.

= Do I need WooCommerce? =

No. WooCommerce only adds the optional placement on the order-received page. No order details are passed to the form.

= The form does not appear. What should I check? =

Make sure a partner code is saved under Settings > VietnamVisaHelp Apply. Visitors see nothing until then; administrators see a reminder in its place. If a code is saved, click "Check saved code" to confirm it is recognised. In the block editor the block always shows a placeholder; view the published page to see the form.

== External services ==

This plugin relies on one external service, VietnamVisaHelp.com at https://vietnamvisahelp.com, which provides the visa application form and runs the partner programme. The form, the processing of applications and the partner accounts all live on that service, so the plugin cannot work without it.

The optional chat bubble adds a second service, blissfulbookings.com at https://blissfulbookings.com, which is the chat software operated by the same company as VietnamVisaHelp.com. It is off until you switch it on, and nothing is loaded from it while it is off.

The plugin itself contains no tracking, telemetry or update checks, and your server makes no background calls. It causes the four kinds of connection below and no others.

1. **Showing the form**, on published pages where you place it (not in the block editor, which shows a placeholder). The visitor's browser, not your server, loads https://vietnamvisahelp.com/apply in a frame. The frame address contains `embed=1` (which tells the form to hide the website's own header and footer), your partner code, the form language if one is chosen, and the fixed tags utm_source=partner, utm_medium=plugin and utm_campaign=(your partner code). As with any embedded content, vietnamvisahelp.com receives the visitor's IP address and browser details, and the origin of your site (for example https://example.com, without the page path, because the frame uses the strict-origin-when-cross-origin referrer policy). The hosting provider's network, Vercel, derives the visitor's approximate location (country, city) from that IP address, which the form uses to pick the form language, when it is set to automatic, and the nearest departure airport; Vercel passes nothing on. When a traveller pays, the VietnamVisaHelp.com server also sends Meta a purchase event; see Meta below. The frame is permitted to use three browser features: payment (for the card payment), the camera (the browser asks the visitor first) and writing to the clipboard. Everything the traveller enters into the form, including passport details, photographs, contact details and card payment, goes directly to vietnamvisahelp.com.
2. **Check saved code**, only when an administrator clicks "Check saved code" on the settings screen. Your server sends a GET request to https://vietnamvisahelp.com/api/partners/(your code), containing your saved partner code. The answer says whether the code is active and which agency it belongs to. Like any web request, it reveals your server's IP address.
3. **Request a code**, only when an administrator submits the "Request a code" form on the settings screen. Your server sends a POST request to https://vietnamvisahelp.com/api/partners/apply with the fields of that form (agency name, contact person, email, WhatsApp or LINE, website, main market, rough monthly volume and message) and your WordPress admin language. VietnamVisaHelp.com stores them, together with your server's IP address and the request's user agent, to review the request and reply by email.

4. **The chat bubble**, only while it is switched on in the settings, and then on every page of your site. The visitor's browser, not your server, loads https://blissfulbookings.com/embed.js and, if the visitor opens the bubble, the chat itself in a frame from the same address. blissfulbookings.com receives the visitor's IP address, browser details, the address of the page and your site's language (the two-letter WordPress locale, so the bubble greets in it), whether or not the bubble is opened, and the pages visited during the visit are sent into the conversation when one is started. With "Vietnam visa support", the conversation goes to the VietnamVisaHelp.com support team and carries your partner code; with "your own chat", it goes to your own inbox on that service and no partner code is sent. Messages, and any name or email a visitor gives, are stored by the service. [blissfulbookings.com privacy policy](https://blissfulbookings.com/privacy).

Both server-side requests identify themselves as "VietnamVisaApply/(plugin version)" instead of WordPress's default user agent, which would include your site address, and send nothing about your site's users or visitors.

**Services the form page loads inside the frame**

The form page is part of the VietnamVisaHelp.com website and may set cookies on vietnamvisahelp.com. At the time of writing it also loads these third-party services inside the frame, in the visitor's browser:

* **Meta Pixel and Conversions API** (Meta Platforms, Inc.), for advertising measurement. The pixel records a page view when the form loads, without first asking the visitor for consent. When a traveller pays, the VietnamVisaHelp.com server also sends Meta a purchase event carrying the traveller's IP address and browser details, the Meta cookies, the order value, and the e-mail address, phone number, name and date of birth in hashed form. [Meta privacy policy](https://www.facebook.com/privacy/policy/), [Meta terms](https://www.facebook.com/terms.php).
* **Stripe** (Stripe, Inc.), which handles card payments, and Alipay, WeChat Pay and UnionPay for Chinese-language forms. [Stripe privacy policy](https://stripe.com/privacy), [Stripe consumer terms](https://stripe.com/legal/end-users).
* **Vercel Web Analytics** (Vercel Inc.), which counts page views per page and country without cookies. [Vercel privacy policy](https://vercel.com/legal/privacy-policy).
* **A live-chat widget** served from blissfulbookings.com, the chat software VietnamVisaHelp.com uses to answer travellers' questions. It is operated by the same company that runs VietnamVisaHelp.com, so it is covered by the VietnamVisaHelp.com privacy policy linked below. Messages a visitor types into it go to the VietnamVisaHelp.com support team.

The link "open in a new tab" on the settings screen opens the same form address in your own browser, only when you click it.

* VietnamVisaHelp.com terms of service: https://vietnamvisahelp.com/terms
* VietnamVisaHelp.com privacy policy: https://vietnamvisahelp.com/privacy

== Privacy ==

The plugin stores one option in your database: your partner code, default form language, minimum height, the WooCommerce toggle and the chat choice with its key. It sets no cookies, keeps no logs and collects nothing about your visitors or users. It removes its option when you delete it from the Plugins screen.

The embedded form is a separate web page served by vietnamvisahelp.com; what happens inside it, including the third-party services it loads, is described under External services above and in the VietnamVisaHelp.com [privacy policy](https://vietnamvisahelp.com/privacy). The plugin adds suggested text for your site's privacy policy under Settings > Privacy. If your site asks visitors for consent before loading third-party content, treat the form like any other embedded content, such as a video player.

== Screenshots ==

1. Install the zip under Plugins > Add Plugin > Upload Plugin, then activate it.
2. Settings > VietnamVisaHelp Apply: paste your partner code and save. "Check saved code" confirms it is active and names your agency.
3. The optional chat bubble: off, our Vietnam visa support, or your own chat with your own key.
4. The "Vietnam Visa Application Form" block in the editor, with the form language and starting height in the sidebar. The editor shows a placeholder, never the live form.
5. The published page: the application form runs inside your site and grows to fit its content.

== Changelog ==

= 1.0.0 =
* First public release: block and shortcode, seven form languages, automatic frame height, "Check saved code" and "Request a code" on the settings screen, optional WooCommerce order-received placement, optional chat bubble (our visa support or your own).

== Upgrade Notice ==

= 1.0.0 =
First public release.
