=== Wizup Forms ===
Contributors: wizupapp
Tags: wizup, elementor, contact form 7, crm, leads
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.3.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Send Elementor Pro and Contact Form 7 submissions to Wizup with field mapping, lead stages and optional repeat inquiry notes.

== Description ==

Turn website inquiries into leads in Wizup.

Wizup Forms connects Elementor Pro Forms and Contact Form 7 to your Wizup lead management account. Choose the form fields to send, select a lead stage, and keep new inquiries in the system your team uses to follow up.

The plugin adds a Wizup action under Elementor's Actions After Submit and a Wizup settings tab in Contact Form 7. Connect your account once with an API token, then enable the connection for each form you want to use. No separate webhook or automation service is required.

The plugin is free and open source. It connects to the external Wizup service, which requires a Wizup account on a plan that includes API access. Elementor Pro or Contact Form 7 must be installed separately. The plugin's administration interface and built-in guide are currently in Hebrew, with right-to-left layouts.

= Features =

* Send validated form submissions to the existing Wizup lead API.
* Select actual form fields for name, phone, email and an optional last name.
* Use automatic name, phone and email detection in Elementor, or choose fields manually.
* Choose a lead stage from your Wizup account.
* Map message content and other fields to existing custom fields in Wizup.
* Normalize local phone numbers using a configurable country code. The default is 972 for Israel.
* Optionally save repeat inquiries from the same phone number as new notes on the existing contact, mirrored to its linked lead.
* Process delivery in the background with an encrypted queue, bounded retries and stable request identifiers.
* Review delivery status, retry eligible failures and view private validation diagnostics from the settings page.
* Open the Wizup website and help center directly from the plugin.

= Repeated inquiries =

Wizup keeps one lead per phone number. If a visitor contacts you again, the optional repeat inquiry setting can preserve the new inquiry as a note instead of creating another lead.

This option is off by default. It requires contacts:read and notes:write permissions in addition to the lead permissions. The plugin uses it only after Wizup explicitly rejects a duplicate phone number and an exact phone match is found. Existing lead details, stage and earlier notes are preserved. Each note includes the mapped form data and original inquiry time. Long inquiries may be split into numbered notes.

Other validation errors are not treated as duplicate inquiries. Earlier failed submissions require an explicit recheck from the delivery log. Note deliveries already in progress can finish if the option is later turned off.

= Message fields and custom fields =

Create the destination custom field in Wizup first. For a message, use a long text field. Add a custom mapping in the form, select the message field, and enter the destination field's internal key, not its display label. A field named "Message" might have a key such as field_ab12cd34; this is an example, not a universal key.

The built-in Hebrew guide explains how to open your Wizup lead settings, create a field, and use browser DevTools to inspect the field's label, key and type. The plugin does not automatically fetch or create your custom field definitions. Only explicitly mapped fields are sent. File uploads, lead sources and products are not supported. Marketing consent is not enabled automatically.

= External service and privacy =

This plugin connects your WordPress site to Wizup at https://wizup.app/api/v1. It makes authenticated HTTPS requests using the API token you enter. A Wizup account with API access is required to use this integration.

Requests are made only for the configured integration:

* When you click the connection test, the plugin reads your lead stages. This does not create a lead.
* After an enabled form passes validation, background delivery sends its mapped name, phone number, optional email, chosen stage and custom field values to create a lead.
* If repeat inquiry handling is enabled and Wizup confirms a duplicate phone number, the plugin searches contacts by phone and sends note content containing the mapped values, original submission time, form source and form ID.
* Manual retries and scheduled retries may repeat these requests using the same operation identifiers.

The token is sent in an authorization header. The API receives your server's connection information and the plugin's user agent as part of normal HTTP requests. The plugin does not send analytics or telemetry and does not load remote tracking assets.

Tokens and queued form data are encrypted in the WordPress database using OpenSSL and keys derived from WordPress authentication salts. Changing the salts makes existing encrypted data unreadable. Delivered payloads are erased from the local queue after completion. Logs, undelivered payloads and stored diagnostics expire after 14 days when WP-Cron runs. The status table does not display names, phone numbers or message content; administrators can separately open encrypted validation details when available.

Deactivation preserves the queue. Uninstall removes this site's plugin options, queue table and Contact Form 7 mapping metadata. Elementor mappings remain in page content, without the API token. Removing local data does not delete records already sent to Wizup.

Site owners should explain the transfer of form data to Wizup in their own privacy notice and configure any consent fields appropriate to their forms.

