{
  "slug": "servicetitan",
  "url": "https://apps.sectorgrowth.com/integrations/servicetitan/",
  "name": "ServiceTitan",
  "vendor": "ServiceTitan",
  "aliases": [
    "Service Titan",
    "ServiceTitan API",
    "ServiceTitan Marketing Pro",
    "ST tenant"
  ],
  "website": "https://www.servicetitan.com/",
  "category": {
    "slug": "field-service-and-facilities",
    "name": "Field service and facilities",
    "url": "https://apps.sectorgrowth.com/categories/field-service-and-facilities/"
  },
  "summary": "ServiceTitan runs the estimate, the job and the membership for trades contractors, one tenant at a time, which is the wall a group of brands hits.",
  "answer": "No. Nothing in the HubSpot App Marketplace is built for ServiceTitan as of September 2026, only apps that match the word loosely. ServiceTitan Marketing Pro is the vendor-side alternative and it is the right answer for a contractor who only wants campaigns driven by ServiceTitan data. A keyed sync into HubSpot earns its cost when the portal has to own the relationship across several trades, brands or acquisitions.",
  "nativeApp": {
    "status": "none",
    "verifiedAt": "2026-09-22"
  },
  "api": {
    "style": "rest",
    "auth": "oauth2",
    "webhooks": "partial",
    "changedSince": "unknown",
    "sandbox": "yes",
    "rateLimit": "60 calls a second per application per tenant for every API except reporting, where the limit is one of the same report a minute per tenant",
    "docsUrl": "https://partnerapis.servicetitan.io/docs/oauth20/"
  },
  "objects": [
    {
      "source": "Customer",
      "hubspot": "company",
      "direction": "two_way",
      "key": "ServiceTitan customer id in a custom HubSpot property",
      "notes": "A residential customer is still a company, because locations hang off it."
    },
    {
      "source": "Contact",
      "hubspot": "contact",
      "direction": "two_way",
      "key": "Email, with the ServiceTitan customer id as the tie breaker"
    },
    {
      "source": "Location",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Location id, associated to the customer",
      "notes": "One customer can hold many service addresses, and commercial ones hold dozens."
    },
    {
      "source": "Estimate",
      "hubspot": "deal",
      "direction": "to_hubspot",
      "key": "Estimate id",
      "notes": "The estimate is the record a sales manager can honestly forecast."
    },
    {
      "source": "Job",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Job number, associated to the location"
    },
    {
      "source": "Invoice",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Invoice number, associated to the job"
    },
    {
      "source": "Membership",
      "hubspot": "custom",
      "direction": "to_hubspot",
      "key": "Membership id, with the expiry date as a workflow trigger",
      "notes": "Renewal dates are the single most useful field marketing gets from this sync."
    }
  ],
  "approaches": [
    {
      "kind": "custom",
      "fit": "recommended",
      "why": "A written service can page every object on a watermark inside the 60 calls a second budget, key on the ServiceTitan id and keep a link store, which is what a two-way relationship between brands needs."
    },
    {
      "kind": "ipaas",
      "fit": "possible",
      "why": "A per-task platform moves new estimates or completed jobs into HubSpot and is a reasonable pilot. It cannot page a tenant's history, hold a watermark or reconcile after an outage."
    },
    {
      "kind": "native",
      "fit": "avoid",
      "why": "There is no listed app to install. The marketplace holds only fuzzy matches, so the choice is between Marketing Pro on the ServiceTitan side and a build on yours."
    }
  ],
  "effort": {
    "discoveryHours": [
      10,
      20
    ],
    "buildHours": [
      70,
      150
    ],
    "buildBand": "70 to 150 hours",
    "typicalElapsed": "4 to 8 weeks"
  },
  "pattern": "polling-watermark",
  "faqs": [
    {
      "q": "Is there a ServiceTitan app in the HubSpot App Marketplace?",
      "a": "No. Nothing in the marketplace is named for ServiceTitan, only fuzzy matches on the word. The two real choices are ServiceTitan Marketing Pro, which keeps campaigns on the ServiceTitan side, or a service that syncs ServiceTitan records into HubSpot and keys them on the ServiceTitan id."
    },
    {
      "q": "When is ServiceTitan Marketing Pro enough on its own?",
      "a": "When campaigns are the whole requirement. Marketing Pro builds audiences from data already in ServiceTitan, such as unsold estimates, aging equipment and memberships expiring soon, and runs email, text, direct mail, reputation and digital ads from there. It stops being enough when several brands or an acquisition need one shared relationship record."
    },
    {
      "q": "How does an application authenticate against a ServiceTitan tenant?",
      "a": "With the client credentials grant, the only OAuth 2.0 flow ServiceTitan currently supports. You post a client id and secret to the token endpoint at auth.servicetitan.io and receive a bearer token that expires in about fifteen minutes. Every request also carries an app key, and the client id and secret are unique to each tenant."
    },
    {
      "q": "What are the ServiceTitan API rate limits?",
      "a": "Sixty calls a second per application per tenant for regular APIs. The reporting APIs are far tighter, at one of the same report a minute per tenant, which rules out driving a dashboard off them. A sync should plan around the regular endpoints and treat reporting as an occasional extract."
    },
    {
      "q": "Does ServiceTitan push events to an integration?",
      "a": "Only in part. The documentation we could reach describes webhooks on the Leads Integration Platform, where ServiceTitan sends partners real-time updates about accounts, profiles and lead status events such as accepted, declined, scheduled and invoiced. For customers, jobs and invoices, plan a scheduled read rather than an event stream."
    },
    {
      "q": "How fresh is ServiceTitan data once it reaches HubSpot?",
      "a": "As fresh as the schedule, which in practice means fifteen minutes to an hour. A polling design reads each object in pages, stores where it got to, and resumes from there on the next run. That is fast enough for a follow-up sequence and too slow for anything a dispatcher watches live."
    },
    {
      "q": "Can HubSpot create a booking in ServiceTitan?",
      "a": "Yes, through the Leads Integration Platform, which accepts a booking over a server-to-server post with an idempotency token and a partner booking id, both required to be unique. Those two fields are what stop a retried form submission becoming two jobs. Everything after the booking stays on the ServiceTitan side."
    },
    {
      "q": "What does a ServiceTitan and HubSpot sync take in hours?",
      "a": "The band is ten to twenty hours of discovery and seventy to a hundred and fifty hours of build for customers, contacts, locations, estimates, jobs, invoices and memberships, with watermarks, a reconciliation endpoint and a sandbox-first cutover. Agreeing which trades and business units are in scope is the discovery question that moves the number."
    }
  ],
  "sections": [
    {
      "depth": 2,
      "text": "Why teams connect ServiceTitan to HubSpot",
      "anchor": "#why-teams-connect-servicetitan-to-hubspot",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#why-teams-connect-servicetitan-to-hubspot"
    },
    {
      "depth": 2,
      "text": "What syncs",
      "anchor": "#what-syncs",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#what-syncs"
    },
    {
      "depth": 2,
      "text": "Architecture",
      "anchor": "#architecture",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#architecture"
    },
    {
      "depth": 2,
      "text": "Three ways to connect",
      "anchor": "#three-ways-to-connect",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#three-ways-to-connect"
    },
    {
      "depth": 2,
      "text": "What breaks and how we prevent it",
      "anchor": "#what-breaks-and-how-we-prevent-it",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#what-breaks-and-how-we-prevent-it"
    },
    {
      "depth": 3,
      "text": "The fifteen minute token",
      "anchor": "#the-fifteen-minute-token",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#the-fifteen-minute-token"
    },
    {
      "depth": 3,
      "text": "Each report once a minute",
      "anchor": "#each-report-once-a-minute",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#each-report-once-a-minute"
    },
    {
      "depth": 3,
      "text": "Near-duplicate customers from phone bookings",
      "anchor": "#near-duplicate-customers-from-phone-bookings",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#near-duplicate-customers-from-phone-bookings"
    },
    {
      "depth": 3,
      "text": "Sixty calls a second, shared",
      "anchor": "#sixty-calls-a-second-shared",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#sixty-calls-a-second-shared"
    },
    {
      "depth": 2,
      "text": "Our approach",
      "anchor": "#our-approach",
      "url": "https://apps.sectorgrowth.com/integrations/servicetitan/#our-approach"
    }
  ],
  "caseStudies": [],
  "guides": [
    "https://apps.sectorgrowth.com/guides/choose-a-hubspot-integration-approach/"
  ],
  "builtBySectorGrowth": false,
  "status": "published",
  "verifiedAt": "2026-09-22",
  "updatedAt": "2026-09-25",
  "authors": [
    {
      "name": "Prash",
      "role": "Lead of Technical Integrations and AI Solutions"
    }
  ],
  "sources": [
    {
      "title": "OAuth 2.0 - ServiceTitan API - developer portal",
      "url": "https://partnerapis.servicetitan.io/docs/oauth20/"
    },
    {
      "title": "What are the default API rate limits in ServiceTitan for regular APIs and reporting APIs?",
      "url": "https://help.servicetitan.com/docs/default-api-rate-limitsfor-regular-apis-and-reporting-apis"
    },
    {
      "title": "Get started with API dev portal V2",
      "url": "https://help.servicetitan.com/how-to/get-started-with-apidev-portal-v2"
    },
    {
      "title": "Leads Integration Platform",
      "url": "https://help.servicetitan.com/docs/leads-integration-platform"
    },
    {
      "title": "Marketing Pro Home",
      "url": "https://help.servicetitan.com/landing-page/marketing"
    }
  ]
}