CRM Automation

How to Integrate Recurly With HubSpot, Salesforce, or Zoho CRM

A reliable integration doesn't just copy subscription data. It turns billing events into sales, marketing, support, and revenue workflows.

The 30-second version
  • Recurly connects to HubSpot, Salesforce, and Zoho through native integrations, APIs, webhooks, automation platforms, or custom middleware — but the goal isn't to copy Recurly into the CRM, it's to give sales, marketing, and support the subscription information they need to act on.
  • Recurly owns billing and subscription truth. Your CRM owns the customer relationship. Two systems can share information without sharing ownership of it.
  • A webhook tells you something happened. The API tells you what's true now — Recurly's own documentation is explicit that a webhook payload should never be treated as authoritative on its own.
  • Recurly's official Salesforce package has real limitations worth knowing upfront — including that it doesn't support linking Recurly data to Salesforce's Contact object.
  • Not every subscription event deserves the same downstream action: a payment failure and a plan upgrade shouldn't trigger the same response, and the same signal shouldn't necessarily reach sales, finance, and customer success identically.
  • The signature framework: Event → Verify → Interpret → Update → Act → Monitor.

01 — The short answer

Can Recurly Integrate With HubSpot, Salesforce, or Zoho?

Yes. Recurly connects to CRM platforms including Salesforce, HubSpot, and Zoho using native integrations where available, APIs, webhooks, automation platforms, or custom middleware. Which approach fits depends less on which CRM you use than on which subscription events and data your teams actually need to act on. The goal isn't to copy Recurly into the CRM — it's to give sales, marketing, support, and operations the subscription information they need, when they need it.

02 — Different jobs

Recurly and Your CRM Have Different Jobs

Recurly owns billing and subscription truth. Recurly's own documentation describes the Account as the central record tying together associated subscriptions, invoices, transactions, and billing information — accounts, subscriptions, invoices, transactions, payment state, renewals, dunning, and plan changes all live there, authoritatively.

Your CRM owns the customer relationship. Contacts, companies or accounts, sales opportunities, customer lifecycle stage, marketing segments, tasks, support workflows, and relationship history live there instead.

Because those are genuinely different jobs, the CRM doesn't need every piece of Recurly data. It needs the data that changes what the business should do next — which is a smaller, more useful set than "everything Recurly knows."

03 — Events, not fields

Start With Subscription Events, Not Fields

The wrong first question is "which Recurly fields should we sync?" The right one is "what should happen when the customer does X?" Answering the second question tells you the first, not the other way around.

Recurly eventCRM question
New subscriptionIs this a new customer, a conversion, or existing-account expansion?
UpgradeShould sales or customer success be notified?
DowngradeDoes this create an account-health signal?
RenewalShould contract or customer information change?
Payment failureWho owns recovery — support, finance, or an automated workflow?
Past dueShould marketing or account workflows change?
CancellationShould retention automation start?
ReactivationWhich CRM lifecycle state should be restored?
RefundShould revenue or customer-value reporting change?

This is the difference between synchronizing data and integrating business systems. Recurly says payment failed; the CRM's job is to flag the account, notify customer success, and start a recovery workflow — not just update a field that says "payment_status: failed" for someone to notice later.

04 — Ownership before sync

Decide What System Owns Each Piece of Information

Before mapping a single field, answer: Who owns customer identity? Who owns subscription status? Who owns plan or product information? Where should MRR or customer lifetime value actually live? Does the CRM need full invoices, or just invoice status? Can CRM users initiate changes that write back into Recurly? And when the two systems disagree, which one wins?

Two systems can share information without sharing ownership of that information.

That distinction matters more than it sounds like it should. A CRM can display MRR without owning the calculation. It can show invoice status without storing every line item. Ownership determines which system is allowed to be wrong until the other one corrects it — display doesn't require ownership, but write access does.

05 — The engineering detail that matters

How Recurly Webhooks and APIs Should Work Together

This is the detail that separates a reliable integration from one that quietly drifts out of sync. Recurly's own documentation is unusually direct about it: webhooks are notifications, not commands. Use a webhook to discover that something might have changed, then confirm the actual state with the Recurly API before updating anything downstream. Recurly explicitly warns against using webhooks alone for critical functions, and for good reason — webhooks can be retried, can be delivered more than once, and can arrive out of order relative to when the underlying events actually happened.

