Epirco × Vigoo AppHubSpot Implementation Spec
Driving Your Business Forward
Build 3 · Stream 06 · Recommendation Layer

HubSpot Implementation Specification

Vigoo App

A build-ready specification for an independent commercial pipeline. Every object, property, pipeline, workflow, sequence, form, integration, and report is specified so the implementation team can deploy it without interpretation.

SubscriptionSales Pro + Service Pro + Mkt StarterMarketColombia · es-COPreparedJune 2026Prepared byEpirco
Scroll
01Build Specification

Implementation Summary

This document specifies a complete HubSpot build for Vigoo App: an independent commercial pipeline that converts a structured cold-email-and-WhatsApp outbound motion into qualified, attended demos, with the founders owning the close. It is a build specification, not a strategy overview. Every recommendation below is tagged to a subscription tier and validated against current HubSpot documentation. Where a capability needs a tier Vigoo App does not hold, it moves to the Upgrade Opportunities appendix and does not appear in the primary plan.

The account is greenfield. There was no CRM at intake, so there is no migration: the implementation team builds the portal clean, registered in Vigoo App's name from day one, with Epirco holding operational control through the engagement and full handover at completion. The build serves one commercial job above all others: produce a qualified, attended appointment, because that is the event the engagement is measured and paid on.

The subscription this plan is built against

Sales Hub Professional (4 Core seats) is the confirmed provisioned tier DATA per the engagement configuration. Two additions were confirmed in scope during scoping: Service Hub Professional for the native WhatsApp channel and SLA-tracked help desk, and Marketing Hub Starter for newsletters and simple marketing email. The combined baseline for this plan is therefore Sales Hub Professional + Service Hub Professional + Marketing Hub Starter.

2
Pipelines (Lead + Deal)
31
Custom properties
7
Workflows
3
Sales sequences
5
Integrations
4
Dashboards

What this build includes, and what it deliberately leaves out

In scope (primary plan)

  • A Lead pipeline for prospecting (Sales Hub Pro lead objects) and a Deal pipeline for the booked-to-won motion.
  • The full lead-qualification gate from the engagement standards, enforced as required properties before an appointment is confirmed.
  • A custom-site pre-qualification form posting to the HubSpot Forms API, field-mapped to qualification properties.
  • Native WhatsApp as a channel in the Service Hub help desk, with speed-to-lead routing and an SLA on first response.
  • Sales sequences for the no-show nurture and the post-demo follow-up, sent 1:1 by the SDR.
  • Marketing Hub Starter newsletters and simple form-follow-up email.
  • Native GA4 and Meta connection, and a documented Bre-B/DIAN payments-data path.
  • Four dashboards: pipeline, speed-to-lead and SLA, source and CAC, and activation.

Out of scope (needs upgrade or owned elsewhere)

  • Branched marketing nurture workflows (lead drips with if/then logic) require Marketing Hub Professional. Specified in the Upgrade appendix.
  • Predictive lead scoring and behavioral event triggers require Marketing or Sales Hub Enterprise.
  • Custom objects (for example a Location object) require Enterprise. The build models locations as deal-level properties instead.
  • Deal approval workflows and team-restricted pipelines require Sales Hub Enterprise.
  • Discovery and closing sit with Vigoo App. Epirco's scope ends at the qualified, attended meeting.
  • The vigooapp.com rebuild is a separate Epirco stream; this plan specifies only the form-to-HubSpot capture contract.

Timeline and team

The portal can be stood up in roughly three working weeks: week one for objects, properties, and the two pipelines; week two for forms, the WhatsApp channel, sequences, and integrations; week three for dashboards, the qualification gate, and end-to-end testing against a sample lead. The build is owned by Epirco's CRM specialist, with the dedicated part-time SDR as the primary day-to-day operator and Vigoo App's founders as the demo and close owners. A HubSpot administrator on Vigoo App's side holds the super-admin seat for handover.

Load-bearing dependency, carried into every section

The qualified-appointment motion can be built and run today. The Cobros deal tier, the activation workflow, and the payments-data reporting all depend on the Bre-B and DIAN financial layer, which is roadmap, not shipped ASSUMPTION. This plan builds the rails-dependent objects in a draft, inactive state so the structure is ready, and flags every dependency inline. Confirm the rails build-versus-extension status and the named DIAN-authorized provider at kickoff. Until the rails ship, the active commercial motion sells Operación on month-end reporting value, and the rails-gated automation stays off.

02Build Specification

CRM Data Architecture

The object model is deliberately lean. Vigoo App sells a single product to a single decision-maker at a physical-location business, so the model leans on the four standard objects, Contacts, Companies, Deals, and the Lead object, and avoids custom objects, which require Enterprise. The location, which is the unit of value in pricing, is captured as a deal property rather than a custom object, so the model stays inside the Professional tier.

Tier legend FREE Free CRM STARTER Starter+ PRO Professional+ ENT Enterprise CRM Core CRM SALES Sales Hub SVC Service Hub MKT Marketing Hub

2.1 Object model

Objects and associations

ObjectPurpose for Vigoo AppKey custom propertiesAssociationsTier
LeadThe prospecting record before a qualified appointment. Cold-email and scraped prospects land here; the SDR works them to a booked, attended demo.ep_active_members, ep_monthly_revenue_cop, ep_qualification_status→ Contact, CompanySALESPRO
ContactsThe gym owner, founder, or primary partner. One decision-maker per deal; the person the SDR and founder speak to on WhatsApp.ep_role_authority, ep_whatsapp_phone, ep_lead_source_detail, ep_city→ Companies, Deals, Tickets, LeadCRMFREE
CompaniesThe gym or studio business. Holds firmographics used for qualification and segmentation.ep_business_type, ep_active_members, ep_location_count, ep_current_systems→ Contacts, DealsCRMFREE
DealsThe booked-to-won opportunity. One deal per operator; tier and location count carried as properties.ep_plan_tier, ep_billing_cycle, ep_location_count, closed_lost_reason→ Contacts, CompaniesCRMFREE
TicketsInbound WhatsApp and support conversations, routed and SLA-tracked in the Service Hub help desk.ep_channel_source, ep_sla_first_response→ Contacts, CompaniesSVCPRO
Custom ObjectsNot used. A Location object would be the natural model, but custom objects require Enterprise. Location is modeled as ep_location_count on the deal instead.n/an/aENT

Naming convention: lowercase, underscores, no spaces. Every Epirco-created property is prefixed ep_ to distinguish it from HubSpot defaults. HubSpot default internal names (for example email, amount, closedate, lifecyclestage) are used as-is and never re-created.

