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:
Admin access to Higharc Account Settings
Webhook endpoint URL from your chosen platform:
Zapier webhook URL
HubSpot webhook URL
Custom endpoint URL
CRM/automation platform access to configure email workflows
Step-by-Step Setup Guide
Step 1: Create Your Webhook Endpoint
Option A: Using Zapier
Log into Zapier and create a new Zap
Select "Webhooks by Zapier" as your trigger
Choose "Catch Hook" as the trigger event
Copy the webhook URL provided (format:
https://hooks.zapier.com/hooks/catch/[YOUR_ID])Keep this URL for Step 2
Option B: Using HubSpot
Navigate to HubSpot > Automation > Workflows
Create a new workflow
Select "Webhook" as the trigger type
Copy the webhook URL provided by HubSpot
Keep this URL for Step 2
Option C: Custom Endpoint
Set up your custom endpoint to accept POST requests
Ensure it can parse JSON data
Configure it to return a 200 status code upon successful receipt
Step 2: Configure Webhooks in Higharc
Navigate to Account Settings > Sales > Webhooks
You'll see two sections:
Showroom Webhooks (for customer-facing saves)
Homeplan Webhooks (for internal updates)
For Showroom Webhooks:
Click the "+" button to add a new webhook
Enter a Name (e.g., "HubSpot Customer Email")
Paste your webhook URL from Step 1
Click Save
For Homeplan Webhooks:
Click the "+" button in the Homeplan section
Enter a Name (e.g., "Internal Plan Updates")
Paste your webhook URL
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 namecustomerInfo.email: Customer’s email addresscustomerInfo.phone: Customer’s phone numbercustomerInfo.externalId: Your CRM's customer ID
Plan Details:
planName: Selected plan namecommunityPlanExternalId: External reference ID for the community planmasterPlanName: Master plan name (e.g., "Orion")thumbnailUrl: Image URL for email preview
Pricing Information:
stats.basePrice: Base home pricestats.optionsPrice: Total cost of selected optionsstats.totalPrice: Combined total pricetotalPriceOverride: Total price override if applicablediscount.amount: Any applied discounts or price adjustments
Property Details:
stats.bedroomCount: Number of bedroomsstats.bathroomCount: Number of bathroomsstats.totalFloorArea: Total square footagelot.address: Lot street addresslot.lotNumber: Lot identifier
Sales Information:
salesStaff.firstName&salesStaff.lastName: Assigned salespersonsalesStaff.email: Sales contact emailsalesStaff.phone: Sales contact phone
Step 4: Configure Email Automation in Your CRM
For HubSpot:
In your HubSpot workflow (triggered by the webhook):
Add action: "Send Email"
Create or select your custom email template
Map webhook data to email personalization tokens:
Use
customerIdto look up contact informationInclude
planNamein the email subject/bodyAdd a link to the home plan using the plan ID
For Zapier to CRM:
In your Zap, add an action step
Choose your CRM (HubSpot, Lasso, etc.)
Select "Send Email" or "Create Contact and Send Email"
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
Set up a test webhook endpoint (webhook.site or requestbin.com)
Configure it in Higharc as described in Step 2
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
Verify the payload is received correctly
Check that all required data is present
Replace test URL with production URL
Step 6: Manual Webhook Trigger
For Homeplan webhooks, you can manually trigger exports:
Navigate to any home plan in Higharc
Look for the "Export via Webhook" button in the Integrations section
Click to manually send the plan data to all configured webhooks
Payload Reference
Customer & Contact Fields
customerInfo.name: Customer's full namecustomerInfo.email: Customer's email addresscustomerInfo.phone: Customer's phone numbercustomerInfo.externalId: External CRM customer IDcustomerId: Higharc's customer UUID
Plan Identification Fields
id: Unique home plan configuration IDplanName: Display name of the plancommunityPlanId: Community-specific plan IDcommunityPlanExternalId: External location plan reference (e.g. plan code from CRM)masterPlanId: Base plan template IDmasterPlanName: Base plan namemasterPlanExternalId: External master plan referenceexternalId: General external reference ID
Pricing & Financial Fields
stats.basePrice: Base home pricestats.optionsPrice: Total options coststats.totalPrice: Calculated totalstats.lotPrice: Lot premiumtotalPriceOverride: Manual total price overridediscount.amount: Discount or price adjustment valuediscount.description: Price adjustment description
Property Specifications
stats.bedroomCount: Number of bedroomsstats.bathroomCount: Number of bathroomsstats.totalFloorArea: Total square footagestats.conditionedFloorArea: Heated/cooled areastats.elevation: Elevation stylestats.elevationName: Elevation display name
Lot Information
lot.id: Lot identifierlot.lotNumber: Lot numberlot.address: Street addresslot.externalId: External lot referencelot.price: Lot pricelot.lotStatus: Availability statuslot.block: Block identifierlot.phase: Development phase
Sales Team Information
salesStaff.firstName: Salesperson first namesalesStaff.lastName: Salesperson last namesalesStaff.email: Sales contact emailsalesStaff.phone: Sales contact phonesalesStaffId: Sales staff UUID
Contract Information (New)
contracts: Array of contract objects, one per buyer relationship on this Home Plancontracts[].id: Contract UUIDcontracts[].status:prospect,contract, orclosedcontracts[].customer/contracts[].customerId: Buyer on this contractcontracts[].salesStaff/contracts[].salesStaffId: Sales agent on this contractcontracts[].totalPriceOverride: Manual total price override for this contractcontracts[].discounts: Array of discounts (amount,description) applied to this contractcontracts[].createdAt/contracts[].updatedAt: Contract timestamps
Status & Metadata
planStatus: Current plan status (prep, pre-construction, construction)category: Plan category (prospect, test, contract)createdAt: Creation timestampupdatedAt: Last update timestamplockedAt: When plan was lockednotes: Additional plan notesthumbnailUrl: Plan preview image URL
