Rutba CRM

Website forms

Turn every enquiry from your website into a contact and a deal, with a hosted form, your own HTML or a WordPress form plugin.

A website form gives you an address that accepts enquiries. Each enquiry becomes a contact and a deal in the stage you choose, with its message saved as a note and its campaign recorded, without anyone typing it in. You can link to a ready-made hosted form, paste a short HTML form into your site, or point the WordPress form you already have at it.

On WordPress, the WordPress plugin does all of this at once: it sends every enquiry from Elementor Pro, Contact Form 7 and WPForms in the background, with no webhook on any form, no per-address limit and the visitor's earlier visits linked. It makes its own website form for the site. Follow this page for a hosted form, your own HTML or another kind of site.

Before you start

  • Who can do it: owners and administrators of the company.
  • Plan: available when your plan includes Website forms.
  • A pipeline: new deals need a stage. See Deals and pipelines.
  • Consent: every form must have a box the visitor ticks to agree to be contacted. Without it, the enquiry is refused.

Create a form

  1. In the sidebar open Deals, then click Website forms.
  2. Under Create form, fill in:
Field What to enter
Form name Up to 120 characters. It also starts the title of each new deal, for example "Website form — Sara Ahmed"
New deals start in The pipeline stage for new deals
Assign new deals to Optional. This person gets each new deal and a notification, as long as they are an active member of the company
  1. Click Create form. The form card shows a summary such as Starts in New · Assigned to Sara · Enquiries: 0, and two things to use on your site:
    • Hosted form link: a ready page with name, phone, email, message and consent.
    • Code for your website: a plain HTML form that posts to the same address.

Choose how your site sends enquiries

The hosted form

Link to the Hosted form link from a button, an ad or a message. Add ?lang=ar (or en, tr, fr) to show it in another language, and add utm_source, utm_medium and utm_campaign to the link to record the campaign:

HOSTED_FORM_LINK?lang=ar&utm_source=instagram&utm_campaign=autumn-sale

The hosted page cannot be shown inside a frame on another site; link to it instead.

Your own HTML

Copy Code for your website, paste it into your page, and change the labels and styling. Keep the hidden crm_trap field: real visitors never fill it, and anything that does is treated as spam and quietly dropped. The fields are name, phone, email, message and consent. After sending, the visitor sees a thank-you page.

Older copies of this code have a hidden field named website instead. It still sends enquiries, but that field no longer stops spam, so copy Code for your website again and replace the old code on your site.

A WordPress form plugin

With the WordPress plugin you skip this section: it catches enquiries from these three form plugins itself. Without it, paste the address into each form as below. You do not have to rename your form's fields: common names in English, Arabic, Turkish and French are recognised (see the table below). The address to paste is the Hosted form link: the same address shows the hosted form and accepts posts.

Plugin Where to paste the address
Elementor Pro Edit the form, open Actions After Submit, add Webhook, paste the address in the Webhook section and turn on Advanced Data
Contact Form 7 Install a webhook add-on such as "CF7 to Webhook", then paste the address in the form's Webhook tab
WPForms With the Webhooks add-on, open the form's Settings → Webhooks, add a webhook, paste the address, use the method POST and name the body fields name, email, phone, message and consent
Any HTML form Set the form's action to the address and its method to POST

From your own server

Post the fields as a form or as JSON. Send the header Accept: application/json to get JSON answers: 200 with {"status": "received"}, or 422 with the errors per field. Browsers on other sites cannot read the answer, so use a normal form post or send from your server.

Your website server's address

A form plugin or your own server sends every enquiry from the website's server, so they all come from one address and would share the limit of 30 an hour meant for one visitor. To lift that limit for your server:

  1. Ask your hosting provider for your website server's public IP address.
  2. In Website forms, on the form's card, enter it in Your website server's address (optional).
  3. Click Save address.

Enquiries from that address are then not held back by the per-address limit. The form's limit of 120 enquiries an hour still applies. Only a public IPv4 or IPv6 address is accepted; anything else shows Enter a public IPv4 or IPv6 address, or leave it empty. To remove the address, empty the field and click Save address.

Fields

