We use essential cookies to make our site work. With your consent, we may also use non-essential cookies to improve user experience and analyze website traffic. By clicking “Accept,” you agree to our website's cookie use as described in our Cookie Policy. You can change your cookie settings at any time by clicking “Preferences.”
Skip to content
Internal — not linked in site navigationBack to the site

Website form test plan

Every lead form on the site, the test client to submit on each one, and the exact records those submissions should create in ActiveCampaign.

Form implementations
4
Page placements
14
Test clients
9

Read this before the first submission

Each of these will make a test look like a failure when the form is working fine.

1

Check the consent box on every submission

The CRM push only runs when SMS/email consent is true. Without it the lead is stored with a status of "stored_no_consent" and nothing reaches ActiveCampaign — the submission looks successful but no contact appears.

2

Use a different email + phone for every test

Submitting the same email and phone more than 3 times in 10 minutes returns "We already received your request." Each test client below has its own reserved fake address and 555-01xx number.

3

Run the tests in two sittings

The endpoint allows 5 submissions per IP address per 10 minutes. Run Tests 1–5, wait 10 minutes, then run Tests 6–9. A 429 error means the throttle kicked in, not that the form is broken.

4

Leave the hidden "website" field empty

Three of the four forms carry an invisible honeypot field. Browser autofill can occasionally populate it, which silently discards the submission — no lead, no CRM contact, but a success message is shown.

5

Tag each test contact form-test in ActiveCampaign

Every contact also receives an automatic source tag (Webform: General Pest / Termite / Commercial). Add form-test on top of that after you confirm the contact, then remove it or archive the contacts when testing is done.

6

This writes to live data

The preview and the live site share the same production records unless Test Data is switched on in Settings. These tests create real Lead records and real ActiveCampaign contacts and deals — use only the reserved fake details below, never a real customer.

Guardrail checks — run these once

  • Consent gate. Submit one form with every field filled but the consent box empty. Expect the thank-you screen, a stored lead with crm_push_status "stored_no_consent", and no contact in ActiveCampaign.

  • Honeypot. Inspect the form and type anything into the hidden website field, then submit. Expect a success message, zero new leads, and nothing in ActiveCampaign.

  • Duplicate throttle. Submit the same email and phone 4 times within 10 minutes. The 4th should be rejected with "We already received your request."

  • Lead record status. After each passing test, open the Lead record in the app data and confirm crm_push_status reads "pushed". Any other value names the step that failed ("deal_failed", "failed: sync 4xx").

Forms used on multiple pages

Three components carry almost every lead on the site. Fix or verify one and you have verified every page that mounts it.

Form 1 · 4 placements

Residential inquiry form

Auto tag Webform: General PestGeneral Pest Control → New Lead

Where it appears

What lands in ActiveCampaign

  • Contact created by email with first name, last name and phone
  • Contact fields: Zip Code, Lead Source, Landing Page, Form ID
  • Opt-In Date & Time only fills when consent is checked
  • Auto tag: Webform: General Pest
  • Deal "<Name> - Residential" in General Pest Control → New Lead, with Deal Service Type, Zip Code, Property Type = Residential, Form ID = Residential

Form ID field: "residential" — "contact-residential" when submitted from the Contact page

Required to submit

Service type (Pest Control, Rodent Control, Mosquito Control, Live Bee Removal, Bed Bugs, Other) · First name, Last name · Phone, Email · ZIP code (5 digits) · Consent checkbox

Form 2 · 3 placements

Commercial quote form

Auto tag Webform: CommercialGeneral Pest Control → New Lead (Termite Control → Termite → New Lead)

Where it appears

What lands in ActiveCampaign

  • Contact fields: Company Name, Property Type (mapped label, e.g. restaurant → "Restaurant / Bar"), Form ID
  • Auto tag: Webform: Commercial
  • Deal "<Name> - Commercial" in General Pest Control → New Lead, or the Termite pipeline when Service Type is Termite Control
  • Deal fields: Service Type, Property Type, Sq. Ft. (first number in the box), Form ID = Commercial
  • Deal description carries "Issue: … | Contact Time: …"