2.2 Custom properties

Every custom property the build creates, with internal name, object, field type, dropdown options, whether it is required, its purpose, and its tier. Properties marked (qual) participate in the lead-qualification gate. Properties tied to the unshipped rails are created but left unused until the financial layer ships.

31 custom properties · create exactly as specified

PropertyInternal nameObjectField typeOptions (dropdown / checkbox)RequiredPurposeTier
Active Membersep_active_membersLead, CompanyNumbern/aYes (qual)Active member count. Core qualification gate: min 80 OR min revenue.FREE
Monthly Revenue (COP)ep_monthly_revenue_copLead, CompanyNumbern/aYes (qual)Approx monthly revenue in COP. Qualifies at >= 15,000,000 COP if members < 80.FREE
Qualification Statusep_qualification_statusLead, ContactDropdownunqualified pending_review qualified disqualified_size disqualified_chain disqualified_no_authorityYesOutcome of the lead-qualification gate. Must be qualified before an appointment is confirmed.FREE
Business Typeep_business_typeLead, CompanyDropdowncrossfit_box functional_hiit_studio boutique_studio traditional_gym otherYes (qual)Physical-location business type. Trainers without a location and franchises without local authority are excluded.FREE
Role / Authorityep_role_authorityContactDropdownowner founder primary_partner manager_no_authority reception_staff trainerYes (qual)Decision-maker check. Only owner, founder, or primary partner with signing authority qualifies.FREE
Location Countep_location_countCompany, DealNumbern/aYesNumber of physical locations. Drives tier (Multisede at 2+) and per-location pricing. Excludes large chains (cap 500 members/site).FREE
Cityep_cityContact, CompanySingle-line textn/aNoOperator city, used for territory and Colombia-first sequencing.FREE
Countryep_countryContact, CompanyDropdowncolombia mexico peru chile ecuador panama spain otherNoMarket. Colombia is the beachhead; others gate on the expansion sequence.FREE
WhatsApp Phoneep_whatsapp_phoneContactPhone numbern/aYesDedicated WhatsApp number for the conversion channel. Distinct from default phone.FREE
Lead Source Detailep_lead_source_detailLead, ContactDropdowncold_email whatsapp_inbound instagram referral_crossfit referral_two_brain capterra organic_search new_gym_partner otherNoGranular source beyond default hs_analytics_source, for CAC attribution by channel.FREE
Current Systemsep_current_systemsLead, CompanyMultiple checkboxspreadsheets whatsapp_manual paper_cash fitco crosshero wodapp mindbody other_software noneNoWhat the operator runs today. Drives migration messaging and competitive framing.FREE
Website / Socialsep_website_socialsLead, CompanySingle-line textn/aNoSite and social handles, collected on the pre-qualification form.FREE
Plan Tierep_plan_tierDealDropdownoperacion operacion_cobros multisedeYes (stage 2+)Pricing tier. Cobros and Multisede depend on the shipped Bre-B/DIAN layer.FREE
Billing Cycleep_billing_cycleDealDropdownmonthly annual_prepayYes (stage 3+)Monthly or annual-prepay (saves ~2 months). Affects ACV and forecasting.FREE
Rails Dependency Flagep_rails_dependentDealSingle checkboxn/aNoTrue when the deal's tier depends on the unshipped Bre-B/DIAN layer. Used to suppress premature activation steps.FREE
Appointment Attendedep_appointment_attendedContact, DealSingle checkboxn/aYes (at demo)True only when a qualified lead attends the demo. The Foundry performance-fee trigger event. No-shows stay false.FREE
Appointment Dateep_appointment_dateContact, DealDate pickern/aNoBooked demo date, used for speed-to-lead and no-show nurture timing.FREE
No-Show Countep_no_show_countContactNumbern/aNoCount of missed appointments. Drives the no-show nurture sequence and re-book logic.FREE
Speed to Lead (min)ep_speed_to_lead_minContactNumber (calculated)n/aNoMinutes from inbound to first response. SLA target sub-5-min. Calculated property requires Operations Hub; see note.PRO
SLA First Responseep_sla_first_responseTicketDropdownmet_under_5min met_under_1hr breachedNoWhether the WhatsApp first-response SLA was met. Service Hub Pro SLA tracking.SVCPRO
Channel Sourceep_channel_sourceTicketDropdownwhatsapp email chat phoneNoOriginating channel of the support or sales conversation in the help desk.SVCPRO
Activation - First Reportep_act_first_reportContact, DealSingle checkboxn/aNoOperator viewed their first month-end report (the shipped proxy Aha). Set by activation workflow.FREE
Activation - First Dueep_act_first_dueContact, DealSingle checkboxn/aNoFirst real due collected via Bre-B. Rails-dependent; stays false until rails ship.FREE
Activation - First Invoiceep_act_first_invoiceContact, DealSingle checkboxn/aNoFirst DIAN-validated e-invoice issued in-app. The true Aha. Rails-dependent.FREE
Founding Operatorep_founding_operatorContact, DealSingle checkboxn/aNoFirst ~30-50 operators on grandfathered pricing; seeds reviews and reference density.FREE
Habeas Data Consentep_consent_habeas_dataContactSingle checkboxn/aYesColombia Ley 1581 personal-data authorization captured at form submission. Stamped with date.FREE
Consent Timestampep_consent_timestampContactDate pickern/aNoDate the Habeas Data authorization was given. Retention and audit evidence.FREE
WhatsApp Opt-Inep_whatsapp_optinContactSingle checkboxn/aYes (for WA)Explicit opt-in to receive WhatsApp business messages, required before business-initiated sends.FREE
Referral Source Contactep_referral_sourceContactSingle-line textn/aNoThe operator who referred this lead, for the post-Aha community referral loop.FREE
Demo Ownerep_demo_ownerContact, DealHubSpot usern/aNoThe founder who runs the demo and owns the close. Distinct from the SDR who books it.FREE
Lost Reasonclosed_lost_reasonDealDropdownprice chose_competitor no_rails_yet not_qualified went_dark diy_spreadsheets timingYes (Closed Lost)Loss analysis. no_rails_yet isolates deals lost specifically to the unshipped financial layer.FREE

The calculated ep_speed_to_lead_min property uses HubSpot calculated-property logic. Full calculated properties are an Operations Hub / Professional data-tools feature; on the current stack, compute speed-to-lead in the reporting layer from the ticket created-date and first-response-date instead, and treat this property as the reporting alias. Flagged in the Feature Validation Log.

2.3 Lifecycle stage mapping