A webhook tells you that something happened. The API tells you what is true now.
How a Webhook Becomes a CRM Action The webhook is the trigger. The API confirms the state that actually gets acted on. 01 Recurly event Something changed 02 Webhook (alert) Not a command — a trigger 03 Recurly API validation Confirm the real, current state 04 Business logic What does this mean for the CRM? 05 CRM update / action Store the relevant data, trigger a workflow Retries and out-of-order delivery are expected — your integration layer needs to tolerate both.
Figure 1 — Recurly's own recommended pattern: webhooks trigger, the API confirms, business logic interprets, and only then does the CRM change.

Build for retries and duplicates from the start, not as a bug fix later. Recurly can resend a webhook if delivery fails, which means your endpoint needs to tolerate receiving the same notification twice and needs to handle events arriving out of order — an "account reactivated" notification can, in principle, land before the "account closed" one it's actually responding to. Treat your own locally stored state as correct until a webhook prompts you to re-verify it against the API, not the other way around.

06 — The technology choice

Direct API Integration vs. Middleware

Now that the business questions are settled, the technology choice gets much easier.

Direct API Integration
  • Recurly connects primarily to one CRM
  • Requirements are well-defined and stable
  • Transformation logic is manageable
  • Few other systems need the same subscription data
Middleware
  • Recurly feeds multiple systems, not just one CRM
  • CRM + ERP + support + product + analytics all need data
  • Data requires substantial transformation
  • Multiple systems need retry/error handling and dedup
Hybrid
  • Checkout/application logic talks directly to Recurly
  • Downstream business systems receive normalized events through middleware instead
  • Common when the transactional path and the reporting/workflow path have different reliability needs

Middleware earns its cost specifically when it's handling real transformation logic, conditional routing between systems, error queues, deduplication, and conflict resolution — not by default, and not just because "custom" sounds more sophisticated than "native."

07 — Where Recurly.js fits

Where Recurly.js Actually Fits

Recurly.js and the ongoing CRM integration are two different layers, and conflating them is a common source of confusion. Recurly.js is the customer-facing payment layer — it securely captures billing information in the browser, tokenizes it, and returns a token your server passes to Recurly's API to complete the purchase or subscription. Tokens keep raw card data out of your servers entirely, reducing PCI scope, and expire 20 minutes after creation. That's the entire job Recurly.js does. It has nothing to do with how subscription events later reach your CRM.

Two Layers, Not One Checkout is Recurly.js's whole job. The CRM integration is a separate, ongoing layer underneath it. CHECKOUT (ONE-TIME, PER PURCHASE) Customer fills out billing form Recurly.js tokenizes payment info Your application sends token to Recurly Recurly purchase completed CRM INTEGRATION (ONGOING, EVERY SUBSCRIPTION EVENT) Webhooks + API event, then confirm state Middleware interprets, transforms HubSpot / Salesforce / Zoho
Figure 2 — Recurly.js and the CRM integration are two different layers solving two different problems: one runs once per purchase, the other runs continuously.

Recurly's API, webhooks, and your backend are the subscription integration layer — everything covered in the rest of this article. The CRM and any middleware are the business workflow layer on top of that. Keeping these three layers conceptually separate — checkout, subscription events, business workflow — is what keeps the integration maintainable as requirements change; collapsing them into one undifferentiated "Recurly integration" is a common source of scope creep and confused ownership later.

08 — Recurly + Salesforce

Recurly + Salesforce: Know the Package's Real Limitations First

Recurly offers an official "Recurly for Salesforce" package, which makes this pairing worth its own honest treatment rather than a generic "yes it integrates" answer. Real prerequisites and limitations worth knowing before you install it: it isn't compatible with Salesforce Professional edition, SalesforceIQ, or Developer Orgs; it doesn't support linking Recurly data with Salesforce's standard Contact object (Person Accounts are supported as an alternative); and sync runs through batch and scheduled Apex jobs subject to Salesforce's own governor limits, which can delay synchronization during high-volume periods.

That's not a reason to avoid the pairing — it's exactly the kind of detail that determines whether the standard package is enough or whether custom middleware earns its cost. Questions worth resolving specifically for a Salesforce integration: how do Recurly Accounts map to Salesforce Accounts (or Person Accounts)? Which subscription events should create or update an Opportunity, versus just updating a field? Does commerce and billing data need to reach revenue operations reporting, or other Salesforce-connected systems? And when does the standard package's Apex-job sync cadence stop being fast enough for what the business needs?