Form ID field: "commercial" — "contact-commercial" when submitted from the Contact page

Required to submit

Service type (General Pest Control or Termite Control) · Company name · First name, Last name · Property type · Phone, Email · Consent checkbox

Form 3 · 6 placements

Termite inspection form

Auto tag Webform: TermiteTermite → New Lead

Where it appears

What lands in ActiveCampaign

  • Contact fields: Address (the full property address), Form ID
  • Auto tag: Webform: Termite
  • Deal "<Name> - Residential" in Termite → New Lead
  • Deal fields: Real Estate Transaction (Yes / No), Closing / Inspection Deadline, Service Type = Termite Control, Approx. Property Age (number only), plus Address / City / State / ZIP parsed out of the address box
  • Deal description shows the human-readable suspected issue

Form ID field: "termite" — "contact-termite" when submitted from the Contact page

Required to submit

Real estate transaction? Yes / No · Closing deadline (only when Yes is selected) · Approximate property age · Suspected issue · Property address · First name, Last name · Phone, Email · Consent checkbox

Forms used on one page only

Form 4 · 1 placement

Build a Plan quote form

One page
Auto tag Webform: General PestGeneral Pest Control → New Lead

Where it appears

What lands in ActiveCampaign

  • Contact created by email with first name, last name and phone
  • Contact fields: Zip Code, Lead Source, Landing Page, Form ID
  • Auto tag: Webform: General Pest
  • Deal "<Name> - Residential" with Deal Service Type and Zip Code
  • Its own thank-you panel renders on the page instead of a redirect — the submission still went through

Form ID field: "residential" — the intended "plan-hero" value is overwritten before submit

Required to submit

Service type · First Name, Last Name · Email, Phone · Zip Code · Consent checkbox

Forms not used anywhere

No unused forms. All three shared form components are imported by live pages, and the fourth form lives inside the Build a Plan hero — nothing in the codebase is orphaned.

The nine test submissions

Work down the list, mark each one, and confirm the matching contact and deal in ActiveCampaign before the next. Results are saved on this device only.

1Test 1

Test1 Homeowner

on Residential inquiry form
Home/#quote
Type this
  • Service type: Pest Control
  • First name: Test1 · Last name: Homeowner
  • Phone: (555) 555-0101 · Email: test1@example.com
  • ZIP: 92037 · Consent: checked
Confirm in ActiveCampaign

Contact + deal "<Test1> - Residential" in General Pest Control → New Lead, tag Webform: General Pest, Form ID = residential, Zip 92037.

2Test 2

Test2 Contact

on Residential inquiry form
Contact (Residential tab)/contact#quote
Type this
  • Service type: Rodent Control
  • First name: Test2 · Last name: Contact
  • Phone: (555) 555-0102 · Email: test2@example.com
  • ZIP: 92101 · Consent: checked
Confirm in ActiveCampaign

Same as Test 1, but Form ID must read contact-residential and Deal Service Type must be Rodent Control.

3Test 3

Test3 Inspection

on Residential inquiry form
Schedule Inspection/schedule-inspection#quote
Type this
  • Service type: Pest Control
  • First name: Test3 · Last name: Inspection
  • Phone: (555) 555-0103 · Email: test3@example.com
  • ZIP: 92014 · Consent: checked
Confirm in ActiveCampaign

Standard residential contact and deal; Form ID = residential, Grading page on the contact records the Schedule Inspection URL.

4Test 4

Test4 Cafe Group

on Commercial quote form
Commercial Pest Control/commercial-pest-control#quote
Type this
  • Service type: General Pest Control · Company: Test4 Cafe Group
  • Contact title: Owner · Property type: Restaurant · Sq ft: 4,200
  • First name: Test4 · Last name: Commercial
  • Phone: (555) 555-0104 · Email: test4@example.com · Consent: checked
  • Issue: Starting new contract · Preferred time: Weekday mornings
Confirm in ActiveCampaign

Contact with Company Name and Property Type "Restaurant / Bar"; deal "<Test4> - Commercial" in General Pest Control, Sq. Ft. 4200, deal Property Type Restaurant.

5Test 5