The operator journey maps to HubSpot's standard lifecycle stages. The transition that matters commercially is Lead to Marketing Qualified Lead, which is gated by the lead-qualification standards, and SQL to Opportunity, which is the booked-and-attended demo. The engagement is paid on the attended demo, so the lifecycle is instrumented to make that event unambiguous.

Journey stage to HubSpot lifecycle

Journey stageHubSpot lifecycle stageEntry criteriaExit criteriaAutomation
Cold prospectsubscriber / Lead objectScraped or cold-emailed; lands as a Lead recordReplies or submits pre-qual formSet on Lead creation by import or Forms API
Engaged prospectleadInbound reply, WhatsApp message, or form submissionMeets qualification gateWorkflow sets lifecyclestage = lead on first engagement
Qualifiedmarketingqualifiedleadep_qualification_status = qualified (members/revenue, type, authority all pass)SDR books a demoWorkflow 2 moves to MQL when the gate passes
Appointment bookedsalesqualifiedleadDemo booked on the Epirco-managed calendarDemo attendedWorkflow 3 sets SQL on meeting booked
Demo attendedopportunityep_appointment_attended = true; deal createdFounder closes or losesWorkflow 4 creates the deal and sets Opportunity on attendance
WoncustomerDeal marked Closed Wonn/aAuto-set on deal close-won; triggers onboarding sequence
Lost / no-showother (stays lead)No-show, or deal Closed LostRe-engagesNo-show nurture sequence; ep_no_show_count increments
Why the attended-demo instrumentation is load-bearing

Epirco's performance fee triggers on a qualified lead who attends the demo; no-shows are excluded and absorbed by Epirco's nurture. The lifecycle therefore separates salesqualifiedlead (booked) from opportunity (attended), and ep_appointment_attended is the single source of truth for billing. Never infer attendance from the booking alone.

03Build Specification

Pipeline Specification

Two pipelines run the commercial motion. The Lead pipeline handles prospecting, from a cold record to a booked-and-attended demo, and is where the SDR lives day to day. The Deal pipeline handles the founder-owned close, from attended demo to won. Splitting them keeps the SDR's qualification work separate from the founder's closing work, which the engagement scope requires.

Pipeline 1: Operator Prospecting SALESPRO

Hub: Sales (lead object pipeline, Professional). Purpose: move a cold or inbound prospect to a qualified, booked, and attended demo. The lead-qualification gate is enforced here before any appointment is confirmed.

Lead pipeline stages

#StageEntry criteriaRequired propertiesExit criteriaAutomation
1NewLead created by import, cold-email reply, or Forms API submissionep_lead_source_detailSDR makes first contactSpeed-to-lead timer starts; routes to SDR
2Attempting ContactSDR has responded (target sub-5-min on WhatsApp)ep_whatsapp_phone, ep_speed_to_lead_minProspect engages in qualificationSLA breach alert if first response > 5 min
3QualifyingTwo-way conversation open; pre-qual data being collectedep_active_members, ep_monthly_revenue_cop, ep_business_type, ep_role_authorityGate passes or failsWorkflow 2 evaluates the gate and sets ep_qualification_status
4Qualifiedep_qualification_status = qualifiedep_consent_habeas_data, ep_whatsapp_optinDemo bookedLifecycle set to MQL; meeting link offered in WhatsApp
5Demo BookedMeeting booked on the Epirco-managed calendarep_appointment_date, ep_demo_ownerDemo attended OR no-showLifecycle to SQL; reminder sequence enrolls; Workflow 3
WonDemo Attendedep_appointment_attended = trueep_appointment_attendedConverts to Deal pipelineWorkflow 4 creates deal, sets Opportunity, fires fee-eligible event
LostDisqualified / No-ShowGate failed, or booked demo missedep_qualification_status or ep_no_show_countn/a (may re-enter)No-show nurture sequence; disqualified reason recorded

Lead object pipelines are confirmed available on Sales Hub Professional per current HubSpot documentation (a Sales Hub Professional or Enterprise subscription is required to manage lead object pipelines). Pipeline rules that enforce creating deals from leads are also Professional; the deal-approval process and team-restricted pipelines are Enterprise only and are not used here.

Pipeline 2: Operator Close SALESPRO

Hub: Sales (deal pipeline). Purpose: the founder-owned close, from attended demo to active operator. Probabilities are set for forecasting; the close itself is owned by Vigoo App, not Epirco.

Deal pipeline stages

#StageProb.Entry criteriaRequired propertiesExit criteriaAutomation
1Demo Completed30%Deal created from attended demoep_plan_tier, ep_location_countOperator engages on next stepsPost-demo follow-up sequence enrolls
2Trial / Second-Month-Free55%Operator accepts the trial offerep_billing_cycle, amountFirst charge approaches or operator commitsOnboarding sequence; activation workflow watches for Aha
3Verbal / Proposal75%Operator signals intent to payclosedatePayment set upFounder task to confirm billing
WonClosed Won100%First paid month confirmedep_plan_tier, ep_billing_cycle, amountn/aLifecycle to Customer; founding-operator flag if in first cohort; onboarding ticket created
LostClosed Lost0%Operator declines or goes darkclosed_lost_reason (required)n/aIf reason = no_rails_yet, re-engage list for rails launch

Deal properties for this pipeline

PropertyInternal nameTypeOptionsRequired atPurpose
Deal value (monthly)amountCurrency (COP)n/aStage 2+Monthly subscription value; rolls to ARR for forecasting
Plan tierep_plan_tierDropdownoperacion operacion_cobros multisedeStage 1Tier sold. Cobros/Multisede gated on shipped rails
Billing cycleep_billing_cycleDropdownmonthly annual_prepayStage 2Drives ACV and annual-prepay discount
Location countep_location_countNumbern/aStage 1Per-location pricing; 2+ implies Multisede
Close dateclosedateDaten/aStage 3Forecasting
Rails dependentep_rails_dependentCheckboxn/aStage 1Flags deals whose tier needs the unshipped layer
Lost reasonclosed_lost_reasonDropdownprice chose_competitor no_rails_yet not_qualified went_dark diy_spreadsheets timingClosed LostLoss analysis; isolates rails-blocked losses
04Build Specification

Workflow Specifications

Seven workflows run the automation. Each is specified at build depth: enrollment trigger, actions in order, branches, delays, suppression, goal, and dependencies. All seven are Sales Hub or core-CRM workflows, which the Professional tier includes. None depend on Marketing Hub automation, which the current stack does not carry. Workflows whose actions touch the unshipped rails are specified but built in draft status until the financial layer ships.

