Webhooks for paid quotes to activate plans on our backend
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 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?
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:
- Sales person sends a quote through hubspot
- User pays on the quote page through stripe (we have a connected stripe acct, I made a test payment and it worked)
- Our server gets this information somehow (from hubspot or stripe) and enables the access automatically on backend
I. What we have tried with Stripe:
- 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.
- 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
- 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:
- 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
- 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.:
- Why do we need a separate workflow to copy property? Why can't we append it to the existing deal-based workflow?
- 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
- 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?
- 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!