Service Business: End-to-End Automation Playbook
Version: 1.0
Last Updated: July 2025
1. Overview & Purpose
This playbook is your friendly guide to understanding and building the automation system. Whether you’re new to automation or want to expand this workflow, you’ll find every step explained in plain English—no jargon, just practical advice and real examples.
- What it does: Turns a customer form submission into a professional quote, logs everything, and notifies your team if something needs review.
- Who it’s for: Anyone who wants to automate quoting, tracking, and notifications for a service business.
2. Visual Workflow
Here’s the big picture of how everything flows, step by step:
- Customer submits a form (Squarespace or similar)
- Address is cleaned and validated (using code and AI)
- Google Maps API gets property info
- Service quote is generated (custom JavaScript)
- AI analyzes and formats the data
- Email is generated and sent to the customer
- All data is logged in Google Sheets
- Slack notifications are sent if manual review is needed
Tip: Each step is automated—once set up, you don’t have to touch it!
3. Step-by-Step Setup
Step 1: Form Submission (Squarespace Forms)
Customer fills out a form on your website. This is the trigger for everything else.
Step 2: Clean & Combine Address (Code by Zapier)
A small code step combines and tidies up the address fields from the form, making sure the address is ready for validation.
Step 3: Clean & Validate Address (AI by Zapier)
AI checks the address for typos, missing info, and standardizes it (e.g., "St" → "Street").
Step 4: Format Address (Formatter by Zapier)
Ensures the address is in the right format for the next step.
Step 5: Google Map API Call (Webhooks by Zapier)
Looks up the property on Google Maps to get coordinates and more details.
Step 6: Generate Service Quote (Code by Zapier)
Custom JavaScript calculates the price for each service, applies discounts, and creates a detailed quote.
Step 7: Analyze and Return Data (AI by Zapier)
AI reviews the quote, checks for errors, and adds helpful notes or warnings if needed.
Step 8: Run Javascript (Code by Zapier)
Final data processing and formatting for email and logging.
Step 9: Send Email (Gmail)
A professional, branded email is sent to the customer with their quote.
Step 10: Log to Google Sheets
All details are saved in a Google Sheet for tracking, reporting, and follow-up.
Step 11: Slack Notifications (Optional, via Paths)
If something needs manual review (like a weird address or calculation), a Slack message is sent to your team. You can set up different paths for errors and normal cases.
4. Field Mapping Reference
Here’s how data moves from the form, through the estimator, and into emails, Google Sheets, and Slack:
| Form Field | Estimator Input | Email/Sheets/Slack Field |
| Customer Name | customer_name | {{customer_name}} |
| Property Address | property_address | {{property_address}} |
| Selected Services | selected_services | {{services_list}} |
| Subtotal | subtotal | {{subtotal}} |
| Discount | discount_amount | {{discount_amount}} |
| Final Total | final_total | {{final_total}} |
| Manual Review? | requires_manual_review | {{requires_manual_review}} |
Tip: The estimator script creates all the fields you need for emails, Sheets, and Slack. No extra mapping needed!
5. Sample Data & Outputs
Sample Form Submission
{
"customer_name": "Jane Doe",
"property_address": "123 Main St, Atlanta, GA",
"selected_services": ["House Washing", "Concrete Cleaning"]
}
Sample Estimator Output
{
"services_list": "House Washing, Concrete Cleaning",
"subtotal": 450.00,
"discount_amount": 45.00,
"final_total": 405.00,
"requires_manual_review": false
}
Sample Email
Subject: Your Property Cleaning Estimate
Hi Jane,
Here’s your custom quote:
- House Washing: $264.15
- Concrete Cleaning: $211.33
Total: $427.93
Thank you for choosing our services!
Sample Google Sheets Row
Jane Doe | 123 Main St, Atlanta, GA | House Washing, Concrete Cleaning | $427.93 | No | ...
Sample Slack Message (Manual Review)
:warning: Manual Review Required!
Name: Jane Doe
Address: 123 Main St, Atlanta, GA
Services: House Washing, Concrete Cleaning
Total: $427.93
6. Troubleshooting & Best Practices
- If something breaks: Start by checking the step right before the error. Is the data coming in as expected?
- Common issues: Field names don’t match, address isn’t cleaned, or a required field is missing.
- How to fix: Double-check your field mapping in Zapier. Make sure every step is getting the data it expects. Use Zapier’s “Test” feature at each step.
- For email issues: Make sure the email template placeholders match the field names from the estimator output.
- For Google Sheets issues: Check that the sheet headers match the mapped fields exactly. Zapier is picky about this!
- For Slack issues: Make sure the “Requires Manual Review” field is being set correctly in the estimator output.
- General tip: If you change anything in the form or estimator, update your Zapier field mapping and test again.
Still stuck? Try running the workflow with a test submission and watch where the data stops flowing. That’s your clue!
7. Expanding the Automation (Add New Services)
How to Add a New Service (Step-by-Step)
- Update the Form: Add a new checkbox or dropdown for the new service (e.g., "Gutter Cleaning").
- Update the Estimator Script: In
smart_property_estimator_v3.js, add the new service to the SERVICES_CONFIG section. Set the price per square foot or per job, and any minimums.
- Update the Email Template: Add a new line for the new service in your email template if you want it to show up in quotes.
- Update Google Sheets: Add a new column if you want to track the new service separately.
- Update Zapier Field Mapping: Make sure the new service is mapped from the form, through the estimator, and into Sheets/Slack/Email as needed.
- Test Everything: Submit a test form with the new service selected. Make sure it shows up everywhere (email, Sheets, Slack).
Pro Tip: Always test with real data after adding a new service. It’s easy to miss a mapping step!
9. Estimator Script Anatomy & Customization
What Does the Estimator Script Do?
The smart_property_estimator_v3.js script is the brain of your automation. It takes property and service info, calculates areas and prices, applies discounts, and outputs everything for emails, Sheets, and Slack. It’s designed to be easy to update and safe for non-coders to tweak.
Script Structure (Anatomy)
- Configuration Section: Set prices, minimums, and business info at the top.
- Service Definitions: Each service (House, Concrete, Deck/Fence) is described and priced here.
- Main Logic: Processes input, calculates areas, applies pricing, and handles errors.
- Output: Sends data to Zapier for emails, Sheets, and Slack.
How to Change Prices, Minimums, or Add Services
- Change a Price or Minimum: Edit the
BUSINESS_CONFIG section at the top. Example:
HOUSE_RATE: 0.15 // $0.15 per sq ft
- Add a New Service: Add a new entry to
SERVICES_CONFIG with its rate, minimum, and description.
- Adjust Discounts: Edit
SILVER_PACKAGE or GOLD_PACKAGE in BUSINESS_CONFIG.
- Update Business Info: Change
BUSINESS_NAME, PHONE, or EMAIL in BUSINESS_CONFIG.
How Calculations Work
- Property area is estimated from Google Maps boundary data.
- Each service’s area and price is calculated based on property size and service type.
- Discounts are applied if multiple services are selected.
- Manual review is triggered for unusual properties or calculation issues.
Common Customizations
- Change pricing logic: Edit the calculation functions in the main logic section.
- Add/remove a service: Update
SERVICES_CONFIG and field mapping in Zapier.
- Change discounts: Adjust the package settings in
BUSINESS_CONFIG.
- Update email/Sheets output: Edit the formatting functions at the end of the script.
Sensitive Info
No sensitive customer data is stored in the script. Only business contact info is included for manual follow-up.
8. FAQ / Common Issues
Q: What if my email is blank or missing info?
A: Check that your email template placeholders match the estimator output fields. Also, make sure the AI/email step is getting the right data from the previous step.
Q: How do I notify the team only for manual review cases?
A: Use a “Path” in Zapier after Google Sheets. If requires_manual_review is true, send a Slack message. Otherwise, skip Slack.
Q: Can I use a different form tool?
A: Yes! As long as the form can send data to Zapier, you can use any form builder (Squarespace, Google Forms, Typeform, etc.).
Q: What if the Google Sheet isn’t updating?
A: Make sure the sheet headers match the mapped fields exactly. Zapier is case-sensitive and space-sensitive.
Q: How do I add more notifications (like SMS)?
A: Add another action in Zapier after the estimator or Sheets step. You can send SMS, emails, or anything else Zapier supports.