WF-1 · Lead Intake & Speed-to-Lead Routing

SALESPRO
TypeContact-based (also reads Lead record)
StatusActive
TriggerContact is created AND ep_lead_source_detail is known. Re-enrollment: off.
Actions
  1. Set lifecyclestage to lead.
  2. Rotate the record to the SDR (single owner today; round-robin ready for a second SDR).
  3. Create task: "Respond on WhatsApp within 5 minutes" assigned to the SDR, due immediately.
  4. Stamp first-contact start time for the speed-to-lead measure.
  5. Delay 5 minutes.
    IF first response not logged (no associated WhatsApp activity) THEN internal notification to the SDR and account lead: "Speed-to-lead SLA at risk."
Suppressionlifecyclestage is already customer, or ep_qualification_status = disqualified_*
GoalFirst response logged within 5 minutes
Depends onProperties ep_lead_source_detail, ep_whatsapp_phone. Runs first in setup order.

WF-2 · Lead Qualification Gate

SALESPRO

Enforces the engagement's Lead Qualification Standards before any appointment is confirmed. This is the single most important automation for protecting the performance-fee model: a fee triggers only on a qualified, attended appointment.

TypeContact-based
Triggerep_active_members is known AND ep_business_type is known AND ep_role_authority is known. Re-enrollment: on (re-evaluates if any input changes).
Actions
  1. If/then branch on the gate:
    IF ep_business_type is any of [crossfit_box, functional_hiit_studio, boutique_studio, traditional_gym] AND ep_role_authority is any of [owner, founder, primary_partner] AND ep_location_count ≤ (members ≤ 500 per site) AND (ep_active_members ≥ 80 OR ep_monthly_revenue_cop ≥ 15,000,000) THEN go to step 2 (qualified). ELSE go to step 4 (disqualify).
  2. Set ep_qualification_status = qualified.
  3. Set lifecyclestage = marketingqualifiedlead; create SDR task "Offer demo booking link on WhatsApp." End.
  4. Set ep_qualification_status to the matching disqualified reason (disqualified_size, disqualified_chain, or disqualified_no_authority) and remove from active sequences.
SuppressionAlready customer
Goalep_qualification_status = qualified
Depends onProperties listed above. Runs after WF-1.

WF-3 · Demo Booked & Reminder

SALESPRO
TypeContact-based
Triggerep_appointment_date is known AND ep_qualification_status = qualified. Re-enrollment: on (re-book).
Actions
  1. Set lifecyclestage = salesqualifiedlead.
  2. Set ep_demo_owner to the assigned founder.
  3. Enroll in the Demo Reminder sequence (SEQ-2): WhatsApp + email reminders at 24h and 1h before.
  4. Delay until ep_appointment_date + 2 hours.
    IF ep_appointment_attended = true THEN end (WF-4 takes over). ELSE increment ep_no_show_count and enroll in the No-Show Nurture sequence (SEQ-3).
SuppressionAlready customer
Goalep_appointment_attended = true
Depends onSEQ-2, SEQ-3; property ep_appointment_attended. Runs after WF-2.

WF-4 · Attended Demo to Deal (Fee-Eligible Event)

SALESPRO

The commercial heart of the build. Fires only on a genuinely attended demo, so it is the clean source of the Foundry performance-fee count.

TypeContact-based, creates a Deal
Triggerep_appointment_attended becomes true. Re-enrollment: off.
Actions
  1. Set lifecyclestage = opportunity.
  2. Create a Deal in the Operator Close pipeline at stage Demo Completed; associate contact and company; set ep_demo_owner as deal owner.
  3. Copy ep_location_count to the deal; pre-set ep_plan_tier based on ep_location_count and rails availability.
    IF rails not yet shipped THEN set ep_plan_tier = operacion and ep_rails_dependent = false. ELSE allow operacion_cobros.
  4. Set a "Qualified attended appointment" marker for monthly fee reconciliation (reporting list membership).
  5. Enroll the contact in the Post-Demo Follow-Up sequence (SEQ-1), sent by the founder.
SuppressionDeal already exists for this contact
GoalDeal reaches Closed Won
Depends onDeal pipeline (Section 3); SEQ-1; property ep_appointment_attended. Runs after WF-3.

WF-5 · Won to Onboarding

SALESPROSVC
TypeDeal-based
TriggerDeal stage = Closed Won. Re-enrollment: off.
Actions
  1. Set associated contact lifecyclestage = customer.
  2. If the operator is within the first ~30-50 won deals, set ep_founding_operator = true (grandfathered pricing).
  3. Create an onboarding ticket in the Service Hub help desk: "Guided migration and first-value setup," assigned to the onboarding owner.
  4. Enroll in the Onboarding sequence (part of SEQ-1 family): import members, set plans, first month-end report.
  5. Start the activation watch (hands off to WF-6).
Suppressionnone
Goalep_act_first_report = true (proxy Aha reached)
Depends onService Hub help desk; ep_founding_operator; WF-6. Runs after WF-4.

WF-6 · Activation Tracking (rails-gated)

SALESPRO

Built in draft until the Bre-B/DIAN layer ships. The proxy-Aha branch (first month-end report) can activate today; the true-Aha branches (first due, first invoice) activate when the rails are live.

TypeContact-based
Triggerlifecyclestage = customer. Re-enrollment: off.
Actions
  1. Delay 2 days. Create SDR/CS task "Day-2 WhatsApp activation nudge."
  2. Delay to day 7.
    IF ep_act_first_report = true THEN log proxy-Aha reached. ELSE "Day-7 activation nudge" task.
  3. [Rails-gated, draft] When product event sets ep_act_first_due = true and ep_act_first_invoice = true, log the true Aha and notify the account lead for the case-study and review ask.
Suppressionnone
Goalep_act_first_invoice = true (rails) or ep_act_first_report = true (proxy)
Depends onActivation properties; product-side event to set the rails flags (integration, Section 7).

WF-7 · WhatsApp First-Response SLA

SVCPRO
TypeTicket-based (help desk)
TriggerTicket created with ep_channel_source = whatsapp. Re-enrollment: off.
Actions
  1. Apply the help-desk SLA policy: target first response under 5 minutes.
  2. Route to the SDR (or on-call founder outside SDR hours) via Service Hub team routing.
  3. Delay 5 minutes.
    IF first reply sent THEN set ep_sla_first_response = met_under_5min. ELSE escalation notification and set breached.
Suppressionnone
Goalep_sla_first_response = met_under_5min
Depends onService Hub help desk, WhatsApp channel (Section 7). Service Hub Pro provides SLA tracking and reporting; advanced escalation workflows are Enterprise, so escalation here is a notification, not an automated re-route.
Workflow dependency map · setup order