09 — Recurly + HubSpot

Recurly + HubSpot: Complement Billing, Don't Recreate It

HubSpot isn't the place to rebuild Recurly's billing logic — it's the place to act on what billing tells you. The useful questions here are about marketing and lifecycle, not ledger accuracy: lifecycle-stage segmentation based on subscription status, renewal communication timed to actual renewal dates, failed-payment recovery workflows, cancellation and win-back campaigns, and sales or customer-success alerts triggered by the events that actually warrant a human looking at the account.

Recurly's own Zapier documentation uses HubSpot as a worked example specifically for enriching billing data with customer-acquisition information — reinforcing that the two systems work best complementing each other, HubSpot supplying acquisition and engagement context Recurly doesn't have, Recurly supplying billing truth HubSpot shouldn't try to recreate, rather than either one trying to duplicate what the other already does well.

10 — Recurly + Zoho CRM

Recurly + Zoho CRM: Built for Custom Workflow Flexibility

Zoho's strength in this pairing is workflow flexibility more than a deep pre-built object model. The relevant pieces: contacts and accounts, subscription state, customer segmentation, workflow triggers tied to subscription events, renewal and customer-success processes, and API-based synchronization for anything the standard connection doesn't cover. For businesses whose stack goes beyond Recurly and Zoho alone — an ERP, a support desk, analytics — middleware becomes the more natural layer to add, for the same reasons it does with Shopify or any other source system: transformation, routing, and monitoring across more than two endpoints.

11 — What goes wrong

Common Recurly-to-CRM Integration Mistakes

  1. Treating the CRM as another copy of Recurly. If the CRM just mirrors Recurly's database, you've built a second system to keep in sync for no operational benefit.
  2. Synchronizing every available field. More fields mean more maintenance and more ways for the two systems to quietly disagree, without a matching increase in what anyone can actually do with the data.
  3. Treating webhook payloads as authoritative state. Exactly the mistake Recurly's own documentation warns against — a webhook is a trigger to check, not a fact to act on directly.
  4. Ignoring duplicate or out-of-order events. Recurly's retry behavior guarantees you'll eventually receive both; an integration that assumes clean, sequential delivery will eventually process a stale event as current.
  5. Mapping billing events directly to CRM lifecycle stages without business rules. "Subscription created" doesn't always mean "became a customer" — trials, free tiers, and internal test accounts all complicate the direct mapping.
  6. Forgetting refunds, pauses, retries, and reactivations. Integrations built and tested against the happy path (signup → renewal → renewal) break first on the events that aren't the happy path.
  7. Allowing both systems to edit the same critical field. Without a documented ownership rule, whichever system wrote most recently quietly wins — whether or not it should have.
  8. Having no error queue or monitoring. A silent sync failure is worse than an outage — the business keeps making decisions on subscription data that quietly stopped updating.
  9. Building for today's CRM without considering tomorrow's systems. An integration wired directly and exclusively to one CRM's API is the first thing that has to be rebuilt when an ERP, a second sales tool, or a data warehouse joins the stack.

12 — The framework

The Recurly-to-CRM Revenue Workflow

Six steps, applied to every subscription event that matters to the business:

The Recurly-to-CRM Revenue Workflow Six steps, applied consistently to every subscription event worth acting on 01 Event Recurly reports something changed 02 Verify Retrieve authoritative state from Recurly 03 Interpret Apply the business rules that matter here 04 Update Send only what's relevant to the CRM 05 Act Trigger the right workflow 06 Monitor Confirm success, surface failures The same six steps apply whether the event is a renewal, a failed payment, or a cancellation.
Figure 3 — The Recurly-to-CRM Revenue Workflow. Every reliable subscription-event integration runs some version of these six steps.

Event: Recurly reports something changed. Verify: retrieve authoritative state from Recurly's API rather than trusting the payload. Interpret: apply the business rules that turn a raw event into a meaningful one — a $20 renewal and a $10,000 enterprise renewal don't warrant the same response. Update: send only the information the CRM actually needs, not a mirror of the Recurly record. Act: trigger the workflow the event actually warrants — an alert, a task, a campaign, a status change. Monitor: confirm the update succeeded, and make failures visible instead of silent.

