🏢 Business Information

📋 Business Details

📍 Service Area & Travel

Service Radius 80 miles

💳 Payment Settings

Deposit Percentage 30%

🎨 Performers / Contractors


💰 Service Pricing

🎨 Individual Services

Click any price to edit. Changes auto-save. Durations 1-4hr shown on website; 5-8hr for AI/admin only.

⭐ Value Packages

📅 Scheduling Settings

⏰ Booking Rules

🗺️ Service Regions

💬 SMS / Message Templates

Customize the automated messages sent to customers. Use {{variableName}} for dynamic content.

🔗 Integrations

📱 Vonage (Phone & SMS)

💳 Stripe (Payments)

🔗 N8N Webhooks

👤 Admin Users

Authorized Users


🚗 Artist Dispatch & Scoring

Configure how artists are scored and assigned to bookings. Weights must total 100%.

⚖️ Scoring Weights

Adjust how each factor influences artist selection. Total: 100%

25%
20%
20%
10%
10%
15%

📍 Distance & Travel

Teardown + break time (travel time added automatically)
Events within this distance get route bonus

🎈 Event Type Multipliers

Adjust priority for different event types. 1.0 = normal priority.

🔔 Regional Notification Routing

Route form submissions, AI call transcripts, booking confirmations, and cancellations to regional sales managers. All Cities recipients get notified for every region. Regional recipients only get their metro area.

📚 Poppin' Parties TX — System Docs

v1.0.0

About This System

The Poppin' Parties TX automation platform handles booking inquiries, automated quoting, Stripe payment link generation, SMS notifications, Google Calendar scheduling, and AI-powered phone support across DFW, Houston, and Austin metro areas.

  • Website: poppinpartiestx.com — 280+ SEO landing pages + 6 service pages
  • Contact Form: Webhook → N8N → Gmail notification + customer confirmation
  • Payment: Stripe Payment Links sent via Vonage SMS
  • Scheduling: Google Calendar per performer
  • Phone: Vonage + Cartesia AI voice agent for inbound/outbound
  • Admin: This portal (admin.poppinpartiestx.com)

🏗️ System Architecture

Data Flow

Customer Journey:
  Website Form → N8N Webhook (popn-contact)
       OR
  Phone Call → Vonage → AI Voice Agent (Cartesia)
       ↓
┌─────────────────────────────────────┐
│         N8N Workflow Engine         │
├─────────────────────────────────────┤
│ POPN-webform (contact form)        │
│ POPN-create-booking                │
│ POPN-get-slots                     │
│ POPN-cancel-booking                │
│ POPN-payment-link (Stripe)         │
│ POPN-stripe-event (payment conf.)  │
│ POPN-voice-events                  │
│ POPN-config (config server)        │
└─────────────────────────────────────┘
       ↓                    ↓
  Google Calendar      Config Server
  (per performer)    (.POPN-variables.json)
       ↓
  Admin Portal (this app)
  - Pricing management
  - Performer management
  - SMS templates
  - Integration config

Tech Stack

WebsiteStatic HTML/CSS/JS, 280 SEO pages
Admin PortalVanilla HTML/CSS/JS SPA
Config ServerExpress.js on port 3002
WorkflowsN8N (self-hosted at n8n.optimus.systems)
PaymentsStripe Payment Links API
SMSVonage Messages API
Voice AICartesia Line Agent + GROQ LLM
CalendarGoogle Calendar API (OAuth2)

💰 Individual Service Pricing

Face Painting OR Balloon Twisting

1 artist provides the service. Same pricing for either service.

Bubble Party

Includes bubble machines, wands & pools. Outdoor recommended.

Caricatures OR Glitter Tattoos

1 artist. ⚠️ Caricatures NOT available in Houston region.

Live Glitter Fashion Drawing

1 artist. Premium service — no 1.5hr or 2.5hr options.

⭐ Value Package Pricing

🚗 Travel & Fee Structure

Travel Fee

  • Flat $25 within 80-mile radius
  • Radius measured from HQ (14201 Coyote Trail, Haslet TX) or assigned contractor's base location
  • Beyond radius: contact for custom quote

