Rutba CRM

Form submissions

Post enquiries from your own website form or server to a Rutba CRM website form, with the fields, aliases, responses and limits.

Each website form in your workspace has a public address that accepts enquiries. Every enquiry becomes a contact and a deal without anyone typing it in. This page describes that address for developers who post to it from their own HTML form, a form plugin or a server. Creating forms on the screen is covered in Website forms.

Before you start

  • Website forms are available when your plan includes Website forms.
  • An owner or administrator creates the form: open Deals in the sidebar, then Website forms, and select Create form. Each form has a Hosted form link and a Code for your website box.
  • The form's address contains its key, 32 lower-case hexadecimal characters. It is written here as FORM_KEY. The key is not a secret, because it appears in your web page. Protection comes from the limits below.

The address

POST https://rutbacrm.com/intake/FORM_KEY

The same address with GET shows the hosted form page. Add ?lang=ar, ?lang=en, ?lang=tr or ?lang=fr to choose the language of the page and of its error messages. The hosted page cannot be shown inside an iframe on another site.

The address accepts a normal form post (application/x-www-form-urlencoded or multipart/form-data) and JSON. There is no CSRF token to send and no API key.

Fields

Field Required Rules
name Yes Up to 160 characters
email One of the two A valid address, up to 254 characters
phone One of the two 6 to 15 digits with an optional +, after spaces, dashes and brackets are removed. Arabic digits are accepted, and a leading 00 becomes +
message No Up to 2000 characters. Saved as a note on the contact
consent Yes Must be accepted: 1, yes, on or true
page No The page the visitor was on, up to 500 characters
utm_source, utm_medium, utm_campaign No Up to 100 characters each
crm_trap Never fill The spam trap. Keep it in your form, hidden from people
crm_vid No The visitor ID from the tracking script, which links the visits to the new contact. The script adds it for you

If page carries campaign tags in its address, such as ?utm_campaign=ramadan-sale, and you did not send the tags separately, they are read from it.

A field named website is an ordinary field and no longer stops the enquiry. Code copied from Code for your website before the trap was renamed has a hidden website field: it still delivers enquiries but no longer stops spam, so copy the code again.

Field names from form plugins

You can keep the field names your form plugin already uses. These names are recognised, without regard to capital letters:

Field Also accepted
name full_name, fullname, your-name, your_name, first_name, الاسم, الاسم الكامل, اسمك, ad, ad soyad, nom, nom complet
email e-mail, your-email, your_email, email_address, البريد, البريد الإلكتروني, الايميل, الإيميل, e-posta, courriel
phone tel, mobile, your-phone, your-tel, your_phone, phone_number, whatsapp, الجوال, رقم الجوال, الهاتف, رقم الهاتف, واتساب, telefon, téléphone
message your-message, your_message, comments, comment, details, الرسالة, رسالتك, التفاصيل, mesaj, votre message
consent Any filled field whose name starts with consent, acceptance, agree, privacy, gdpr, الموافقة, أوافق, onay or accord
page page_url, referer, referrer, written exactly so, in lower case

Nested plugin data is read too: fields under fields or form_fields, by their ID or their title, with raw_value or value, and the page address under meta. Up to 50 nested fields are read.

Send an enquiry from a server

curl -X POST https://rutbacrm.com/intake/FORM_KEY \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"name": "Layla Hassan", "email": "layla@example.com", "phone": "+966500000003", "message": "Do you ship to Jeddah?", "consent": "1", "page": "https://shop.example.com/contact?utm_source=google&utm_campaign=ramadan-sale"}'

Send Accept: application/json to get JSON answers. Without it, the address answers with the hosted thank-you page or the form with its errors, which is what a plain HTML form wants.

A server, or a form plugin on your website's server, sends every enquiry from one address. Enter that server's public IP address in the form's Your website server's address (optional) and click Save address, so the per-address hourly limit below does not hold it back. Only a public IPv4 or IPv6 address is accepted.

Responses

Status JSON body Meaning
200 {"status": "received"} Accepted
422 {"errors": {"consent": ["Please agree before sending."]}} A field is missing or invalid. Each key lists its messages
404 The key is wrong or was replaced, the form is turned off, the company is suspended, or the plan does not include Website forms
429 Too many enquiries, see the limits below

The answer is the same 200 whether the person was new or already known, so a visitor cannot use the form to find out whether an email is on file.

What happens to an enquiry

The enquiry is matched against active contacts by email or phone, and existing details are never overwritten:

Situation Result Shown as
No match A new contact (source website, status lead) and a new deal in the form's stage. Fires A new lead arrives New lead
A match with no open deal in the form's pipeline A new deal for the existing contact Known contact, new deal
A match with an open deal in that pipeline No new deal, only the note Repeat enquiry

The deal is named after the form and the person, and goes to the person chosen under Assign new deals to, or else to the contact's owner. The message becomes a note. The consent time, page and campaign tags are kept with the enquiry. The visitor's IP address is not stored.

Limits

Limit Value When exceeded
Posts from one address 10 a minute 429
Enquiries from one address to one form 30 an hour, except from the form's saved server address 429
Enquiries to one form in total 120 an hour 429
Enquiries about the same email or phone to one form 5 an hour Answered 200, but nothing is saved
A filled crm_trap field Answered 200, but nothing is saved

Good to know

  • There are no CORS headers. A browser script on another site cannot read the answer, and a JSON post from a browser is blocked before it is sent. From a web page, use a normal form post. Use JSON from servers.
  • The Replace the link button gives the form a new key at once. The old address answers 404 from then on, so update your site straight away.
  • File uploads are not stored, and fields other than those above are ignored.

Troubleshooting

Problem What to check
422 on consent Your form has no consent field, or its name does not match. Name it consent and send 1 when ticked
422 on email and phone Neither a valid email nor a phone was sent. Check the field names against the alias table
404 Copy the address again from Website forms. The link may have been replaced, or the form turned off
Posts succeed but nothing appears The hidden crm_trap field was filled, often by browser autofill, or the same person sent more than 5 enquiries in an hour

Last updated 2026-11-08