13 — Common questions

Quick Answers

How do you integrate Recurly with a CRM?

Start with the business outcome — what should happen when a subscription event occurs — not the connector. From there, decide which system owns each piece of data, build (or configure) an integration layer that treats Recurly webhooks as triggers rather than facts, confirms state via the API, and updates only the CRM data and workflows that outcome actually requires.

Does Recurly integrate with Salesforce?

Yes, through Recurly's official "Recurly for Salesforce" package, with real limitations worth knowing first: it's incompatible with Salesforce Professional edition, SalesforceIQ, and Developer Orgs, and it doesn't support linking Recurly data to the standard Contact object (Person Accounts are supported instead). Sync runs through Salesforce's own Apex job limits, which can introduce delays at high volume.

Can Recurly connect to HubSpot?

Yes, through APIs, webhooks, automation platforms, or middleware. The useful integration isn't recreating billing inside HubSpot — it's using subscription events to drive lifecycle segmentation, renewal communication, failed-payment recovery, cancellation/win-back campaigns, and sales or customer-success alerts.

Can Recurly connect to Zoho CRM?

Yes, via API-based synchronization, with strong support for custom workflow triggers tied to subscription events — Zoho's strength in this pairing is workflow flexibility more than a deep pre-built billing object model.

Should Recurly or the CRM be the source of truth?

Neither, for everything — ownership should be decided field by field. Recurly is authoritative for billing and subscription state; the CRM is authoritative for the customer relationship. A field can be displayed in a system that doesn't own it, but write access should follow ownership, not convenience.

How do Recurly webhooks work?

Recurly sends an HTTP POST notification to your configured endpoint whenever a qualifying event occurs. Webhooks can be retried and delivered more than once, and may arrive out of order. Recurly's own documentation describes them as alerts — a trigger to confirm state via the API, not an authoritative payload to act on directly.

Should I use Recurly webhooks or the API?

Both, together, not one instead of the other. Use webhooks to know when to check; use the API to confirm what's actually true before updating the CRM. Treating either one alone as sufficient — webhooks without verification, or polling the API without event triggers — creates either stale data or unnecessary load.

When do I need custom middleware for Recurly?

When Recurly needs to feed more than one downstream system (CRM plus ERP, support, product, or analytics), when transformation logic is substantial, or when multiple systems need shared retry, deduplication, and error-handling logic. A single, well-defined Recurly-to-one-CRM integration usually doesn't need it.

How do I trigger CRM workflows from Recurly events?

Follow the Event → Verify → Interpret → Update → Act → Monitor sequence: catch the webhook, confirm the state via Recurly's API, apply the business rule that determines whether this event matters and to whom, update only the relevant CRM data, trigger the specific workflow that event warrants, and monitor for failures rather than assuming success.

Recurly should tell your business what happened to the subscription. Your integration should determine what happens next. That's the whole difference between an integration that quietly syncs fields and one that actually runs the business — a payment failure that reaches the right person instead of a database, an upgrade that updates customer value instead of just a status flag, a cancellation that starts a retention workflow instead of silently closing a record. None of that requires copying more data into the CRM. It requires deciding, deliberately, what each event means and who needs to know.

As a Recurly Premier Integration Partner, this is work we do first-hand, not from a generic integrations playbook — for a real example, Izzy's account of connecting Recurly, TripleSeat, and Calendly around Zoho CRM is the same ownership-and-events thinking applied to an actual project, not a hypothetical. See also how it applies to connecting Shopify to your CRM when subscription billing is one part of a broader eCommerce stack, or how CRM integrations actually work for the underlying technical mechanics one level deeper than this article goes. If you're still deciding whether the right first step is a native connector, middleware, or something custom, the same buy/integrate/build framework applies here too.

Ready to figure out which of your subscription events actually need a workflow, and which are just noise? Book a Discovery Call with me and the team.

JL

Jamie Lords ↗ LinkedIn is CEO of Virgo Development, a Premier Recurly Integration Partner, and teaches Business and Marketing at Southern New Hampshire University. Webhook and API behavior, Recurly.js tokenization, and Salesforce package prerequisites/limitations are drawn from Recurly's own product documentation, current as of September 2026. Platform integrations change over time; verify current behavior directly with Recurly before finalizing a data-ownership plan.

Share this article Share on LinkedIn