Bharat AI Saathi
ServicesIndustriesSetupsHow we workGuidesFounderVPS HostingContactGlobal (USD)
WhatsApp +91 77352 68199
support@bharataisaathi.com
Mon–Sat 10:00–19:00 IST
Growth Systems · Global catalog

WordPress form to HubSpot with an instant AI reply

Send every WordPress form to HubSpot, map fields to contacts, trigger an AI reply within 60 seconds, and keep the account in your name.

Growth Systems

To send a WordPress form to HubSpot, embed a form that fires a webhook on submit, upsert the contact by email through the HubSpot API, and let a workflow send first reply when a status property flips. Done this way, every inquiry becomes a HubSpot contact in seconds and gets an answer inside 60 seconds, in an account your business owns.

Use the free lead form template

How the pieces fit together

The route has five parts, and each does one job. A WordPress page holds an embedded form. On submit, the form calls a webhook. A small automation (n8n, Make or Zapier all work) upserts the contact in HubSpot and writes the AI draft. A HubSpot workflow watches one property and sends the reply when it flips. Urgent inquiries also ping the owner on Slack or email.

This is the capture layer of the AI CRM and instant-reply system we build for local-service businesses, med-spas, coaches and agencies. The form is the front door. If a contact arrives without a phone number, a source or a readable message, everything after it has less to work with.

For the form we use Qwenvo, which our team builds. It costs nothing, and webhooks, a custom domain, partial submissions, no badge, teammates and custom CSS are on for every account. Tally puts several of those behind its $29 a month Pro plan, and Fillout keeps custom domains and partial submissions for its $89 a month Business plan. There is one real gap: Qwenvo has no one-click HubSpot connector, so the sync goes through a webhook. If you want a native connection with no automation layer, Fillout lists strong HubSpot integrations, and HubSpot's own forms need nothing extra.

Step by step setup

  1. Build the form. Start from the lead generation template and keep it to the fields in the mapping table below. Add hidden fields for the page URL, utm_source and utm_campaign.
  2. Embed it. In WordPress, add a Custom HTML block and paste the Standard embed code. The WordPress embed guide also covers popup and full page embeds.
  3. Put it on your own domain. On the Domains page, add forms.yourbusiness.com, add the CNAME to qwenvo.com and the TXT record shown, click Verify, then pick the domain on the Share tab. The HTTPS certifiate is issued on the first visit.
  4. Create the HubSpot properties before anything else sends data. The custom ones are listed in the table below.
  5. In the client's HubSpot account, create a private app with the crm.objects.contacts.read and crm.objects.contacts.write scopes. Store its token in the automation, never in WordPress.
  6. Add the automation's webhook URL to the form. The webhooks help article shows where.
  7. In the automation, lowercase the email, upsert the contact, then call the model for the draft, then patch the comtact with the draft and the status ready.
  8. Build the workflow described below.
  9. Test with three submissions: a new email, the same email twice, and one with the phone left blank.

We upsert first and draft second on purpose. If the model call fails or times out, the lead is already in HubSpot and nobody loses an inquiry.

Form to contact mapping

Form field Qwenvo block HubSpot property Note
First name Short answer firstname Used in the greeting
Last name Short answer lastname Or split a single name field in the automation
Email Email email The dedupe key for the upsert
Phone Phone number phone Ask only if someone will actually call
What do you need Long answer inquiry_message (custom, multi-line text) The text the AI reads
Service Dropdown service_interest (custom, dropdown) Picks the reply template and who follows up
Page URL Hidden field source_page (custom) Shows which page earns leads
UTM source and campaign Hidden fields utm_source_form, utm_campaign_form (custom) Kept apart from HubSpot's own analytics fields
Consent Checkboxes marketing_consent (custom, single checkbox) Gates nurture sequences, not the first reply

This is the body the automation sends to POST https://api.hubapi.com/crm/v3/objects/contacts/batch/upsert for a new submission:

{
  "inputs": [
    {
      "idProperty": "email",
      "id": "maria.ortiz@example.com",
      "properties": {
        "email": "maria.ortiz@example.com",
        "firstname": "Maria",
        "lastname": "Ortiz",
        "phone": "+14155550134",
        "inquiry_message": "Looking for a quote on a kitchen repaint, ideally before March.",
        "service_interest": "painting",
        "source_page": "/services/painting/",
        "utm_source_form": "google",
        "utm_campaign_form": "spring-paint",
        "marketing_consent": "true",
        "ai_reply_status": "new"
      }
    }
  ]
}