Field Rule Also recognised as
name Required, up to 160 characters full_name, fullname, your-name, your_name, first_name, الاسم, الاسم الكامل, اسمك, ad, ad soyad, nom, nom complet
email Email or phone is required e-mail, your-email, your_email, email_address, البريد, البريد الإلكتروني, الايميل, الإيميل, e-posta, courriel
phone 6 to 15 digits, with an optional +. Include the country code tel, mobile, your-phone, your-tel, your_phone, phone_number, whatsapp, الجوال, رقم الجوال, الهاتف, رقم الهاتف, واتساب, telefon, téléphone
message Optional, up to 2000 characters. Saved as a note your-message, your_message, comments, comment, details, الرسالة, رسالتك, التفاصيل, mesaj, votre message
consent Required and must be ticked Any field whose name starts with consent, acceptance, agree, privacy, gdpr, الموافقة, أوافق, onay or accord
page Optional page address page_url, referer, referrer
utm_source, utm_medium, utm_campaign Optional, up to 100 characters Read from the page address when not sent on their own

Names are matched without regard to capital letters. In Elementor's advanced data, both a field's ID and its label are tried.

What happens to an enquiry

The email and the phone are checked against your contacts that are not archived:

Result in Recent enquiries When What is created
New lead Nobody matches A new contact, with the source website, and a deal in the chosen stage
Known contact, new deal A contact matches but has no open deal in that pipeline A deal for the existing contact
Repeat enquiry A contact matches and has an open deal in that pipeline Only the note, so no duplicate deal

An existing contact's details are never overwritten. The visitor sees the same answer in all three cases, so the form never reveals whether an email is already known. New contacts can start your automations; see Automations.

Test it

  1. Open the Hosted form link with ?utm_campaign=test-form added to it and send an enquiry with your own details, ticking the consent box.
  2. In Website forms, the form's Enquiries: count goes up and Recent enquiries shows New lead with the campaign.
  3. In Deals, the new deal is in the chosen stage, and the message is a note on the contact.
  4. Send the same enquiry again: it shows as Repeat enquiry and no second deal appears.
  5. Under the form, the status line now says Working with the time of the last enquiry. If your site's form sends fields with other names, the line says Needs attention and names the fields to check. See Connection status.

Limits

  • One sending address can post up to 10 times a minute, and up to 30 times an hour to one form. WordPress plugins send from your web server, so all enquiries from a plugin share these limits, unless you enter the server under Your website server's address (optional): then the 30 an hour limit does not apply to it. Enquiries sent by the WordPress plugin are known by the site's signature, so this limit never applies to them.
  • One form accepts up to 120 enquiries an hour.
  • More than 5 enquiries in an hour to one form about the same email (or the same phone, when no email is sent) are accepted on screen but not saved.
  • A form that is turned off answers "not found".

Good to know

  • Turn off stops a form; Turn on restarts it. Replace the link gives the form a new address at once and the old one stops working, so update your site straight away. The form key is public by design: the limits protect it, not secrecy.
  • A field named website is fine. It is treated like any other field of your form and no longer stops the enquiry. Only the hidden crm_trap field is the spam trap.
  • Tracking: with the tracking snippet on your site, forms on your site that post straight to the form address, like Code for your website, are linked to the visitor's earlier visits. The hosted form is not on your site, and plugin webhooks send from your server, so neither is linked. Enquiries sent by the WordPress plugin carry the visitor ID, so they are linked.
  • Privacy: the time of consent, the page and the campaign are kept with each enquiry. The visitor's IP address is not.

Troubleshooting

What you see What to do
Nothing arrives from Elementor Turn on Advanced Data in the Webhook action, and check that the form has a consent or acceptance field
Please agree before sending. The consent field is missing, unticked, or named in a way that is not recognised. Name it consent
Enter a phone number or an email address. Neither an email nor a phone was recognised. Rename the fields, or use the names in the table
Enter a valid phone number with its country code. The phone has letters or the wrong number of digits
Enquiries stop for a while on a busy day A plugin hit the 30 an hour limit for one address. Enter your website server's address on the form, as described above. If the form's own 120 an hour is reached, spread traffic over several forms
Spam arrives through code you pasted earlier The code still has the old hidden website field. Copy Code for your website again
Enter a public IPv4 or IPv6 address, or leave it empty. The server address is private, reserved or not an IP address. Ask your hosting provider for the public one

Last updated 2026-11-08