Skip to main content

Webhooks

Customize homebuyer email using webhooks.

Custom Email Automation

Overview

This guide helps developers configure webhooks to replace Higharc's default email notifications with custom branded emails from your preferred CRM system (HubSpot, Lasso, or others).

When a homebuyer configures and saves a home plan in Higharc, instead of receiving the standard Higharc-branded email, webhooks enable you to:

  • Capture the home plan data

  • Send it to your CRM or automation platform

  • Trigger custom branded emails with the homebuilder's messaging and design


Webhook Types

Higharc offers two webhook types:

1. Showroom Webhooks

  • Trigger: Fires when a public plan is saved in Showroom

  • Use Case: Customer-facing interactions when homebuyers save their configurations

2. Homeplan Webhooks

  • Trigger: Fires when a plan is created or updated internally

  • Use Cases:

    • Internal plan creation/updates

    • Status changes

    • Saving locked assets

    • Manual export via "Export via Webhook" button


Prerequisites

Before setting up webhooks, ensure you have:

  1. Admin access to Higharc Account Settings

  2. Webhook endpoint URL from your chosen platform:

    • Zapier webhook URL

    • HubSpot webhook URL

    • Custom endpoint URL

  3. CRM/automation platform access to configure email workflows


Step-by-Step Setup Guide

Step 1: Create Your Webhook Endpoint

