Create InstaSite Automation Processor
Overview
The Create InstaSite automation generates instant websites (InstaSites) for business contacts associated with deals when they enter a specific pipeline stage. Supports custom templates and email/SMS notifications to share the site.
Source File: queue-manager/queues/deals/automations/instasite.js
Triggered By: queue-manager/services/deals/automations.js
Business Impact: HIGH - Lead engagement & value delivery
Processing Logic
sequenceDiagram
participant AUTO as Automation Service
participant QUEUE as InstaSite Queue
participant DEAL as Deals
participant CONTACT as Contacts
participant SITE as InstaSite Utility
participant NOTIFY as Email/SMS
AUTO->>QUEUE: Add automation job
QUEUE->>DEAL: Find eligible deals<br/>(with business contact)
loop For Each Deal
QUEUE->>CONTACT: Validate business contact
QUEUE->>SITE: Create instasite<br/>(template + business)
SITE-->>QUEUE: Site ID & URL
opt Notifications Enabled
QUEUE->>NOTIFY: Send email/SMS with site link
end
QUEUE->>DEAL: Mark automation triggered
end
Key Features
Template Requirement
const templateID =
automation.data && automation.data.template_id ? automation.data.template_id : null;
if (!templateID) {
throw new Error('Template not provided!');
}
Business Contact Requirement
// Only processes deals with business contacts
const business = deal.business ? deal.business : null;
if (business) {
// Create instasite
} else {
throw new Error('No business contact associated with deal');
}
Notification Configuration
const notifications =
automation.data && automation.data.notifications ? automation.data.notifications : {};
// Normalize field names
if (notifications.sms?.message) notifications.sms.content = notifications.sms.message;
if (notifications.email?.message) notifications.email.content = notifications.email.message;
InstaSite Creation
const result = await addInstasite(
accountID,
userID,
[business], // Array of business contacts
notifications,
templateID
);
// Result format
{
deal: dealID,
instasite: result[0], // Site details
business: businessID
}
Collections Used
Input: deal-automation
Query: deal (with business field)
Validation: contact (business contact)
Create: instasites-* collections (via utility)
Optional: communication (email/SMS records)
Automation Data Structure
{
template_id: ObjectId("templateId"), // Required
notifications: {
email: {
enabled: true,
subject: "Your Custom Website is Ready!",
content: "Hi {{business.company}}, we've created a website for you...",
sender: "websites@company.com"
},
sms: {
enabled: true,
content: "Your website is live: {{site.url}}"
}
}
}
Use Cases
Example 1: Instant Lead Engagement
// Automation
{
stage_id: "new_lead",
action: "create_instasite",
data: {
template_id: businessProfileTemplateID,
notifications: {
email: {
enabled: true,
subject: "We Created a Website for {{business.company}}!",
content: "As a demonstration of our web design capabilities, we've built a custom website for your business..."
}
}
},
delay: 0
}
// Result: Instant credibility and value demonstration
Example 2: Proposal Visualization
// Automation
{
stage_id: "proposal_sent",
action: "create_instasite",
data: {
template_id: mockupTemplateID,
notifications: {
email: {
enabled: true,
subject: "Preview Your New Website - {{business.company}}",
content: "To help you visualize our proposal, here's a mockup of your new website..."
},
sms: {
enabled: true,
content: "Preview your new site design: {{site.url}}"
}
}
},
delay: 3600 // 1 hour after proposal
}
Example 3: Onboarding Deliverable
// Automation
{
stage_id: "closed_won",
action: "create_instasite",
data: {
template_id: starterSiteTemplateID,
notifications: {
email: {
enabled: true,
subject: "Your Website is Live!",
content: "Welcome! Your starter website is now live and ready to customize..."
}
}
},
delay: 0
}
InstaSite vs InstaReport
| Feature | InstaSite | InstaReport |
|---|---|---|
| Output | Live website | PDF/HTML report |
| Purpose | Engagement, demo, deliverable | Data analysis, insights |
| Editing | Customer can edit content | Static, read-only |
| Hosting | DashClicks subdomain | Hosted report URL |
| Templates | Website designs | Report layouts |
Error Handling
Common Errors
- No Template: template_id not provided
- Invalid Business: Contact doesn't exist
- No Business: Deal has no business contact
- Template Not Found: Invalid template ID
- Site Generation Failed: Utility error
Error Response
{
deal: dealID,
instasite: null,
business: businessID,
message: "No business contact associated with deal",
additional_info: {...}
}
Notification Flow
- InstaSite Created: Website generated with template
- Email Sent (if enabled): Email with site link and credentials
- SMS Sent (if enabled): SMS with shortened site link
- Activity Logged: Site creation tracked
Merge Fields in Notifications
Available merge fields:
{{business.company}}- Business name{{business.phone}}- Phone number{{business.email}}- Email address{{site.url}}- InstaSite URL{{site.edit_url}}- Edit/admin URL{{user.name}}- Creating user name{{deal.name}}- Deal name
Performance
Execution Time: 3-8 seconds per site (site generation intensive)
Batch Processing: Sequential (not parallel) due to generation load
Complexity: HIGH
Lines of Code: 179
Business Value: Lead engagement, value demonstration, fast time-to-delivery