How to Build Automated Client Onboarding Workflows in Antigravity with Intake Forms, Document Generation & CRM Sync

How to Build Automated Client Onboarding Workflows in Antigravity

Manual client onboarding is time-consuming and error-prone. With Antigravity, you can build fully automated onboarding workflows that trigger from an intake form submission, generate personalized documents, and sync everything to your CRM — all without writing a custom backend. This guide walks you through every step.

Prerequisites

  • An Antigravity workspace (Free tier or above)- Node.js 18+ installed- A CRM account (Salesforce, HubSpot, or Pipedrive) with API access- Basic familiarity with YAML configuration

Step 1: Install and Configure the Antigravity CLI

Start by installing the Antigravity CLI globally and authenticating with your workspace. npm install -g @antigravity/cli

antigravity auth login —api-key YOUR_API_KEY

antigravity workspace select —name “my-agency”

Verify your connection is active: antigravity status

You should see your workspace name, active plan, and connected integrations listed in the output.

Step 2: Initialize the Onboarding Workflow Project

Create a dedicated workflow project directory and scaffold the configuration files: antigravity workflow init client-onboarding cd client-onboarding

This generates the following structure: client-onboarding/ ├── workflow.yaml ├── triggers/ │ └── intake-form.yaml ├── steps/ │ ├── generate-docs.yaml │ └── crm-sync.yaml └── templates/ └── welcome-letter.hbs

Step 3: Create the Intake Form Trigger

Open triggers/intake-form.yaml and define the fields your intake form collects: trigger: type: form name: client_intake fields: - name: client_name type: text required: true - name: client_email type: email required: true - name: company_name type: text required: true - name: service_tier type: select options: ["starter", "professional", "enterprise"] required: true - name: project_start_date type: date required: true webhook_url: https://hooks.antigravity.io/v1/workflows/{{workflow_id}}/trigger on_submit: start_workflow

Deploy the trigger to generate an embeddable form URL: antigravity trigger deploy triggers/intake-form.yaml

The CLI returns a public form URL and an embed snippet you can place on your website or share directly with clients.

Step 4: Add the Document Generation Step

Edit steps/generate-docs.yaml to define which documents are automatically created when a form is submitted: step: name: generate_onboarding_docs type: document_generation depends_on: client_intake documents: - template: templates/welcome-letter.hbs output_name: “Welcome_Letter_{{client_name}}.pdf” format: pdf - template: templates/service-agreement.hbs output_name: “Service_Agreement_{{company_name}}.pdf” format: pdf e_signature: true delivery: method: email to: “{{client_email}}” subject: “Welcome aboard, {{client_name}}!” body_template: templates/welcome-email.hbs

Create the Handlebars template at templates/welcome-letter.hbs:

Welcome, {{client_name}}

Thank you for choosing our {{service_tier}} plan.

Your project is scheduled to begin on {{project_start_date}}.

Company: {{company_name}}

Step 5: Configure the CRM Sync Step

Edit steps/crm-sync.yaml to push onboarding data to your CRM automatically: step: name: sync_to_crm type: crm_sync depends_on: generate_onboarding_docs connector: hubspot credentials: api_key: YOUR_CRM_API_KEY actions: - action: create_contact mapping: firstname: “{{client_name | split ’ ’ | first}}” lastname: “{{client_name | split ’ ’ | last}}” email: “{{client_email}}” company: “{{company_name}}” - action: create_deal mapping: dealname: “Onboarding — {{company_name}}” pipeline: default dealstage: appointmentscheduled amount_tier: “{{service_tier}}” - action: add_note mapping: body: “Auto-onboarded on {{project_start_date}}. Documents sent via email.”

To use Salesforce or Pipedrive instead, change the connector value and adjust the field mappings to match your CRM schema. Run the following to verify your mapping: antigravity step validate steps/crm-sync.yaml —dry-run

Step 6: Wire It All Together in workflow.yaml

Open the root workflow.yaml and connect your trigger and steps: workflow: name: client_onboarding version: 1.0 trigger: triggers/intake-form.yaml steps: - steps/generate-docs.yaml - steps/crm-sync.yaml on_failure: notify: channel: slack webhook: YOUR_SLACK_WEBHOOK_URL message: "Onboarding workflow failed for {{client_name}}. Check logs." ## Step 7: Deploy and Test

Deploy the complete workflow to your Antigravity workspace: antigravity workflow deploy --file workflow.yaml --env production

Run a test submission to validate the entire pipeline: antigravity workflow test client_onboarding --data '{ "client_name": "Jane Doe", "client_email": "jane@example.com", "company_name": "Acme Corp", "service_tier": "professional", "project_start_date": "2026-04-01" }'