Option A: Using Zapier

  1. Log into Zapier and create a new Zap

  2. Select "Webhooks by Zapier" as your trigger

  3. Choose "Catch Hook" as the trigger event

  4. Copy the webhook URL provided (format: https://hooks.zapier.com/hooks/catch/[YOUR_ID])

  5. Keep this URL for Step 2

Option B: Using HubSpot

  1. Navigate to HubSpot > Automation > Workflows

  2. Create a new workflow

  3. Select "Webhook" as the trigger type

  4. Copy the webhook URL provided by HubSpot

  5. Keep this URL for Step 2

Option C: Custom Endpoint

  1. Set up your custom endpoint to accept POST requests

  2. Ensure it can parse JSON data

  3. Configure it to return a 200 status code upon successful receipt

Step 2: Configure Webhooks in Higharc

  1. Navigate to Account Settings > Sales > Webhooks

  2. You'll see two sections:

    • Showroom Webhooks (for customer-facing saves)

    • Homeplan Webhooks (for internal updates)

For Showroom Webhooks:

  1. Click the "+" button to add a new webhook

  2. Enter a Name (e.g., "HubSpot Customer Email")

  3. Paste your webhook URL from Step 1

  4. Click Save

For Homeplan Webhooks:

  1. Click the "+" button in the Homeplan section

  2. Enter a Name (e.g., "Internal Plan Updates")

  3. Paste your webhook URL

  4. Click Save

Step 3: Understanding the Webhook Payload

When triggered, Higharc sends a comprehensive JSON payload containing home plan details, customer information, pricing, and lot data.

Note: Contract architecture update - a Home Plan can now have one or more Contracts, each representing a prospective or closed buyer. The top-level customerId, customerInfo, salesStaff, salesStaffId, category, totalPriceOverride, and discount fields are kept for backward compatibility and reflect only the first/primary contract. New integrations should read the contracts array instead — see the "Contract Information" fields below.

{
"id": "mMk4ad1bDK27QBr5",
"communityPlanId": "rY651VQ4AdglOPpD",
"communityPlanExternalId": "CP-BCM-001",
"customerId": "f3362666-dece-45d8-bcce-2108644ee543",
"planName": "BCM-P3",
"externalId": "EXT-BCM-P3-001",
"planStatus": "PREP",
"category": "contract",
"notes": "Custom plan with upgraded finishes and extended driveway",
"thumbnailUrl": "https://example.com/thumbnails/BCM-P3-thumb.jpg",

"customerInfo": {
"name": "Test Customer",
"email": "[email protected]",
"phone": "+1-555-123-4567",
"externalId": "CUST-12345"
},

"optionChoices": {
"elevationStyle": "2qlnk6ZADkoCToVW",
"kitchenCabinets": "w5x6y7z8a9b0",
"floorCovering": "c1d2e3f4g5h6"
},

"stats": {
"lotPrice": 1000,
"basePrice": 300000,
"totalPrice": 301000,
"optionsPrice": 0,
"elevation": "Transitional",
"elevationName": "Transitional",
"bedroomCount": 3,
"bathroomCount": 2.5,
"totalFloorArea": 2118,
"conditionedFloorArea": 2111
},

"lot": {
"id": "L3m4n5o6p7q8",
"lotNumber": "47",
"address": "123 Maple Street",
"externalId": "LOT-47-BCM",
"price": 25000,
"lotStatus": "available"
},

"salesStaff": {
"id": "s7h8i9j0k1l2",
"email": "[email protected]",
"firstName": "Sarah",
"lastName": "Jones",
"phone": "+1-555-987-6543"
},

"discount": {
"amount": 5000,
"description": "Early bird discount for Q4 contract signing"
}
// Additional fields omitted for brevity
}

Contracts Array (New)

Each Home Plan payload now includes a contracts array — one entry per buyer relationship on that plan (spec/model homes can have multiple prospective buyers before one closes):

"contracts": [
{
"id": "c1a2b3c4-d5e6-7890-abcd-ef1234567890",
"homePlanId": "mMk4ad1bDK27QBr5",
"customerId": "f3362666-dece-45d8-bcce-2108644ee543",
"customer": {
"id": "f3362666-dece-45d8-bcce-2108644ee543",
"name": "Test Customer",
"email": "[email protected]",
"phone": "+1-555-123-4567",
"externalId": "CUST-12345"
},
"salesStaffId": "s7h8i9j0k1l2",
"salesStaff": {
"id": "s7h8i9j0k1l2",
"email": "[email protected]",
"firstName": "Sarah",
"lastName": "Jones",
"phone": "+1-555-987-6543"
},
"status": "contract",
"totalPriceOverride": null,
"discounts": [
{ "amount": 5000, "description": "Early bird discount for Q4 contract signing" }
],
"createdAt": "2026-01-15T18:22:00.000Z",
"updatedAt": "2026-01-20T09:10:00.000Z"
}
]

Note: notes is intentionally omitted from each contract in the webhook payload (internal-only field). status is one of prospect, contract, or closed.


Key Fields for Email Automation

Customer Information:

  • customerInfo.name: Customer's full name

  • customerInfo.email: Customer’s email address

  • customerInfo.phone: Customer’s phone number

  • customerInfo.externalId: Your CRM's customer ID

Plan Details:

  • planName: Selected plan name

  • communityPlanExternalId: External reference ID for the community plan

  • masterPlanName: Master plan name (e.g., "Orion")

  • thumbnailUrl: Image URL for email preview

Pricing Information:

  • stats.basePrice: Base home price

  • stats.optionsPrice: Total cost of selected options

  • stats.totalPrice: Combined total price

  • totalPriceOverride: Total price override if applicable

  • discount.amount: Any applied discounts or price adjustments

Property Details:

  • stats.bedroomCount: Number of bedrooms

  • stats.bathroomCount: Number of bathrooms

  • stats.totalFloorArea: Total square footage

  • lot.address: Lot street address

  • lot.lotNumber: Lot identifier

Sales Information:

  • salesStaff.firstName & salesStaff.lastName: Assigned salesperson

  • salesStaff.email: Sales contact email

  • salesStaff.phone: Sales contact phone

Step 4: Configure Email Automation in Your CRM

For HubSpot:

  1. In your HubSpot workflow (triggered by the webhook):

  2. Add action: "Send Email"

  3. Create or select your custom email template

  4. Map webhook data to email personalization tokens:

    • Use customerId to look up contact information

    • Include planName in the email subject/body

    • Add a link to the home plan using the plan ID

For Zapier to CRM:

  1. In your Zap, add an action step

  2. Choose your CRM (HubSpot, Lasso, etc.)

  3. Select "Send Email" or "Create Contact and Send Email"

  4. Map the webhook fields to your email template:

    • Parse the JSON payload

    • Extract relevant fields

    • Pass them to your CRM's email action

Remember: Webhooks replace Higharc's default email entirely. Ensure your custom email includes all necessary information for the homebuyer before disabling the default notifications.

Step 5: Testing Your Webhook

  1. Set up a test webhook endpoint (webhook.site or requestbin.com)

  2. Configure it in Higharc as described in Step 2

  3. Perform a test action:

    • For Showroom: Save a plan as a customer would

    • For Homeplan: Click "Export via Webhook" button on a home plan page

  4. Verify the payload is received correctly

  5. Check that all required data is present

  6. Replace test URL with production URL

Step 6: Manual Webhook Trigger

For Homeplan webhooks, you can manually trigger exports:

  1. Navigate to any home plan in Higharc

  2. Look for the "Export via Webhook" button in the Integrations section

  3. Click to manually send the plan data to all configured webhooks


Payload Reference

Customer & Contact Fields

  • customerInfo.name: Customer's full name

  • customerInfo.email: Customer's email address

  • customerInfo.phone: Customer's phone number

  • customerInfo.externalId: External CRM customer ID

  • customerId: Higharc's customer UUID

Plan Identification Fields

  • id: Unique home plan configuration ID

  • planName: Display name of the plan

  • communityPlanId: Community-specific plan ID

  • communityPlanExternalId: External location plan reference (e.g. plan code from CRM)

  • masterPlanId: Base plan template ID

  • masterPlanName: Base plan name

  • masterPlanExternalId: External master plan reference

  • externalId: General external reference ID

Pricing & Financial Fields

  • stats.basePrice: Base home price

  • stats.optionsPrice: Total options cost

  • stats.totalPrice: Calculated total

  • stats.lotPrice: Lot premium

  • totalPriceOverride: Manual total price override

  • discount.amount: Discount or price adjustment value

  • discount.description: Price adjustment description

Property Specifications

  • stats.bedroomCount: Number of bedrooms

  • stats.bathroomCount: Number of bathrooms

  • stats.totalFloorArea: Total square footage

  • stats.conditionedFloorArea: Heated/cooled area

  • stats.elevation: Elevation style

  • stats.elevationName: Elevation display name

Lot Information

  • lot.id: Lot identifier

  • lot.lotNumber: Lot number

  • lot.address: Street address

  • lot.externalId: External lot reference

  • lot.price: Lot price

  • lot.lotStatus: Availability status

  • lot.block: Block identifier

  • lot.phase: Development phase

Sales Team Information

  • salesStaff.firstName: Salesperson first name

  • salesStaff.lastName: Salesperson last name

  • salesStaff.email: Sales contact email

  • salesStaff.phone: Sales contact phone

  • salesStaffId: Sales staff UUID

Contract Information (New)

  • contracts: Array of contract objects, one per buyer relationship on this Home Plan

  • contracts[].id: Contract UUID

  • contracts[].status: prospect, contract, or closed

  • contracts[].customer / contracts[].customerId: Buyer on this contract

  • contracts[].salesStaff / contracts[].salesStaffId: Sales agent on this contract

  • contracts[].totalPriceOverride: Manual total price override for this contract

  • contracts[].discounts: Array of discounts (amount, description) applied to this contract

  • contracts[].createdAt / contracts[].updatedAt: Contract timestamps

Status & Metadata

  • planStatus: Current plan status (prep, pre-construction, construction)

  • category: Plan category (prospect, test, contract)

  • createdAt: Creation timestamp

  • updatedAt: Last update timestamp

  • lockedAt: When plan was locked

  • notes: Additional plan notes

  • thumbnailUrl: Plan preview image URL

Did this answer your question?