* [Wizup website](https://wizup.app/)
* [Wizup Terms of Use](https://wizup.app/terms-of-use)
* [Wizup Privacy Policy](https://wizup.app/privacy-policy)
* [Wizup help center](https://wizup.app/public/help)

Wizup Forms is developed by Wizup. Elementor and Contact Form 7 are separate third-party products. Their names identify supported integrations and do not imply endorsement by their developers.

== Installation ==

1. Install and activate Wizup Forms in WordPress. For a ZIP installation, use Plugins > Add New Plugin > Upload Plugin.
2. Install and activate Elementor Pro with its Form widget, or Contact Form 7.
3. In Wizup, create an API token with leads:write and leads:read permissions. Your plan must include API access.
4. Open Settings > Wizup Forms, paste the token and save the connection.
5. Click the connection test to load lead stages. This tests read access; verify write access by sending a real test submission.
6. Configure each form as described below, save it, then submit a test using a valid phone number.
7. Check both the delivery log in WordPress and the resulting lead or note in Wizup.

= Elementor Pro =

1. Edit the page in Elementor and select the Form widget.
2. Under Actions After Submit, add Wizup. Keep any other actions you need, such as Email.
3. Open the Wizup section. Select the name and phone fields, plus email and last name if used. Review the automatic selections before publishing.
4. Set the country code and optional lead stage. Add any custom field mappings using existing Wizup field keys.
5. Save or update the page and test the published form. A separate Webhook action is not required for this connection.

= Contact Form 7 =

1. Open Contact > Contact Forms and edit the relevant form.
2. Open the Wizup tab and enable sending inquiries from this form.
3. Choose name, phone, optional email and last name from the form field lists.
4. Set the country code, optional lead stage and custom field mappings.
5. Save the form and submit a test. Existing mail settings continue to operate independently.

= Optional repeat inquiries =

1. Give the Wizup token contacts:read and notes:write permissions as well as the lead permissions.
2. Open Settings > Wizup Forms and enable saving repeat inquiries as new notes.
3. Save the setting and submit the form again with the same valid phone number.
4. Verify the repeat inquiry status and the new note in Wizup.

= Server requirements =

WordPress 6.5 or newer, PHP 8.0 or newer, OpenSSL, outbound HTTPS access to wizup.app and working WP-Cron are required. On sites with little traffic, configure a server cron job to run WordPress scheduled tasks regularly. Activate the plugin separately on each site; network-wide Multisite activation is not supported.

== Frequently Asked Questions ==

= Is Wizup Forms free? =

The plugin is free under the GPL. The connected Wizup service requires an account on a plan that includes API access. Elementor Pro is a separate product; Contact Form 7 is another supported option. No third-party automation subscription is required by this plugin.

= Does it work with the free version of Elementor? =

The Elementor integration needs the Form widget from Elementor Pro. Elementor alone does not provide that widget. You can use Contact Form 7 instead.

= Which fields are required? =

Name and a valid phone number are required. Email is optional, but must be valid when supplied. The requirements and allowed values of any custom fields in your Wizup account also apply.

= Can I send a message or other custom values? =

Yes. Create the destination field in Wizup, find its internal key using the built-in guide, and map the corresponding form field to it. For message text, use a long text field. Display labels and internal keys are not interchangeable. Files are not transferred.

= Will repeat submissions create duplicate leads? =

No. Wizup permits one lead per phone. When you enable repeat inquiry notes and grant the required permissions, a confirmed duplicate inquiry is added as a new contact note mirrored to the linked lead. The plugin does not overwrite the existing lead's details or stage.

= A visitor saw a success message. Has Wizup received the lead? =

A successful form submission means the inquiry was accepted into the local delivery queue. Delivery to Wizup happens in the background. Confirm the final status in the plugin's delivery log and check the corresponding record in Wizup.

= Why does a submission stay pending? =

Check that WP-Cron runs and that your server can reach Wizup over HTTPS. You can process due inquiries from the settings page. A server cron job is recommended for low-traffic sites. Temporary network errors, rate limits and server errors are retried with a bounded retry budget.

= What does HTTP 422 mean? =

Wizup rejected one or more values. Check the private rejection details in the log, field mappings, required values and phone format. A 422 response does not necessarily mean the phone already exists. Repeat inquiry handling only applies to a confirmed duplicate-phone rejection.

= Do I need to change my Wizup dashboard or set up a webhook? =

No dashboard code changes are required. Create a token and configure any destination custom fields in your account. The plugin uses the existing API directly. A separate Elementor Webhook action is not required.

= Is the plugin interface available in English? =

The current administration interface and built-in field guide are in Hebrew with right-to-left layouts. This English listing explains setup and behavior. The screenshots show the Hebrew interface.

= Where can I get help? =

Visit the [Wizup help center](https://wizup.app/public/help). Include the plugin version, form integration and privacy-safe delivery status. Do not post API tokens or visitors' personal information in public support topics.

== Screenshots ==

1. Connect a Wizup API token and configure optional repeat inquiry notes. Hebrew administration interface.
2. Setup instructions for Elementor Pro and Contact Form 7, with the guide to finding custom field keys in Wizup.
3. Add Wizup under Actions After Submit in the Elementor Pro Form widget.
4. Select form fields, country code and a lead stage in Elementor's Wizup action settings.

== Changelog ==

= 1.3.3 =
* Prepare the WordPress.org readme, service disclosures and GPL license file.
* Prepare private queue SQL identifiers and strengthen input sanitization and output escaping.
* Limit delivery warnings to the plugin settings screen.

= 1.3.2 =
* Store bounded validation details encrypted with the inquiry and provide an administrator-only diagnostic screen.

= 1.3.1 =
* Recognize standard duplicate-phone validation responses.

= 1.3.0 =
* Add optional repeat inquiry notes, encrypted delivery progress and stable retry keys.
* Add specific HTTP 422 diagnostics and manual rechecks using the original request.

= 1.2.1 =
* Replace field import with a Hebrew guide to finding custom field keys in DevTools.

= 1.1.1 =
* Add live Elementor form-field selectors and automatic name, phone and email mapping while preserving manual choices.

= 1.0.1 =
* Use regular hyphens and add a linked Wizup logo and help center link.

= 1.0.0 =
* Initial standalone connector for the existing Wizup lead API.

== Upgrade Notice ==

= 1.3.3 =
Publication documentation and defensive input, output and database-query improvements. Existing field mappings are retained.