Build in this order: properties and pipelines first, then WF-1 (intake) → WF-2 (qualify) → WF-3 (booking) → WF-4 (attended-to-deal) → WF-5 (won-to-onboarding) → WF-6 (activation, draft until rails) and WF-7 (SLA, independent, build alongside the WhatsApp channel). No circular dependencies. WF-4 must exist before WF-3's attended branch can hand off. SEQ-1, SEQ-2, SEQ-3 (Section 6) must be created before WF-3 and WF-4 reference them.

05Build Specification

Forms and Capture

One form matters: the pre-qualification form that gates a demo. It lives on the custom-built vigooapp.com, not on HubSpot CMS, so it is a custom form that posts to the HubSpot Forms API. The fields map one-to-one to the qualification properties, so a submission can be evaluated by WF-2 the moment it lands. The field set is exactly the engagement's required pre-qualification data.

Form: Operator Pre-Qualification CRM

Fields and property mapping

FieldTypeRequiredMaps to propertyNotes
Business nameSingle-line textYescompany (assoc)Creates/associates the Company
Business typeDropdownYesep_business_typeDrives qualification
Website / socialsSingle-line textNoep_website_socialsVerification
CitySingle-line textYesep_cityTerritory
CountryDropdownYesep_countryColombia-first sequencing
Active membersNumberYesep_active_membersQual gate (80 min / 500 max)
Approx monthly revenue (COP)NumberYesep_monthly_revenue_copQual gate (15M COP alt)
Contact nameSingle-line textYesfirstname, lastnameSplit on submit
Phone (WhatsApp)PhoneYesep_whatsapp_phoneConversion channel
EmailEmailYesemailContact key
RoleDropdownYesep_role_authorityAuthority check
Current systemsMultiple checkboxNoep_current_systemsMigration framing
Habeas Data consentSingle checkboxYesep_consent_habeas_dataLey 1581 authorization; stamps ep_consent_timestamp
WhatsApp opt-inSingle checkboxYesep_whatsapp_optinRequired before business-initiated sends
Submit actionRedirect to a Spanish thank-you page that immediately offers a WhatsApp conversation; no public calendar until WF-2 confirms qualified.
NotificationInternal notification to the SDR with the speed-to-lead clock started.
Lifecycle on submitSet to lead; WF-2 evaluates the gate.
Consent textes-CO: "Autorizo el tratamiento de mis datos personales conforme a la Ley 1581 de 2012 y la politica de privacidad de Vigoo App." Required, unticked by default.

Capture contract · custom form → HubSpot Forms API v3

# The custom vigooapp.com form POSTs server-side to the HubSpot Forms API.
# Endpoint (portalId + formGuid provided by the HubSpot admin at build):
POST https://api.hsforms.com/submissions/v3/integration/submit/{portalId}/{formGuid}

# Payload (field names use HubSpot internal property names):
{
  "fields": [
    { "name": "email",                  "value": "<email>" },
    { "name": "firstname",              "value": "<first>" },
    { "name": "ep_whatsapp_phone",      "value": "<phone>" },
    { "name": "ep_business_type",       "value": "crossfit_box" },
    { "name": "ep_active_members",      "value": "120" },
    { "name": "ep_monthly_revenue_cop", "value": "18000000" },
    { "name": "ep_role_authority",      "value": "owner" },
    { "name": "ep_city",                "value": "Bogota" },
    { "name": "ep_country",             "value": "colombia" },
    { "name": "ep_consent_habeas_data", "value": "true" },
    { "name": "ep_whatsapp_optin",      "value": "true" }
  ],
  "legalConsentOptions": {
    "consent": {
      "consentToProcess": true,
      "text": "Autorizo el tratamiento de mis datos (Ley 1581 de 2012)."
    }
  }
}
# Auth: private app token, stored server-side only. Never expose the token in client JS.

Why the Forms API and not an embedded HubSpot form: the site is a custom build, and a server-side POST keeps the private-app token off the client, lets the site own its own markup and Spanish UX, and still creates native Contact and Company records that WF-2 can evaluate. Progressive profiling and smart fields are Marketing Hub features and are not used here; if the site later wants them, see the Upgrade appendix.

06Build Specification

Sequences and Email

The nurture motion runs on Sales sequences, not marketing nurture workflows, because the current stack has Sales Hub Professional (which includes sequences) and Marketing Hub Starter (which does not include branched nurture). Sequences are 1:1, sent from the SDR's or founder's own mailbox, which fits a trust-led, founder-credibility motion better than bulk marketing email anyway. Marketing Hub Starter carries the newsletter and any simple form-follow-up email.

Subscription reality, stated plainly

Sales sequences are linear with engagement-based pauses; they are not the same as branched marketing nurture. The 7-to-8 touchpoint no-show absorption the engagement describes is built here as a Sales sequence plus manual WhatsApp and call steps. A fully automated, branched, multi-channel nurture workflow would require Marketing Hub Professional and is specified in the Upgrade appendix. What follows is the version that runs on the confirmed stack.

Three sequences

SequenceIDTriggerStepsChannel mixGoal / exitTier
Post-Demo Follow-Upseq-1-postdemoWF-4 on attended demoDay 0 thank-you + recap (founder email); Day 1 WhatsApp manual task; Day 3 value email; Day 5 WhatsApp; Day 8 call taskEmail + WhatsApp + callExit on deal stage advance or Closed WonSALESPRO
Demo Reminderseq-2-reminderWF-3 on demo booked24h before (email + WhatsApp); 1h before (WhatsApp)Email + WhatsAppExit on attendanceSALESPRO
No-Show Nurtureseq-3-noshowWF-3 no-show branch+2h WhatsApp re-book; Day 1 email; Day 2 WhatsApp; Day 4 call; Day 7 email; Day 10 WhatsApp; Day 14 final emailWhatsApp + email + call (7 touches)Exit on re-book; absorbed by EpircoSALESPRO

The No-Show Nurture is the 7-touchpoint absorption sequence the engagement scopes to Epirco. It mixes automated email steps with manual WhatsApp and call tasks, because business-initiated WhatsApp is sent from the native channel (Section 7), not from a Sales email step.

Marketing Hub Starter email MKTSTARTER

Marketing Hub Starter covers a monthly operator newsletter and simple form-follow-up email. It does not cover branched lead-nurture drips (Professional). The newsletter is the compounding-content channel; keep it operator-useful, never consumer-fitness motivational, per the brand guardrails.

