Webhooks for paid quotes to activate plans on our backend

Occasional Contributor

TL;DR: We want to use Hubspot Quotes to sell subscription based product. We connected stripe and I was able to create a test product and bill myself for $0,01 :slight_smile: Now we need to receive a webhook from hubspot to enable the product on our backend. We were not able to find any instruction for that. How can we do that?

Long story
We received stripe webhook, but it doesn't contain any user identity, so we won't know who paid. We would love to receive a webhook from hubspot (btw we already use hubspot webhooks and it's great) that a certain user subscribed to a certain product. How can we solve that?

A little more detailed workflow:

  1. Sales person sends a quote through hubspot
  2. User pays on the quote page through stripe (we have a connected stripe acct, I made a test payment and it worked)
  3. Our server gets this information somehow (from hubspot or stripe) and enables the access automatically on backend

I. What we have tried with Stripe:

  1. We tried to use stripe's webhook (initiated by hubspot) that we receive with the subscription. It lacks hubspot contact identity (contact id or smth), so we don't know who paid for that quote and thus don't know whom to grant access.
  2. We receive hubspot contact link through that webhook in the "description" field if in the stripe form the user specified the same email they use in our system — and that's unlikely. You know, people don't care about consistency :slight_smile:
  3. Parsing user vid from the link that is in "description" field doesn't look like a great idea, we would love to receive user identity in a less fragile form. A field with vid would work for us.

II. What we have tried with Hubspot:

  1. I've built a simple workflow
    https://scrembr.com/d1cf3e83474a4cd39abf0c8adea9aec5.png It assumes that when the client pays for the quote, that quote receives "Payment date" property (am I correct?) and sends a webhook
  2. The webhook sent by the workflow doesn't contain contact or company info as a field. The closest we got was "sourceId":"deal sync triggered by vid=2342905". We don't think that parsing vid from a string like this is a safe solution. We'd rather have a dedicated vid field.

III. We were advised to Create another deal-based workflow to copy the "Payment date" property over to the associated contact's property (and create a custom property) + Create a contacts-based workflow using the custom contact property as the enrollment criteria + set up a contact-based webhook that will send you the contact information as well.:

  1. Why do we need a separate workflow to copy property? Why can't we append it to the existing deal-based workflow?
  2. Why are quote properties locked in "Copy property" step of the existing deal-based workflow? We already have quotes access, we created test quotes and paid them, so that looks odd
  3. How do we identify the product that a customer subscribed to? What webhook (contact or deal? deal-based doesn't contain that, as we already know) and what field do we need to look for?
  4. How will we now that customer was billed in a month from the day of subscription start and didn't cancel subscription / failed to be billed?

We are ready to do development, and we need to make sure that the whole thing will work smoothly: we will be sure whom to grant access to, we will know the price paid, we will know the product, we will get monthly rebills as webhooks, etc.

Any suggestions how can we do that? Thank you!

3 Replies 3
HubSpot Moderator

Welcome, @yaro-hypeauditor.

Apologies for the delayed response.

I see that you've been working with my Singaporean colleague Jennifer. I've advised on a few of her questions throughout the process, but I think we can both agree she's done a wonderful job thus far!

Since you and she have covered more ground in support ticket #2221946 and you've already landed on a working solution with the CRM Associations API, I've asked Jennifer to remain your main point-of-contact. I'll be advising when needed on our end.

Thanks for your patience and understanding!

Isaac Takushi

HubSpot Developer Support
Occasional Contributor

Thank you @Isaac_Takushi! All correct, we were able to use CRA Associations for selling non-recurring products. Our main questions now are related to subscriptions through quotes.

Can we match a quote to a deal using CRM Associations API? Or by any other means?

What we need to do now is to know that recurring payment still works after a month or two.

  1. Can you please point us to any docs re: handling recurring payments through APIs?
  2. We see the quote link in stripe payments metadata for non-recurring products — will we receive it with the first recurring payment? With every recurring payment?
  3. Is there an option to add anything, say, contact id, to stripe's metadata field alongside with the quote link? It would be really cool to receive a link to contact or contact_id next to quote link in stripe's metadata with every recurring payment.
Occasional Contributor

We are looking at using https://paycove.io/ for this. Paycove integrates with Stripe and Hubspot. From the view test I've created it seems to be the best solution.