HubSpot
Keep a HubSpot contact for each partner and a deal for each referred customer, using your own HubSpot private app.
Connect HubSpot with your own private-app token and Referalli keeps your CRM current:
A contact per partner, matched by email and updated as they earn. It carries their name plus these properties:
Property
Value
referally_partner_idThe partner's Referalli id
referally_partner_statusactive,suspended, …referally_lifetime_commissionPending + approved + paid, in their main currency, e.g.
120.00referally_commission_currencye.g.
USDreferally_referralsReferrals not voided
A deal per referred customer, named
Referral: <customer id>, created in your pipeline and new-referral stage, and associated with the partner's contact. When the customer's first payment earns a commission, the deal moves to your paid stage. It only moves once.
Connect
In HubSpot, create a private app (Settings → Integrations → Private apps) with these scopes:
crm.objects.contacts.read,crm.objects.contacts.write,crm.objects.deals.read,crm.objects.deals.writeandcrm.schemas.contacts.write. Copy its access token.In Referalli, open Settings → Integrations → HubSpot, paste the token, and optionally set the pipeline and the two stages (internal ids; defaults
default,appointmentscheduled,closedwon).Click Test connection. It checks the token and creates the
referally_*contact properties if they don't exist yet.
The token is stored encrypted and never shown again; leave the field empty when you edit other settings to keep it.
API
Call | Body | Notes |
|---|---|---|
|
|
|
|
|
|
| none | Disconnects; queued updates are dropped. |
| none | Both connections, without credentials, with |
| none | Recent updates and their status. |
Delivery
Updates follow the events referral.created, commission.earned, commission.reversed and partner.applied/enrolled/approved. They're queued and sent in order:
What happens | Effect |
|---|---|
A send fails | Retried with exponential backoff for 3 days. |
HubSpot rate-limits ( | The connection waits exactly as long as |
The token is rejected ( | The connection is marked |