Email assets

EmailInternal IDTriggerTypeSubject (es-CO)Tier
Operator newsletternl-operator-monthlyMonthly, manual send to opted-in operatorsMarketing email"Como los gimnasios de Colombia cierran el mes en minutos"MKTSTARTER
Form follow-upfu-prequal-receivedPre-qual form submissionSimple automated follow-up"Recibimos tu informacion. Hablemos por WhatsApp."MKTSTARTER

Personalization tokens · produced as code for PM hand-off (HubSpot Safety Rule)

{# Sales sequence and email personalization. PM pastes these into the relevant assets. #}
Hola {{ contact.firstname }},

{# Operator city, used to localize the opener #}
{% if contact.ep_city %}Vi que tu negocio esta en {{ contact.ep_city }}.{% endif %}

{# Tier-aware value line: only mention Cobros if rails have shipped #}
{% if contact.ep_business_type == "crossfit_box" %}
  Para un box con {{ contact.ep_active_members }} miembros, el cierre de mes deberia tomar minutos, no una tarde.
{% endif %}

{# Founder credibility close #}
Un saludo,
{{ owner.firstname }} - Vigoo App

Per the engagement's HubSpot Safety Rule, all HubL personalization tokens are delivered as code blocks for the PM to paste into Vigoo App's portal; they are never written via connector tools, which point at Epirco's own account.

07Build Specification

Integration Architecture

Five integrations connect HubSpot to the rest of the stack. The most important is WhatsApp, the primary conversion channel, now native through Service Hub Professional. The others wire analytics, ads, the custom site, and the rails-dependent payments-data path that lights up the activation tracking when the financial layer ships.

Integration overview

IntegrationToolMethodDirectionTier
WhatsApp channelWhatsApp Business API via MetaNative HubSpot channel in the help deskTwo-waySVCPRO
Web analyticsGA4Native connection + HubSpot tracking codeOne-way (GA4 context into HubSpot)CRM
AdsMeta Business SuiteNative ads integrationTwo-way (audiences out, lead events in)MKTSTARTER
Custom site capturevigooapp.comForms API v3 (server-side)One-way (site → HubSpot)CRM
Payments / activation dataBre-B + DIAN providerCustom API → private appOne-way (product → HubSpot)CRM (rails-gated)

WhatsApp · native channel

SVCPRO
Field mappingInbound number → ep_whatsapp_phone; conversation → ticket with ep_channel_source = whatsapp; contact auto-created if new. Conflict resolution: existing contact wins on match by phone or email.
SyncReal-time, into the Service Hub help desk shared inbox.
Error handlingIf the Meta/WhatsApp API connection drops, the channel shows disconnected in Settings → Inbox → Channels; notify the HubSpot admin. Business-initiated messages require an approved template and a prior opt-in (ep_whatsapp_optin).
SetupSettings → Inbox → Channels → Connect a channel → WhatsApp. Link the Meta Business account; verify a dedicated number (not already in the WhatsApp Business app). Assign the SDR and on-call founder; set routing per WF-7.
OwnerHubSpot admin builds; SDR operates.

Constraint to brief the operator on: connecting a number natively routes all of its messages into HubSpot and the native HubSpot WhatsApp does not include a drag-and-drop bot builder; multi-step qualification bots and broadcast campaigns are not native. The qualification logic therefore lives in WF-2, not in a WhatsApp bot. If broadcast or bot-flows become a requirement, a third-party connector (for example Wati or respond.io) is the path; noted in the Upgrade appendix.

Bre-B + DIAN · payments / activation data (rails-gated)

CRM

Specified now, connected when the rails ship. This is the integration that sets the true-Aha flags and makes activation and payments reporting real.

Field mappingProduct event "first due collected" → ep_act_first_due = true; "first DIAN invoice issued" → ep_act_first_invoice = true; both stamped to the contact and deal.
Direction / syncOne-way, product → HubSpot, near-real-time on the event.
MethodVigoo App's backend calls the HubSpot CRM API (private app token) to update the contact/deal on the event. Endpoint, auth, and payload below.
Error handlingRetry with backoff on 429/5xx; queue failed events for replay; alert the developer of record (Diego) on repeated failure. Never block the product flow on a HubSpot write.
OwnerVigoo App developer of record builds the product-side call; Epirco specifies the contract.

Activation event → HubSpot CRM API (rails-gated; build when rails ship)

# When an operator collects a first real due and issues a first DIAN invoice,
# Vigoo App's backend updates the HubSpot contact. PATCH by contact ID:
PATCH https://api.hubapi.com/crm/v3/objects/contacts/{contactId}
Authorization: Bearer <private-app-token>   # server-side only
{
  "properties": {
    "ep_act_first_due": "true",
    "ep_act_first_invoice": "true"
  }
}
# Setting both flags satisfies WF-6's true-Aha goal and fires the case-study notification.

GA4, Meta, custom site, in brief

IntegrationField / event mappingSyncError handlingOwner
GA4Source/medium and campaign context align to ep_lead_source_detail and default hs_analytics_source for CAC attributionDailyValidate tracking-code fire on the site; reconcile monthly against GA4Epirco CRM specialist
MetaHubSpot lists → Meta custom audiences; Meta lead events → contacts with ep_lead_source_detail = instagram/paidReal-time (events), daily (audiences)Audience sync errors surface in the Ads tool; reconnect token on expiryEpirco; activates at the 1,000-visit retargeting threshold
Custom sitePre-qual form → Forms API (Section 5)Real-timeServer-side retry; log failed submissions; never expose token client-sideEpirco + site developer
08Build Specification

Reporting and Dashboards

Four dashboards make the commercial engine legible, and they are ordered by the engagement's own priority: the first commercial KPIs the company has ever tracked are pipeline conversion and speed-to-lead, then source-level CAC, then activation. Custom report building is included at Professional, so these go beyond the default reports.

Dashboard 1: Commercial Pipeline

Audience: founders + account lead. Refresh: daily.

ReportTypeSourceFiltersGroupingVizTier
Qualified attended appointments / monthSingle objectContactsep_appointment_attended = true, date rangeMonthBarPRO
Lead pipeline funnelFunnelLeadsDate rangeStageFunnelPRO
Deal pipeline velocityFunnelDealsPipeline = Operator CloseStageFunnelPRO
Demo-to-close rateSingle objectDealsClosed Won vs Closed LostMonthLinePRO
Forecast (weighted)ForecastDealsOpen deals, by probabilityStageForecastSALESPRO

Dashboard 2: Speed-to-Lead & SLA

Audience: SDR + account lead. Refresh: real-time / daily.

ReportTypeSourceFiltersGroupingVizTier
Median speed-to-leadSingle objectTickets / ContactsChannel = whatsappWeekLineSVCPRO
SLA met vs breachedSingle objectTicketsep_sla_first_responseOutcomeDonutSVCPRO
Sub-5-minute response rateSingle objectTicketsmet_under_5minWeekKPI + trendSVCPRO

Dashboard 3: Source & CAC

Audience: account lead + founders. Refresh: weekly.

ReportTypeSourceFiltersGroupingVizTier
Leads by source detailSingle objectContactsDate rangeep_lead_source_detailBarPRO
Attended appointments by sourceSingle objectContactsep_appointment_attended = trueep_lead_source_detailStacked barPRO
Won deals by source (proxy CAC)Single objectDealsClosed WonSource detailTablePRO
Lost reason breakdownSingle objectDealsClosed Lostclosed_lost_reasonBarPRO

Dashboard 4: Activation (rails-gated)

Audience: founders. Refresh: daily. Proxy-Aha reports run today; true-Aha reports populate when the rails ship.

ReportTypeSourceFiltersGroupingVizTier
Proxy-Aha rate (first report)Single objectContactsep_act_first_report = trueCohort monthLinePRO
True-Aha rate (first invoice)Single objectContactsep_act_first_invoice = trueCohort monthLinePRO
Time-to-activationSingle objectContactsCustomer date to first-invoice dateCohortBarPRO
Logo churn (manual until product feed)Single objectDeals / CompaniesCustomer to churnedMonthLinePRO

Reporting cadence: Dashboard 2 is reviewed daily by the SDR; Dashboards 1 and 3 anchor the weekly summary; all four anchor the monthly strategic review with the account lead. Churn is instrumented from month one as the engagement's most dangerous assumption, manually at first, then from the product feed once available.

09Build Specification

True Cost Model

The cost of this build has four distinct categories that should never be blended: HubSpot subscription, seats, mandatory onboarding, and Epirco's implementation labor. Blending them hides what is a recurring software cost versus a one-time build cost. The figures below are list-price estimates from current HubSpot documentation and should be confirmed against a live HubSpot quote at purchase; HubSpot pricing is tier and contact dependent and changes.

Estimate, not a quote

These are list-price planning figures in USD, annual-commitment pricing where applicable. Confirm exact numbers in the client's HubSpot Settings → Account & Billing, or via a HubSpot sales quote, before committing. Epirco is not the billing party; assets are registered in Vigoo App's name. This is planning information, not financial advice.

Year-1 cost model (USD, estimates)

CategoryItemOne-timeMonthlyAnnualNotes
SubscriptionSales Hub Professional (base, incl. 1 core seat)n/a~$100~$1,200Annual commitment; confirm current base
Service Hub Professional (base)n/a~$90~$1,080Adds native WhatsApp, SLA, help desk
Marketing Hub Startern/a~$20~$240Newsletter + simple email; 1,000 marketing contacts
Seats EPIRCO-COVERED1 Sales Pro seat (SDR)n/a~$100~$1,200Sales seat includes core capabilities
1 Service Pro seat (help-desk routing)n/a~$90~$1,080Team routing needs ≥1 Service seat
3 Core seats (founders + admin)n/a~$300~$3,600~$100/seat; for users who do not need Sales/Service tools
Seats above this allocationn/aPro rataPro rataAny seat beyond 1 Sales Pro + 1 Service Pro + 3 Core is charged to Vigoo App pro rata
ContactsMarketing contacts (Starter 1,000 incl.)n/a$0$0Overage if opted-in marketing list > 1,000
Onboarding EPIRCO-COVEREDSales Hub Pro onboarding (mandatory)~$1,500n/an/aOne-time; covered by Epirco
Service Hub Pro onboarding (mandatory)~$1,500n/an/aOne-time; covered by Epirco
ImplementationEpirco build scope (this spec)Per SOWn/an/a~3 weeks; covered under the setup engagement, not a separate HubSpot charge
OngoingHubSpot administrationn/aPer retainerPer retainerWithin the ongoing-support scope
~$8,280
Est. annual HubSpot software (subs + seats)
~$3,000
One-time HubSpot onboarding
~$11,280
Est. HubSpot Year-1 total (software + onboarding)
SOW
Epirco implementation (separate line)

The HubSpot Year-1 estimate above is software plus mandatory onboarding only. Within it, Epirco covers the onboarding fees and a defined seat allocation (1 Sales Pro, 1 Service Pro, and 3 Core seats); seats beyond that allocation are charged to Vigoo App pro rata. The estimate excludes Epirco's implementation labor, which sits in the engagement SOW, and the Foundry performance fee ($35 per qualified attended appointment), which is a commercial cost, not a tooling cost.

What Epirco covers

  • HubSpot onboarding fees (Sales Hub Pro and Service Hub Pro).
  • A defined seat allocation: 1 Sales Pro seat, 1 Service Pro seat, and 3 Core seats.
  • HubSpot administration and configuration changes within the built scope.
  • Sequence and workflow tuning, dashboard maintenance, and the weekly and monthly reporting cadence.
  • SDR operation of the pipeline and WhatsApp channel within the scoped hours.

What Epirco does not cover

  • The HubSpot subscription fees themselves (Sales Pro, Service Pro, Marketing Starter base).
  • Seats beyond the covered allocation (1 Sales Pro + 1 Service Pro + 3 Core), charged to Vigoo App pro rata.
  • The Bre-B/DIAN rails build (Vigoo App's product engineering).
  • Upgrades to Marketing Hub Professional or Enterprise (see Upgrade appendix).
  • Discovery and closing (Vigoo App owns these).
10Build Specification

Data Privacy and Compliance

The beachhead is Colombia, so the governing regime is Colombian personal-data law, not GDPR. The build captures explicit Habeas Data authorization at the point of collection and treats WhatsApp opt-in as a separate, explicit consent. GDPR becomes relevant only when the Spain secondary market is activated; CCPA does not apply at this stage.

Applicable regimes

RegimeApplies?What the build does
Habeas Data (Colombia, Ley 1581/2012, Decreto 1377/2013)Yes (primary)Explicit authorization checkbox on the pre-qual form, stored in ep_consent_habeas_data with ep_consent_timestamp; privacy-policy link; honor revocation and deletion requests.
WhatsApp Business policyYesSeparate explicit opt-in (ep_whatsapp_optin) required before any business-initiated message; approved message templates only.
GDPR (EU)Only when Spain is activatedWhen Spain enters the sequence: lawful basis, consent records, data-processing terms, and a right-to-deletion path. Not built now; flagged for the expansion phase.
CCPA (California)NoNo California consumer base at this stage. Revisit only if a US motion is added.
HIPAANoNo protected health information. Member fitness data is operational, not clinical.
Data retentionRetain operator and prospect records for the engagement plus a defined tail; on revocation or a deletion request, delete or anonymize the contact and detach associated tickets. Document the process for handover.
Double opt-inRecommended for the marketing newsletter, given Habeas Data and the trust-led base; required in practice for WhatsApp business-initiated messaging via the explicit opt-in.
Data residencyHubSpot stores data on its own infrastructure; note this in the privacy policy. Assets and the portal are registered in Vigoo App's name, so legal title to the data sits with Vigoo App throughout.

This is implementation guidance, not legal advice. Vigoo App should have its Habeas Data authorization text and privacy policy reviewed by Colombian counsel before go-live.

UAppendix

Upgrade Opportunities

Features that would benefit Vigoo App but require a tier above the current stack. None appear in the primary plan. They are ranked by the value they would deliver first, so the upgrade conversation is sequenced, not all-or-nothing.

#FeatureRequired tierCurrentBusiness valueEst. cost deltaWhen it earns its place
1Branched lead-nurture workflows (automated, multi-step marketing drips)Marketing Hub ProMkt StarterFully automated no-show and pre-demo nurture instead of manual sequence steps; frees SDR timeLarge step from Starter; confirm at quoteWhen lead volume outgrows 1:1 sequences
2Marketing email at scale + landing pages + progressive formsMarketing Hub ProMkt StarterCompounding content engine, gated content, smart forms for the SEO/AEO strategySame upgrade as #1When content and AEO become a primary channel
3Predictive lead scoring + behavioral event triggersMarketing or Sales EnterpriseProAuto-prioritize the SDR's day by likelihood-to-attendEnterprise tierWhen lead volume makes manual prioritization the bottleneck
4Custom objects (a true Location object)EnterpriseProModel multi-location operators natively instead of via deal propertiesEnterprise tierWhen Multisede becomes a material share of the base
5Deal approval workflows + team-restricted pipelinesSales EnterpriseSales ProGovernance as the team grows beyond founders + one SDREnterprise tierWhen a second SDR or region is added
6WhatsApp bot flows + broadcast campaignsThird-party connector (Wati / respond.io)Native (1:1 only)Multi-step qualification bot and broadcast campaigns the native channel does not offerConnector subscriptionIf WhatsApp volume needs bot-led qualification or broadcast

Prioritized: #1 and #2 (Marketing Hub Professional) deliver the most value first, because they convert the manual nurture and content motion into automation as volume grows. Everything else waits on a specific scaling trigger.

VAppendix

Feature Validation Log

Feature availability was verified against current HubSpot documentation rather than recalled from training data, because HubSpot revises its feature matrix frequently. The verifications that shaped this build:

FeatureHubRequired tierClient hasAvailable?Source (verified June 2026)
Lead object pipelinesSalesProfessionalSales ProYesknowledge.hubspot.com, object pipelines
Multiple deal pipelines (up to 15)SalesProfessionalSales ProYesHubSpot Sales tiers comparison, 2026
1,000 custom propertiesCRMStarter+Sales ProYesHubSpot property limits, 2026
Sales workflows (lead rotation, task, stage updates)SalesProfessionalSales ProYesHubSpot Sales Hub pricing guide, 2026
Sales sequences (1:1 follow-up)SalesProfessionalSales ProYesHubSpot Sales Hub pricing guide, 2026
ForecastingSalesProfessionalSales ProYesHubSpot review, 2026
Native WhatsApp channelService / MarketingProfessionalService Pro (added)Yes (via Service Pro)hubspot.com WhatsApp integration; multiple 2026 guides
Help-desk routing + SLA trackingServiceProfessionalService Pro (added)YesHubSpot Service Hub overview, 2026
Newsletter / simple marketing emailMarketingStarterMkt Starter (added)YesHubSpot Marketing pricing, 2026
Branched nurture workflowsMarketingProfessionalMkt StarterNo → Upgrade appendixHubSpot Marketing review, 2026
Calculated propertiesOperations / Pro data toolsProfessionaln/aPartial → compute in reportingHubSpot data-tools docs, 2026
Custom objectsCRMEnterpriseProNo → Upgrade appendixHubSpot Sales tiers, 2026
Deal approval workflowsSalesEnterpriseSales ProNo → Upgrade appendixknowledge.hubspot.com, pipeline rules

Pricing and feature-gate facts were re-verified against HubSpot documentation and pricing pages dated within the last several months as of June 2026. Confirm exact line-item pricing against a live HubSpot quote before purchase; feature availability and pricing change.

QAppendix

QC Checklist

The build specification was checked against the engagement's quality gates before delivery.

#CheckStatus
1Every recommendation tier-tagged ([FREE]/[STARTER]/[PRO]/[ENT] + hub)Pass
2No feature above the client's subscription in the primary planPass (deferred to Upgrade appendix)
3Feature availability verified via web search, not training dataPass (Feature Validation Log)
4No HubSpot connector tools used for client data (Epirco portal only)Pass (specs and HubL only)
5Every custom property has internal name, field type, and optionsPass (31 properties)
6Every workflow has trigger, actions, branches, suppression, goal, dependenciesPass (7 workflows)
7No workflow depends on a property or pipeline not defined elsewherePass (dependency map)
8Every integration has field mapping and error handlingPass (5 integrations)
9No table cell left as TBDPass
10Subscription costs not combined with implementation laborPass (separated in Section 9)
11Data privacy addressed (Habeas Data primary; GDPR for Spain)Pass
12Client referred to as Vigoo App throughout; legal entity name absentPass
13Brand voice: no em dashes, no banned hype tokens, italics for emphasisPass
14Closes to projects@epirco.com with no gratitude-closerPass
15HubL template annotation + standard header/footer includes presentPass
16Rails dependency surfaced at every dependent objectPass
The next move

The specification is build-ready. The next move is to stand up the portal and wire the gate.

Build the objects and the two pipelines first, then the qualification gate and the WhatsApp channel, then the dashboards. Keep the rails-dependent objects in draft until the Bre-B and DIAN layer ships, and confirm the rails status and the DIAN-authorized provider at kickoff.

Questions or follow-upprojects@epirco.com
Driving Your Business Forward
Prepared by Epirco for Vigoo AppHubSpot Implementation Specification · v1.0 · Locked June 2026