Check execution logs: antigravity logs --workflow client_onboarding --last 5 ## Pro Tips for Power Users - **Conditional branching:** Add condition: "{{service_tier}} == 'enterprise'" to any step to create tier-specific onboarding paths, such as assigning a dedicated account manager only for enterprise clients.- **Parallel steps:** Set parallel: true on independent steps like document generation and CRM sync to cut workflow execution time in half.- **Custom webhooks:** Use type: webhook steps to notify external services (Slack, Zapier, or internal APIs) at any point in the workflow.- **Version pinning:** Use antigravity workflow deploy --version 1.0 --pin to lock a stable workflow version while iterating on a v2 draft.- **Template previews:** Run antigravity template preview templates/welcome-letter.hbs --data sample.json to preview generated documents before deploying. ## Troubleshooting Common Errors

ErrorCauseSolution
AUTH_EXPIREDAPI key or session token has expiredRun antigravity auth login --api-key YOUR_API_KEY to re-authenticate
CRM_FIELD_MAPPING_ERRORA mapped CRM field does not exist in your CRM schemaRun antigravity step validate steps/crm-sync.yaml --dry-run and verify field names match your CRM
TEMPLATE_RENDER_FAILHandlebars variable is missing or misspelledEnsure all {{variables}} in templates match the field names in your trigger definition
WEBHOOK_TIMEOUTExternal service did not respond within 30 secondsIncrease timeout with timeout: 60 in the step config or check the external service status
DUPLICATE_CONTACTCRM already has a contact with the same emailAdd deduplicate: true and dedup_field: email to your CRM sync action to update instead of create
## Frequently Asked Questions

Can I use Antigravity onboarding workflows with CRMs other than HubSpot?

Yes. Antigravity supports native connectors for HubSpot, Salesforce, and Pipedrive out of the box. For other CRMs, you can use the generic type: webhook step to send data to any REST API endpoint. Simply replace the connector field with webhook and provide the target URL and payload mapping in your step configuration.

How do I add e-signature collection to generated documents?

Add e_signature: true to any document entry in your generate-docs.yaml step. Antigravity integrates with built-in e-signature functionality that tracks signing status. You can add a conditional step that waits for signature completion before proceeding to CRM sync by using wait_for: signature_complete in the depends_on configuration.

Is there a limit to how many onboarding workflows can run concurrently?

On the Free tier, Antigravity allows up to 50 concurrent workflow executions. The Professional plan supports 500, and Enterprise plans offer unlimited concurrency. You can monitor active executions at any time using antigravity workflow stats client_onboarding, which shows queue depth, average completion time, and failure rate.

Explore More Tools

Grok Best Practices for Real-Time News Analysis and Fact-Checking with X Post Sourcing Best Practices Devin Best Practices: Delegating Multi-File Refactoring with Spec Docs, Branch Isolation & Code Review Checkpoints Best Practices Bolt Case Study: How a Solo Developer Shipped a Full-Stack SaaS MVP in One Weekend Case Study Midjourney Case Study: How an Indie Game Studio Created 200 Consistent Character Assets with Style References and Prompt Chaining Case Study How to Install and Configure Antigravity AI for Automated Physics Simulation Workflows Guide How to Set Up Runway Gen-3 Alpha for AI Video Generation: Complete Configuration Guide Guide Replit Agent vs Cursor AI vs GitHub Copilot Workspace: Full-Stack Prototyping Compared (2026) Comparison How to Build a Multi-Page SaaS Landing Site in v0 with Reusable Components and Next.js Export How-To Kling AI vs Runway Gen-3 vs Pika Labs: Complete AI Video Generation Comparison (2026) Comparison Claude 3.5 Sonnet vs GPT-4o vs Gemini 1.5 Pro: Long-Document Summarization Compared (2025) Comparison Midjourney v6 vs DALL-E 3 vs Stable Diffusion XL: Product Photography Comparison 2025 Comparison Runway Gen-3 Alpha vs Pika 1.0 vs Kling AI: Short-Form Video Ad Creation Compared (2026) Comparison BMI Calculator - Free Online Body Mass Index Tool Calculator Retirement Savings Calculator - Free Online Planner Calculator 13-Week Cash Flow Forecasting Best Practices for Small Businesses: Weekly Updates, Collections Tracking, and Scenario Planning Best Practices Amazon PPC Case Study: How a Private Label Supplement Brand Lowered ACOS With Negative Keyword Mining and Exact-Match Campaigns Case Study Antigravity vs Jasper vs Copy.ai: AI Brand Voice Consistency Compared (2026) Comparison 30-60-90 Day Onboarding Plan Template for New Marketing Managers Template Apartment Move-Out Checklist for Renters: Cleaning, Damage Photos, and Security Deposit Return Checklist ATS-Friendly Resume Formatting Best Practices for Career Changers Best Practices