Test5 Property Mgmt

on Commercial quote form
Contact (Commercial tab)/contact?form=commercial#quote
Type this
  • Service type: Termite Control · Company: Test5 Property Mgmt
  • Property type: Multifamily · Sq ft: 24 units
  • First name: Test5 · Last name: Manager
  • Phone: (555) 555-0105 · Email: test5@example.com · Consent: checked
Confirm in ActiveCampaign

Form ID = contact-commercial, and because the service type is Termite Control the deal must land in the Termite → New Lead pipeline, not General Pest.

6Test 6

Test6 Termite

on Termite inspection form
Termite Control/termite-control#estimate
Type this
  • Real estate transaction: No
  • Property age: 45 years · Suspected issue: Drywood termites
  • Address: 1200 Test St, San Diego, CA 92101
  • First name: Test6 · Last name: Termite
  • Phone: (555) 555-0106 · Email: test6@example.com · Consent: checked
Confirm in ActiveCampaign

Deal "<Test6> - Residential" in Termite → New Lead with Address 1200 Test St, City San Diego, State CA, ZIP 92101, Age 45, Real Estate Transaction No, description "Drywood termites".

7Test 7

Test7 Escrow

on Termite inspection form
Termite Escrow / Referral/termite-landing-referral#escrow-quote
Type this
  • Real estate transaction: Yes · Closing deadline: pick a date ~2 weeks out
  • Property age: 62 years · Suspected issue: Drywood termites
  • Address: 2400 Escrow Ave, La Jolla, CA 92037
  • First name: Test7 · Last name: Escrow
  • Phone: (555) 555-0107 · Email: test7@example.com · Consent: checked
Confirm in ActiveCampaign

Same termite deal shape, plus Real Estate Transaction = Yes and the Closing / Inspection Deadline populated with the exact date chosen.

8Test 8

Test8 Termite Contact

on Termite inspection form
Contact (Termite tab)/contact?form=termite#quote
Type this
  • Real estate transaction: No
  • Property age: 30 years · Suspected issue: Subterranean termites
  • Address: 800 Contact Blvd, Chula Vista, CA 91910
  • First name: Test8 · Last name: Contact
  • Phone: (555) 555-0108 · Email: test8@example.com · Consent: checked
Confirm in ActiveCampaign

Form ID must read contact-termite; deal description should read "Subterranean termites".

9Test 9

Test9 Plan

on Build a Plan quote form
Build a Plan/build-a-plan#quote-form
Type this
  • Service type: Pest Control (do not choose Termite Control — see known issues)
  • First Name: Test9 · Last Name: Plan
  • Email: test9@example.com · Phone: (555) 555-0109
  • Zip Code: 92109 · Consent: checked
Confirm in ActiveCampaign

Inline thank-you panel on the page, then a residential contact and deal. Form ID will read residential, not plan-hero — that is the known gap, not a test failure.

Known issues these tests will surface

Found while mapping the forms. None of these stop the other tests — read them so a known quirk is not logged as a new failure.

Bug

"Termite Control" on Build a Plan is rejected

That form offers Termite Control, but the backend only accepts Pest Control, Rodent Control, Mosquito Control, Live Bee Removal, Bed Bugs and Other for residential leads. Choosing it returns "Invalid service type" and nothing is saved. Test 9 deliberately picks Pest Control.

Gap

Build a Plan leads look like Home leads in the CRM

The form sets a Form ID of "plan-hero", but the attribution payload overwrites it with "residential" before submitting. Every plan request therefore arrives with Form ID = residential and cannot be separated from Home page leads in reports.

Gap

Build a Plan has no honeypot

The other three forms include the hidden website field that blocks bots. This one does not, so it relies on the shared rate limits alone.

Note

Fumigation pages submit the generic termite form

The Fumigation and Prep pages reuse the standard termite form, so those leads are not marked as fumigation interest — only Form ID and Landing Page distinguish them.

When every row reads Pass

The site is sending complete, correctly routed leads to ActiveCampaign. Remove the form-test tag and archive the test contacts and deals in the CRM, then clear the five leftover test leads from the app data.

Back to the site