=== LaunchList ===
Contributors: getlaunchlist
Tags: waitlist, referral, signup form, email signup, lead capture
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

Add your LaunchList waitlist to any page, and send your own WordPress forms to LaunchList with referral credit that follows the visitor.

== Description ==

[LaunchList](https://getlaunchlist.com) is pre-launch waitlist software for founders. This plugin puts it on your WordPress site in two ways. You need a LaunchList account: the forms, widgets and updates it shows are the ones you made in LaunchList.

= Add LaunchList to a page =

* **The LaunchList block.** Add it in the block editor and choose what it shows: your form, a button that opens the form in a popup, a widget (a signup counter, a referral leaderboard, a milestone or a countdown) or your published updates.
* **The `[launchlist]` shortcode**, for the classic editor, widget areas and page builders.

The form looks exactly as you designed it in LaunchList, and what happens after a signup (your status page, a page on your site, or a message with the person's place in line and referral link) is set on the form in LaunchList. This needs no connection.

= Send your own WordPress forms to LaunchList =

Already built a form? Connect the site once. On the LaunchList screen each of your forms has one dropdown: leave it on Don't send, or choose the LaunchList form that receives its signups. Match fields lets you change which field fills which LaunchList field, and one Save applies everything. It works with:

* Contact Form 7
* WPForms
* Gravity Forms
* Elementor Pro forms
* Fluent Forms
* Ninja Forms
* Formidable Forms

Your form plugin keeps working as before: its emails, messages and saved entries do not change. LaunchList receives each submission from your server after your form plugin accepts it, signed with a key only your site and LaunchList know, and checks each one for duplicates and spam before adding it. If LaunchList can't take it right away, your site keeps it and tries again about a minute later at first, then up to an hour apart, for 24 hours. A visitor never waits more than 5 seconds on LaunchList and never sees an error from it. Recent deliveries on the same screen lists what was sent, what is waiting and what LaunchList did not add, with a Retry now button.

= Referral credit across pages =

Once the site is connected, the plugin loads the LaunchList script on every page, so a visitor who arrives with someone's referral link and signs up on another page, through a LaunchList form or one of your own forms, still credits the person who shared the link. You can turn this off under LaunchList in your dashboard.

== Installation ==

1. In your dashboard, go to Plugins, then Add New Plugin, search for LaunchList, and click Install Now, then Activate. Or upload the plugin's zip under Plugins, then Add New Plugin, then Upload Plugin.
2. To show a LaunchList form, add the **LaunchList** block to a page and choose your form in the block's settings, or use the shortcode, such as `[launchlist form="frm_8Kd2Qm4Rp9xy"]` with your own form ID from **Embed & API** in LaunchList.
3. To send your own forms to LaunchList, open **LaunchList** in your dashboard's menu (it sits with your form plugins, above Appearance), click **Connect to LaunchList**, sign in and choose a workspace. Back in WordPress, under **Your forms**, choose a LaunchList form for each form you want to send, check its fields under **Match fields**, and click **Save**.
4. Publish, then sign up once with your own email to see the signup arrive in LaunchList.

== Frequently Asked Questions ==

= Do I need a LaunchList account? =

Yes. The plugin shows the forms, widgets and updates you made in LaunchList, and sends your own forms' signups to your LaunchList workspace.

= Do I need to connect my site to show a LaunchList form? =

No. The block and the shortcode work without connecting. Connecting is for sending your own WordPress forms to LaunchList and for loading LaunchList on every page.

= Where do I find my form ID? =

In LaunchList, under **Embed & API**. It starts with `frm_`. Widgets and updates take your project's `data-project` value, from any widget snippet under **Embed & API**, then **Your website**. Once the site is connected, the block lists your forms and projects so you can pick them instead.

= Why does the editor show a card instead of my form? =

So that nothing typed in the editor becomes a real signup. The form appears on the published page and when you preview the page. A signup made in a preview is real.

= What can the shortcode show? =

* A form: `[launchlist form="frm_8Kd2Qm4Rp9xy"]`, with your own button text: `[launchlist form="frm_8Kd2Qm4Rp9xy" button="Join the waitlist"]`
* A button that opens the form in a popup: `[launchlist popup="frm_8Kd2Qm4Rp9xy" label="Join the waitlist" variant="modal"]`. `variant="slideover"` opens it as a panel from the side.
* A widget: `[launchlist widget="counter" project="acme"]`. `widget` takes `counter`, `leaderboard`, `milestone`, `countdown` or a widget ID that starts with `wgt_`.
* Your updates: `[launchlist updates="acme"]`

= Does my form plugin still send its own emails and keep its entries? =

Yes. LaunchList only receives a copy of each submission from the forms you chose, after your form plugin has accepted it.

= Which field does LaunchList use as the signup's email? =

The one you match to the LaunchList form's email field. The plugin matches the first email field for you, and the other fields by name; you can change any match under **Match fields**. Up to 20 of your form's other fields are kept with each signup as input data, named after their labels (accents removed, and characters other than letters, digits, spaces, hyphens and underscores turned into spaces).

= Can my own form show the person their place in line? =

No. Your form plugin shows its own success message. Use the LaunchList block or shortcode if you want the place in line and referral link shown on the page.

= What happens if LaunchList is down when someone submits my form? =

Your form works as usual. Your site keeps the submission and tries again about a minute later at first, then up to an hour apart, for 24 hours. It keeps at most 1,000 waiting signups (200 for one LaunchList form). You can see what was sent, what is waiting and what LaunchList did not add under **Recent deliveries** on the LaunchList screen.

= I copied my site to a staging site. Will the copy send signups? =

No. The connection remembers the address it was made at. A copy at another address stops sending forms and loading LaunchList on every page, and says so on its LaunchList screen. You can connect the copy as a site of its own, or remove the connection from it; neither touches the original site's connection.

= How do I disconnect the site? =

Click **Disconnect** on the LaunchList screen in your dashboard, or click **Disconnect** beside the site in LaunchList under **Embed & API**, then **Your website**. Signups LaunchList already received stay in LaunchList.

= What happens when I delete the plugin? =

The plugin asks LaunchList to remove the site's connection, then deletes its settings and the submissions still waiting to be sent from your database. Signups LaunchList already received stay in LaunchList.

= Does it work with a cookie consent plugin? =

Where a consent plugin uses the WP Consent API, the LaunchList script is added to every page, and the `launchlist_attribution` cookie written, only for visitors who allowed marketing cookies. Pages with a LaunchList block or shortcode still load the script, since the form needs it. Developers can change the every-page choice with the `launchlist_load_everywhere` filter.

== External services ==

This plugin connects to LaunchList, a service run by LaunchList (https://getlaunchlist.com), at `https://embed.getlaunchlist.com`. It is needed to show LaunchList forms, popups, widgets and updates, and to send your own forms' submissions to LaunchList.

What is sent, and when:

* **The LaunchList script** (`https://embed.getlaunchlist.com/v1/embed.js`) is loaded by your visitors' browsers on pages with a LaunchList block or shortcode, and on every page while the site is connected and **Load LaunchList on every page** is on (where the WP Consent API is active, only after the visitor allowed marketing cookies). It shows your forms, popups, widgets and updates, sends signups made through them to LaunchList, and remembers the referral link, campaign details and referring site the visitor arrived with. Loading it sends LaunchList the visitor's IP address, browser details (user agent) and the page address.
* **Connecting the site.** When you click Connect to LaunchList, your browser goes to LaunchList with this site's address, name, admin address and the plugin version. Your server then exchanges a one-time code for this site's key.
* **Your own forms.** When a visitor submits one of the forms you chose to send to LaunchList, your server sends LaunchList what they entered in that form, the form's title, the form plugin's name, the address of the page they submitted it from, and their referral and campaign details from the `launchlist_attribution` cookie.
* **Settings and the block editor.** When you open the LaunchList screen, check the connection, refresh your forms, edit a page with the LaunchList block, or disconnect, your server asks LaunchList for your forms and projects or for the connection's status, and sends the plugin version.
* **Deleting the plugin.** Your server asks LaunchList to remove the site's connection (a signed request that carries no visitor data).

LaunchList's terms of service: https://getlaunchlist.com/legal/terms
LaunchList's privacy policy: https://getlaunchlist.com/legal/privacy

== Privacy ==

* Loading the LaunchList script sends LaunchList the visitor's IP address and browser details, as loading anything from another site does.
* The LaunchList script keeps a visitor's referral code, campaign details (UTM parameters) and referring site for up to 90 days, in the browser's storage and, while the site is connected, in a first-party cookie named `launchlist_attribution`. It holds no name or email address.
* A submission LaunchList could not take yet is kept in your database (in the `launchlist_queue` table) and deleted as soon as LaunchList has it. One that could never be sent is deleted 7 days after the last try. Disconnecting deletes every submission still waiting.
* WordPress's Export Personal Data and Erase Personal Data tools find and remove waiting submissions by email address.
* The list of recent deliveries holds when, which form, and what happened. It never holds what a visitor typed.
* The plugin suggests text for your privacy policy under Settings, then Privacy.

== Screenshots ==

1. The LaunchList screen with your forms and where each one sends.
2. Matching a form's fields to your LaunchList form.
3. The LaunchList block in the editor.
4. Connecting your site to LaunchList.

== Changelog ==

= 1.0.0 =
* First release: the LaunchList block and shortcode, connecting a site, and sending Contact Form 7, WPForms, Gravity Forms, Elementor Pro, Fluent Forms, Ninja Forms and Formidable Forms submissions to LaunchList.