We leave lifecyclestage out of the upsert. HubSpot lifecycle stages normally only move forward, so a returning customer would not go back to lead. The workflow sets the stage to lead only when it is empty.

Replying to someone who just wrote to you is different from enrolling them in a nurture sequence. Check marketing_consent before the second.

Read the webhooks guide

The workflow trigger for the AI reply

Create a contact-based workflow with one enrollment trigger: ai_reply_status is equal to ready. Turn on re-enrollment for that trigger. A returning customer's upsert resets the status to new, and the later patch to ready enrolls them again, so repeat inquirers still get an answer.

Workflow actions need a HubSpot tier that includes them, so check your plan before you promise this to a client. The actions, in order:

  1. Send an email whose body is the ai_reply_draft prpoerty token.
  2. Set ai_reply_status to sent.
  3. Set lifecycle stage to lead if it is blank.
  4. Create a call task for the owner.

The draft follows tight rules in the model prompt. It greets the person by first name, restates what they asked in one line, naames the next step and when it happens, and asks at most one question. It quotes no prices, gives no medical or legal advice and promises no availability. The model step also classifies each inquiry first. Complaints, spam and job seekers skip the AI reply and go to a person.

Urgent leads are handled outside HubSpot. Qwenvo's AI triage gives every submission a category, a priority from low to urgent, a sentiment and a short summary. A routing rule can send high and urgent ones to a Slack incoming webhook or up to five email addresses, so the owner hears about them while the HubSpot reply goes out.

Then measure the result. For your first twenty real leads, compare the submission time in Qwenvo's Submissions table with the sent time on the HubSpot contact timeline. If the gap is over 60 seconds, the delay is almost always the model step or a workflow that is not re-enrolling.

Keeping the HubSpot account in the client's name

An agency building this for you should never be the owner of your lead data. The setup that avoids it:

  • The business owner creates the HubSpot account with a business email and pays for it directly.
  • The owner creates the private app, or approves it, so the token belongs to their account.
  • The automation workspace sits under the cliient too, and we join it as a member.
  • The form lives in the client's Qwenvo account, with us added as teammates (teammates are free), on a forms. subdomain of their own domain.
  • We get HubSpot user seats wkth the permissions the build needs, and the owner keeps super admin.

At handover we write a one page record: property names, workflow names, where the token is stored and which subdomain the form uses. Offboarding is then three actions. Remove our seat, rotate the token, remove us from the Qwenvo account. Nothing else breaks, because nothing ever ran through our accounts.

What breaks in practice

Duplicate contacts come from email casing and typos. Lowercase and trim before the upsert, and the idProperty match does the rest.

Spam creates junk contacts and skews your lead counts. Add the Captcha block to the form, and read the contact form spam filter post if bots still get through.

HubSpot returns a 429 status when you hit its API rate limits. Retry with a delay, log every failed call, and alert someone when the same contact fails twice.

Auto replies loop if the trigger is loose. Enroll only on the status property, never on an inbound email, so an out-of-office message cannot start another reply.

Partial submissions show up in Qwenvo as incomplete rows. They are useful for seeing where people quit, but review them by hand before pushing any of them to HubSpot.

Start from the contact form

Questions teams ask

Do I need the HubSpot WordPress plugin?

No. The embed is plain HTML and the contact sync goes through the API. You can still add HubSpot's tracking code to the site, but that is a separate decision from this setup.

Can Qwenvo send to HubSpot without Zapier, Make or n8n?

Not through a native connector today. It posrs to any webhook URL, and the three tools above can all catch one. Qwenvo is hosted in the United States, whole Tally is hosted in Europe, so check that against any data location rules your clients have.

Is it safe to let AI reply to leads automatically?

It is safe when the reply is narrow. An acknowledgment that restates the request and names the next step carries little risk. Anything involving pricing, health, legal questions or an unhappy customer should go to a person.

How long does the build take and what does it cost?

As part of our system it is a $1,000 seyup plus a $299 a month care plan, delivered in 2 to 14 days, and the HubSpot account stays yours throughout.

Your next step today: list the fields on your current WordPress form, write the matching HubSpot property name beside each one using the table above, and create those properties in HubSpot.

This system

AI CRM & Instant-Reply Engine

$1,000 setup
+ $299/month care plan

Third-party platform and model usage billed to you directly. No lock-in. Live in 7 days.

More on AI CRM & Instant-Reply Engine