Payment Structure

  • Deposit: 30% non-refundable (unless Poppin' cancels → full refund)
  • Final Balance: Remaining 70% collected 3 days before event
  • Method: Stripe Payment Links sent via SMS

🎨 All Services

🗺️ Service Regions

📋 Booking Flow

End-to-End Booking Process

#StepTriggerAction
1InquiryWebsite form or phone callN8N receives submission, emails owner + confirms customer
2QuoteKateLyn reviewsSend SMS with price breakdown (base + travel) + service menus
3AcceptCustomer says yesSend 30% deposit Stripe link via SMS
4BookedStripe webhook: deposit paidConfirm booking, create calendar event, assign performer
5Reminder3 days before eventSend final balance Stripe link + artist info via SMS
6Event DayFinal payment confirmedSend event confirmation + artist contact
7Follow-up1 day after eventSend Google review request via SMS

💳 Payment Flow

Two-Stage Stripe Payment Links

Stage 1: Deposit
  Customer confirms → N8N creates Stripe Payment Link (30%)
  → Vonage sends SMS with link
  → Customer pays
  → Stripe webhook fires checkout.session.completed
  → N8N triggers "Booked" confirmation + calendar event

Stage 2: Final Balance (3 days before event)
  Scheduled N8N trigger
  → Creates Stripe link for remaining 70%
  → Vonage sends SMS with link + artist info
  → Customer pays
  → Stripe webhook confirms → event fully paid

💬 SMS Communication Workflows

🔗 N8N Webhooks

💳 Stripe Integration

Setup

  • Create Stripe account for Poppin' Parties TX
  • Add publishable key + secret key in Integrations tab
  • Set up webhook endpoint: https://n8n.optimus.systems/webhook/popn-stripe-event
  • Subscribe to event: checkout.session.completed

Payment Link API

N8N workflow creates payment links dynamically via POST /v1/payment_links with amount, description, and metadata (booking ID, customer name).

📱 Vonage Integration

Phone Number

Vonage number: +1 (972) 777-6725

Capabilities

  • SMS: Send/receive text messages (payment links, confirmations, reviews)
  • Voice: Inbound call routing to AI agent, outbound lead follow-up

🤖 AI Phone Agent

Overview

Cartesia Line AI agent handles inbound and outbound calls with a fun, party-themed personality matching the Poppin' Parties brand.

Capabilities

  • Inbound: Answer availability questions, quote prices, take booking details, check calendar
  • Outbound: Follow up on website form submissions that haven't converted
  • Pricing: Query config server for real-time quotes (up to 8hr events)
  • Handoff: Transfer to KateLyn for complex requests

🌐 Landing Pages

Overview

280 auto-generated city+service SEO landing pages across 3 regions. Generated by node generate-seo-pages.js. Do not hand-edit — they are overwritten by the generator.

📄280Total Pages
🏙️60Cities
🎨6Services
🗺️3Regions

Core Service Pages

PageURL
🏠 Homepagepoppinpartiestx.com
🎨 Face Painting/face-painting
🎈 Balloon Twisting/balloon-twisting
✏️ Caricatures/caricatures
✨ Glitter Tattoos/glitter-tattoos
🫧 Bubble Party/bubble-party
📜 Privacy Policy/privacy-policy
📜 Terms & Conditions/terms-and-conditions

📅 Calendar Color Legend

Payment Status Colors

Calendar events automatically change color as payments are received:

ColorStatusMeaning
🟠 TangerineUnpaidNew booking — no payment received yet
🟡 BananaDeposit Paid30% deposit received, balance still pending
🟢 SageFully PaidAll payments received (deposit + balance, or full upfront)

How It Works

  • New bookings are created with tangerine (unpaid)
  • When Stripe fires checkout.session.completed, the POPN - Payment Received N8N workflow updates the event color and description
  • Payment status is only visible to owners in the calendar description (artists see event details only)
  • You can also manually record a payment via the webhook (see BOOKING-AUTOMATION-SYSTEM.md)

🔗 External Services & Dashboards

Core Integrations

ServicePurposeDashboard / Docs
📱 VonageSMS messaging + Voice (phone number: +1 972-777-6725)dashboard.nexmo.com · Docs
🗣️ CartesiaAI Voice Agent — STT (Ink) + TTS (Sonic 3)play.cartesia.ai · Docs
GroqLLM inference — fast (gpt-oss-20b) + smart (gpt-oss-120b)console.groq.com · Docs
💳 StripePayment Links API — deposit + final balancedashboard.stripe.com · API Docs
🔄 N8NWorkflow automation (self-hosted)n8n.optimus.systems · Docs
📅 Google CalendarPer-performer scheduling & availabilitycalendar.google.com · API Docs
🔐 Google OAuthAdmin portal authenticationGCP Console · Docs

Infrastructure

ServicePurposeURL / Notes
🌐 WebsitePublic-facing sitepoppinpartiestx.com
🛡️ Admin PortalThis portaladmin.poppinpartiestx.com
⚙️ Config ServerExpress.js API (port 3002)api.poppinpartiestx.com
🐳 VPS / DockerNginx + Traefik hosting212.38.95.250 · Docker containers
📊 Google Search ConsoleSEO monitoring & indexingsearch.google.com/search-console
📈 Google AnalyticsWebsite traffic analyticsanalytics.google.com
📢 Google AdsPaid advertising campaignsads.google.com

📱 Admin Portal Guide

Getting Started

  • Sign in with an authorized Google account (set in Admin Users tab)
  • All changes auto-save after a 1.5s delay or when clicking Save
  • The ⚡ indicator shows unsaved changes

Tabs Reference

🏢 BusinessCompany info, address, travel fee, deposit %, payment timing
🎨 PerformersAdd/edit performers — name, skills, calendar, working hours, base location
💰 PricingEdit all service prices (1-8hr) for individual & packages
📅 SchedulingBooking rules (advance time, max duration, slot intervals) + regions
💬 SMS TemplatesCustomize automated messages — use {{variables}} for dynamic content
🔗 IntegrationsVonage, Stripe, N8N webhook URLs
👤 Admin UsersManage authorized Google accounts + Google OAuth client ID
📚 DocsThis documentation section

⚙️ Config Reference

Config Server API

EndpointMethodAuthDescription
/healthGETNoneHealth check
/configGETOptionalFull config (secrets masked without API key)
/configPOSTX-API-KEYUpdate config sections
/pricing/quoteGETNoneCalculate price quote

Quote API Example

GET /pricing/quote?services=face-painting,balloon-twisting&duration=2&city=Dallas

Response:
{
  "services": "Face Painting + Balloon Twisting",
  "duration": 2, "basePrice": 350,
  "travelFee": 25, "totalPrice": 375,
  "depositPercent": 30, "depositAmount": 113,
  "balanceAmount": 262, "artistsRequired": 2
}